github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library@v0.2.0/JSON_Deserializer/JSON_Deserializer.go (about)

     1  // Package JSON_Deserializer
     2  // Dafny module JSON_Deserializer compiled into Go
     3  
     4  package JSON_Deserializer
     5  
     6  import (
     7  	os "os"
     8  
     9  	m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions"
    10  	m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64"
    11  	m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas"
    12  	m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts"
    13  	m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals"
    14  	m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear"
    15  	m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod"
    16  	m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO"
    17  	m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare"
    18  	m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions"
    19  	m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals"
    20  	m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt"
    21  	m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings"
    22  	m_JSON_Deserializer_ByteStrConversion "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Deserializer_ByteStrConversion"
    23  	m_JSON_Deserializer_Uint16StrConversion "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Deserializer_Uint16StrConversion"
    24  	m_JSON_Errors "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Errors"
    25  	m_JSON_Grammar "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Grammar"
    26  	m_JSON_Serializer "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Serializer"
    27  	m_JSON_Serializer_ByteStrConversion "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Serializer_ByteStrConversion"
    28  	m_JSON_Spec "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Spec"
    29  	m_JSON_Utils_Cursors "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Cursors"
    30  	m_JSON_Utils_Lexers_Core "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Lexers_Core"
    31  	m_JSON_Utils_Lexers_Strings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Lexers_Strings"
    32  	m_JSON_Utils_Parsers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Parsers"
    33  	m_JSON_Utils_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Seq"
    34  	m_JSON_Utils_Str "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Str"
    35  	m_JSON_Utils_Str_CharStrConversion "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Str_CharStrConversion"
    36  	m_JSON_Utils_Str_CharStrEscaping "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Str_CharStrEscaping"
    37  	m_JSON_Utils_Vectors "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Vectors"
    38  	m_JSON_Utils_Views_Core "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Views_Core"
    39  	m_JSON_Utils_Views_Writers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Utils_Views_Writers"
    40  	m_JSON_Values "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/JSON_Values"
    41  	m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm"
    42  	m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_"
    43  	m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals"
    44  	m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear"
    45  	m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul"
    46  	m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals"
    47  	m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear"
    48  	m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power"
    49  	m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations"
    50  	m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq"
    51  	m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort"
    52  	m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting"
    53  	m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary"
    54  	m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop"
    55  	m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence"
    56  	m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String"
    57  	m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt"
    58  	m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams"
    59  	m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings"
    60  	m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_"
    61  	m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm"
    62  	m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm"
    63  	m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers"
    64  	m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_"
    65  	_dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny"
    66  )
    67  
    68  var _ = os.Args
    69  var _ _dafny.Dummy__
    70  var _ m__System.Dummy__
    71  var _ m_Wrappers.Dummy__
    72  var _ m_Relations.Dummy__
    73  var _ m_Seq_MergeSort.Dummy__
    74  var _ m__Math.Dummy__
    75  var _ m_Seq.Dummy__
    76  var _ m_BoundedInts.Dummy__
    77  var _ m__Unicode.Dummy__
    78  var _ m_Functions.Dummy__
    79  var _ m_Utf8EncodingForm.Dummy__
    80  var _ m_Utf16EncodingForm.Dummy__
    81  var _ m_UnicodeStrings.Dummy__
    82  var _ m_FileIO.Dummy__
    83  var _ m_GeneralInternals.Dummy__
    84  var _ m_MulInternalsNonlinear.Dummy__
    85  var _ m_MulInternals.Dummy__
    86  var _ m_Mul.Dummy__
    87  var _ m_ModInternalsNonlinear.Dummy__
    88  var _ m_DivInternalsNonlinear.Dummy__
    89  var _ m_ModInternals.Dummy__
    90  var _ m_DivInternals.Dummy__
    91  var _ m_DivMod.Dummy__
    92  var _ m_Power.Dummy__
    93  var _ m_Logarithm.Dummy__
    94  var _ m_StandardLibraryInterop.Dummy__
    95  var _ m_StandardLibrary_UInt.Dummy__
    96  var _ m_StandardLibrary_Sequence.Dummy__
    97  var _ m_StandardLibrary_String.Dummy__
    98  var _ m_StandardLibrary.Dummy__
    99  var _ m_Streams.Dummy__
   100  var _ m_Sorting.Dummy__
   101  var _ m_HexStrings.Dummy__
   102  var _ m_GetOpt.Dummy__
   103  var _ m_FloatCompare.Dummy__
   104  var _ m_Base64.Dummy__
   105  var _ m_Base64Lemmas.Dummy__
   106  var _ m_Actions.Dummy__
   107  var _ m_JSON_Utils_Views_Core.Dummy__
   108  var _ m_JSON_Utils_Views_Writers.Dummy__
   109  var _ m_JSON_Utils_Lexers_Core.Dummy__
   110  var _ m_JSON_Utils_Lexers_Strings.Dummy__
   111  var _ m_JSON_Utils_Cursors.Dummy__
   112  var _ m_JSON_Utils_Parsers.Dummy__
   113  var _ m_JSON_Utils_Str_CharStrConversion.Dummy__
   114  var _ m_JSON_Utils_Str_CharStrEscaping.Dummy__
   115  var _ m_JSON_Utils_Str.Dummy__
   116  var _ m_JSON_Utils_Seq.Dummy__
   117  var _ m_JSON_Utils_Vectors.Dummy__
   118  var _ m_JSON_Errors.Dummy__
   119  var _ m_JSON_Values.Dummy__
   120  var _ m_JSON_Spec.Dummy__
   121  var _ m_JSON_Grammar.Dummy__
   122  var _ m_JSON_Serializer_ByteStrConversion.Dummy__
   123  var _ m_JSON_Serializer.Dummy__
   124  var _ m_JSON_Deserializer_Uint16StrConversion.Dummy__
   125  var _ m_JSON_Deserializer_ByteStrConversion.Dummy__
   126  
   127  type Dummy__ struct{}
   128  
   129  // Definition of class Default__
   130  type Default__ struct {
   131  	dummy byte
   132  }
   133  
   134  func New_Default___() *Default__ {
   135  	_this := Default__{}
   136  
   137  	return &_this
   138  }
   139  
   140  type CompanionStruct_Default___ struct {
   141  }
   142  
   143  var Companion_Default___ = CompanionStruct_Default___{}
   144  
   145  func (_this *Default__) Equals(other *Default__) bool {
   146  	return _this == other
   147  }
   148  
   149  func (_this *Default__) EqualsGeneric(x interface{}) bool {
   150  	other, ok := x.(*Default__)
   151  	return ok && _this.Equals(other)
   152  }
   153  
   154  func (*Default__) String() string {
   155  	return "JSON_Deserializer.Default__"
   156  }
   157  func (_this *Default__) ParentTraits_() []*_dafny.TraitID {
   158  	return [](*_dafny.TraitID){}
   159  }
   160  
   161  var _ _dafny.TraitOffspring = &Default__{}
   162  
   163  func (_static *CompanionStruct_Default___) Bool(js m_JSON_Utils_Views_Core.View__) bool {
   164  	return ((js).At(uint32(0))) == (uint8(_dafny.Char('t')))
   165  }
   166  func (_static *CompanionStruct_Default___) UnsupportedEscape16(code _dafny.Sequence) m_JSON_Errors.DeserializationError {
   167  	return m_JSON_Errors.Companion_DeserializationError_.Create_UnsupportedEscape_((m_UnicodeStrings.Companion_Default___.FromUTF16Checked(code)).UnwrapOr(_dafny.SeqOfString("Couldn't decode UTF-16")).(_dafny.Sequence))
   168  }
   169  func (_static *CompanionStruct_Default___) ToNat16(str _dafny.Sequence) uint16 {
   170  	var _0_hd _dafny.Int = m_JSON_Deserializer_Uint16StrConversion.Companion_Default___.ToNat__any(str, _dafny.IntOfInt64(16), Companion_Default___.HEX__TABLE__16())
   171  	_ = _0_hd
   172  	return (_0_hd).Uint16()
   173  }
   174  func (_static *CompanionStruct_Default___) Unescape(str _dafny.Sequence, start _dafny.Int, prefix _dafny.Sequence) m_Wrappers.Result {
   175  	goto TAIL_CALL_START
   176  TAIL_CALL_START:
   177  	if (start).Cmp(_dafny.IntOfUint32((str).Cardinality())) >= 0 {
   178  		return m_Wrappers.Companion_Result_.Create_Success_(prefix)
   179  	} else if ((str).Select((start).Uint32()).(uint16)) == (uint16(_dafny.Char('\\'))) {
   180  		if (_dafny.IntOfUint32((str).Cardinality())).Cmp((start).Plus(_dafny.One)) == 0 {
   181  			return m_Wrappers.Companion_Result_.Create_Failure_(m_JSON_Errors.Companion_DeserializationError_.Create_EscapeAtEOS_())
   182  		} else {
   183  			var _0_c uint16 = (str).Select(((start).Plus(_dafny.One)).Uint32()).(uint16)
   184  			_ = _0_c
   185  			if (_0_c) == (uint16(_dafny.Char('u'))) {
   186  				if (_dafny.IntOfUint32((str).Cardinality())).Cmp((start).Plus(_dafny.IntOfInt64(6))) <= 0 {
   187  					return m_Wrappers.Companion_Result_.Create_Failure_(m_JSON_Errors.Companion_DeserializationError_.Create_EscapeAtEOS_())
   188  				} else {
   189  					var _1_code _dafny.Sequence = (str).Subsequence(((start).Plus(_dafny.IntOfInt64(2))).Uint32(), ((start).Plus(_dafny.IntOfInt64(6))).Uint32())
   190  					_ = _1_code
   191  					if _dafny.Quantifier((_1_code).UniqueElements(), false, func(_exists_var_0 uint16) bool {
   192  						var _2_c uint16
   193  						_2_c = interface{}(_exists_var_0).(uint16)
   194  						if true {
   195  							return (_dafny.Companion_Sequence_.Contains(_1_code, _2_c)) && (!(Companion_Default___.HEX__TABLE__16()).Contains(_2_c))
   196  						} else {
   197  							return false
   198  						}
   199  					}) {
   200  						return m_Wrappers.Companion_Result_.Create_Failure_(Companion_Default___.UnsupportedEscape16(_1_code))
   201  					} else {
   202  						var _3_hd uint16 = Companion_Default___.ToNat16(_1_code)
   203  						_ = _3_hd
   204  						var _in0 _dafny.Sequence = str
   205  						_ = _in0
   206  						var _in1 _dafny.Int = (start).Plus(_dafny.IntOfInt64(6))
   207  						_ = _in1
   208  						var _in2 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(prefix, _dafny.SeqOf(_3_hd))
   209  						_ = _in2
   210  						str = _in0
   211  						start = _in1
   212  						prefix = _in2
   213  						goto TAIL_CALL_START
   214  					}
   215  				}
   216  			} else {
   217  				var _4_unescaped uint16 = func() uint16 {
   218  					var _source0 uint16 = _0_c
   219  					_ = _source0
   220  					{
   221  						if (_source0) == (uint16(34)) {
   222  							return uint16(34)
   223  						}
   224  					}
   225  					{
   226  						if (_source0) == (uint16(92)) {
   227  							return uint16(92)
   228  						}
   229  					}
   230  					{
   231  						if (_source0) == (uint16(98)) {
   232  							return uint16(8)
   233  						}
   234  					}
   235  					{
   236  						if (_source0) == (uint16(102)) {
   237  							return uint16(12)
   238  						}
   239  					}
   240  					{
   241  						if (_source0) == (uint16(110)) {
   242  							return uint16(10)
   243  						}
   244  					}
   245  					{
   246  						if (_source0) == (uint16(114)) {
   247  							return uint16(13)
   248  						}
   249  					}
   250  					{
   251  						if (_source0) == (uint16(116)) {
   252  							return uint16(9)
   253  						}
   254  					}
   255  					{
   256  						return uint16(0)
   257  					}
   258  				}()
   259  				_ = _4_unescaped
   260  				if (_dafny.IntOfUint16(_4_unescaped)).Sign() == 0 {
   261  					return m_Wrappers.Companion_Result_.Create_Failure_(Companion_Default___.UnsupportedEscape16((str).Subsequence((start).Uint32(), ((start).Plus(_dafny.IntOfInt64(2))).Uint32())))
   262  				} else {
   263  					var _in3 _dafny.Sequence = str
   264  					_ = _in3
   265  					var _in4 _dafny.Int = (start).Plus(_dafny.IntOfInt64(2))
   266  					_ = _in4
   267  					var _in5 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(prefix, _dafny.SeqOf(_4_unescaped))
   268  					_ = _in5
   269  					str = _in3
   270  					start = _in4
   271  					prefix = _in5
   272  					goto TAIL_CALL_START
   273  				}
   274  			}
   275  		}
   276  	} else {
   277  		var _in6 _dafny.Sequence = str
   278  		_ = _in6
   279  		var _in7 _dafny.Int = (start).Plus(_dafny.One)
   280  		_ = _in7
   281  		var _in8 _dafny.Sequence = _dafny.Companion_Sequence_.Concatenate(prefix, _dafny.SeqOf((str).Select((start).Uint32()).(uint16)))
   282  		_ = _in8
   283  		str = _in6
   284  		start = _in7
   285  		prefix = _in8
   286  		goto TAIL_CALL_START
   287  	}
   288  }
   289  func (_static *CompanionStruct_Default___) String(js m_JSON_Grammar.Jstring) m_Wrappers.Result {
   290  	var _0_valueOrError0 m_Wrappers.Result = (m_UnicodeStrings.Companion_Default___.FromUTF8Checked(((js).Dtor_contents()).Bytes())).ToResult_k(m_JSON_Errors.Companion_DeserializationError_.Create_InvalidUnicode_())
   291  	_ = _0_valueOrError0
   292  	if (_0_valueOrError0).IsFailure() {
   293  		return (_0_valueOrError0).PropagateFailure()
   294  	} else {
   295  		var _1_asUtf32 _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence)
   296  		_ = _1_asUtf32
   297  		var _2_valueOrError1 m_Wrappers.Result = (m_UnicodeStrings.Companion_Default___.ToUTF16Checked(_1_asUtf32)).ToResult_k(m_JSON_Errors.Companion_DeserializationError_.Create_InvalidUnicode_())
   298  		_ = _2_valueOrError1
   299  		if (_2_valueOrError1).IsFailure() {
   300  			return (_2_valueOrError1).PropagateFailure()
   301  		} else {
   302  			var _3_asUint16 _dafny.Sequence = (_2_valueOrError1).Extract().(_dafny.Sequence)
   303  			_ = _3_asUint16
   304  			var _4_valueOrError2 m_Wrappers.Result = Companion_Default___.Unescape(_3_asUint16, _dafny.Zero, _dafny.SeqOf())
   305  			_ = _4_valueOrError2
   306  			if (_4_valueOrError2).IsFailure() {
   307  				return (_4_valueOrError2).PropagateFailure()
   308  			} else {
   309  				var _5_unescaped _dafny.Sequence = (_4_valueOrError2).Extract().(_dafny.Sequence)
   310  				_ = _5_unescaped
   311  				return (m_UnicodeStrings.Companion_Default___.FromUTF16Checked(_5_unescaped)).ToResult_k(m_JSON_Errors.Companion_DeserializationError_.Create_InvalidUnicode_())
   312  			}
   313  		}
   314  	}
   315  }
   316  func (_static *CompanionStruct_Default___) ToInt(sign m_JSON_Utils_Views_Core.View__, n m_JSON_Utils_Views_Core.View__) m_Wrappers.Result {
   317  	var _0_n _dafny.Int = m_JSON_Deserializer_ByteStrConversion.Companion_Default___.ToNat__any((n).Bytes(), _dafny.IntOfInt64(10), Companion_Default___.DIGITS())
   318  	_ = _0_n
   319  	return m_Wrappers.Companion_Result_.Create_Success_((func() _dafny.Int {
   320  		if (sign).Char_q(_dafny.Char('-')) {
   321  			return (_dafny.Zero).Minus(_0_n)
   322  		}
   323  		return _0_n
   324  	})())
   325  }
   326  func (_static *CompanionStruct_Default___) Number(js m_JSON_Grammar.Jnumber) m_Wrappers.Result {
   327  	var _let_tmp_rhs0 m_JSON_Grammar.Jnumber = js
   328  	_ = _let_tmp_rhs0
   329  	var _0_minus m_JSON_Utils_Views_Core.View__ = _let_tmp_rhs0.Get_().(m_JSON_Grammar.Jnumber_JNumber).Minus
   330  	_ = _0_minus
   331  	var _1_num m_JSON_Utils_Views_Core.View__ = _let_tmp_rhs0.Get_().(m_JSON_Grammar.Jnumber_JNumber).Num
   332  	_ = _1_num
   333  	var _2_frac m_JSON_Grammar.Maybe = _let_tmp_rhs0.Get_().(m_JSON_Grammar.Jnumber_JNumber).Frac
   334  	_ = _2_frac
   335  	var _3_exp m_JSON_Grammar.Maybe = _let_tmp_rhs0.Get_().(m_JSON_Grammar.Jnumber_JNumber).Exp
   336  	_ = _3_exp
   337  	var _4_valueOrError0 m_Wrappers.Result = Companion_Default___.ToInt(_0_minus, _1_num)
   338  	_ = _4_valueOrError0
   339  	if (_4_valueOrError0).IsFailure() {
   340  		return (_4_valueOrError0).PropagateFailure()
   341  	} else {
   342  		var _5_n _dafny.Int = (_4_valueOrError0).Extract().(_dafny.Int)
   343  		_ = _5_n
   344  		var _6_valueOrError1 m_Wrappers.Result = func() m_Wrappers.Result {
   345  			var _source0 m_JSON_Grammar.Maybe = _3_exp
   346  			_ = _source0
   347  			{
   348  				if _source0.Is_Empty() {
   349  					return m_Wrappers.Companion_Result_.Create_Success_(_dafny.Zero)
   350  				}
   351  			}
   352  			{
   353  				var t0 m_JSON_Grammar.Jexp = _source0.Get_().(m_JSON_Grammar.Maybe_NonEmpty).T.(m_JSON_Grammar.Jexp)
   354  				_ = t0
   355  				var _7_sign m_JSON_Utils_Views_Core.View__ = t0.Get_().(m_JSON_Grammar.Jexp_JExp).Sign
   356  				_ = _7_sign
   357  				var _8_num m_JSON_Utils_Views_Core.View__ = t0.Get_().(m_JSON_Grammar.Jexp_JExp).Num
   358  				_ = _8_num
   359  				return Companion_Default___.ToInt(_7_sign, _8_num)
   360  			}
   361  		}()
   362  		_ = _6_valueOrError1
   363  		if (_6_valueOrError1).IsFailure() {
   364  			return (_6_valueOrError1).PropagateFailure()
   365  		} else {
   366  			var _9_e10 _dafny.Int = (_6_valueOrError1).Extract().(_dafny.Int)
   367  			_ = _9_e10
   368  			var _source1 m_JSON_Grammar.Maybe = _2_frac
   369  			_ = _source1
   370  			{
   371  				if _source1.Is_Empty() {
   372  					return m_Wrappers.Companion_Result_.Create_Success_(m_JSON_Values.Companion_Decimal_.Create_Decimal_(_5_n, _9_e10))
   373  				}
   374  			}
   375  			{
   376  				var t1 m_JSON_Grammar.Jfrac = _source1.Get_().(m_JSON_Grammar.Maybe_NonEmpty).T.(m_JSON_Grammar.Jfrac)
   377  				_ = t1
   378  				var _10_num m_JSON_Utils_Views_Core.View__ = t1.Get_().(m_JSON_Grammar.Jfrac_JFrac).Num
   379  				_ = _10_num
   380  				var _11_pow10 _dafny.Int = _dafny.IntOfUint32((_10_num).Length())
   381  				_ = _11_pow10
   382  				var _12_valueOrError2 m_Wrappers.Result = Companion_Default___.ToInt(_0_minus, _10_num)
   383  				_ = _12_valueOrError2
   384  				if (_12_valueOrError2).IsFailure() {
   385  					return (_12_valueOrError2).PropagateFailure()
   386  				} else {
   387  					var _13_frac _dafny.Int = (_12_valueOrError2).Extract().(_dafny.Int)
   388  					_ = _13_frac
   389  					return m_Wrappers.Companion_Result_.Create_Success_(m_JSON_Values.Companion_Decimal_.Create_Decimal_(((_5_n).Times(m_Power.Companion_Default___.Pow(_dafny.IntOfInt64(10), _11_pow10))).Plus(_13_frac), (_9_e10).Minus(_11_pow10)))
   390  				}
   391  			}
   392  		}
   393  	}
   394  }
   395  func (_static *CompanionStruct_Default___) KeyValue(js m_JSON_Grammar.JKeyValue) m_Wrappers.Result {
   396  	var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.String((js).Dtor_k())
   397  	_ = _0_valueOrError0
   398  	if (_0_valueOrError0).IsFailure() {
   399  		return (_0_valueOrError0).PropagateFailure()
   400  	} else {
   401  		var _1_k _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence)
   402  		_ = _1_k
   403  		var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.Value((js).Dtor_v())
   404  		_ = _2_valueOrError1
   405  		if (_2_valueOrError1).IsFailure() {
   406  			return (_2_valueOrError1).PropagateFailure()
   407  		} else {
   408  			var _3_v m_JSON_Values.JSON = (_2_valueOrError1).Extract().(m_JSON_Values.JSON)
   409  			_ = _3_v
   410  			return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf(_1_k, _3_v))
   411  		}
   412  	}
   413  }
   414  func (_static *CompanionStruct_Default___) Object(js m_JSON_Grammar.Bracketed) m_Wrappers.Result {
   415  	return m_Seq.Companion_Default___.MapWithResult(func(coer41 func(m_JSON_Grammar.Suffixed) m_Wrappers.Result) func(interface{}) m_Wrappers.Result {
   416  		return func(arg45 interface{}) m_Wrappers.Result {
   417  			return coer41(arg45.(m_JSON_Grammar.Suffixed))
   418  		}
   419  	}((func(_0_js m_JSON_Grammar.Bracketed) func(m_JSON_Grammar.Suffixed) m_Wrappers.Result {
   420  		return func(_1_d m_JSON_Grammar.Suffixed) m_Wrappers.Result {
   421  			return Companion_Default___.KeyValue((_1_d).Dtor_t().(m_JSON_Grammar.JKeyValue))
   422  		}
   423  	})(js)), (js).Dtor_data())
   424  }
   425  func (_static *CompanionStruct_Default___) Array(js m_JSON_Grammar.Bracketed) m_Wrappers.Result {
   426  	return m_Seq.Companion_Default___.MapWithResult(func(coer42 func(m_JSON_Grammar.Suffixed) m_Wrappers.Result) func(interface{}) m_Wrappers.Result {
   427  		return func(arg46 interface{}) m_Wrappers.Result {
   428  			return coer42(arg46.(m_JSON_Grammar.Suffixed))
   429  		}
   430  	}((func(_0_js m_JSON_Grammar.Bracketed) func(m_JSON_Grammar.Suffixed) m_Wrappers.Result {
   431  		return func(_1_d m_JSON_Grammar.Suffixed) m_Wrappers.Result {
   432  			return Companion_Default___.Value((_1_d).Dtor_t().(m_JSON_Grammar.Value))
   433  		}
   434  	})(js)), (js).Dtor_data())
   435  }
   436  func (_static *CompanionStruct_Default___) Value(js m_JSON_Grammar.Value) m_Wrappers.Result {
   437  	var _source0 m_JSON_Grammar.Value = js
   438  	_ = _source0
   439  	{
   440  		if _source0.Is_Null() {
   441  			return m_Wrappers.Companion_Result_.Create_Success_(m_JSON_Values.Companion_JSON_.Create_Null_())
   442  		}
   443  	}
   444  	{
   445  		if _source0.Is_Bool() {
   446  			var _0_b m_JSON_Utils_Views_Core.View__ = _source0.Get_().(m_JSON_Grammar.Value_Bool).B
   447  			_ = _0_b
   448  			return m_Wrappers.Companion_Result_.Create_Success_(m_JSON_Values.Companion_JSON_.Create_Bool_(Companion_Default___.Bool(_0_b)))
   449  		}
   450  	}
   451  	{
   452  		if _source0.Is_String() {
   453  			var _1_str m_JSON_Grammar.Jstring = _source0.Get_().(m_JSON_Grammar.Value_String).Str
   454  			_ = _1_str
   455  			var _2_valueOrError0 m_Wrappers.Result = Companion_Default___.String(_1_str)
   456  			_ = _2_valueOrError0
   457  			if (_2_valueOrError0).IsFailure() {
   458  				return (_2_valueOrError0).PropagateFailure()
   459  			} else {
   460  				var _3_s _dafny.Sequence = (_2_valueOrError0).Extract().(_dafny.Sequence)
   461  				_ = _3_s
   462  				return m_Wrappers.Companion_Result_.Create_Success_(m_JSON_Values.Companion_JSON_.Create_String_(_3_s))
   463  			}
   464  		}
   465  	}
   466  	{
   467  		if _source0.Is_Number() {
   468  			var _4_dec m_JSON_Grammar.Jnumber = _source0.Get_().(m_JSON_Grammar.Value_Number).Num
   469  			_ = _4_dec
   470  			var _5_valueOrError1 m_Wrappers.Result = Companion_Default___.Number(_4_dec)
   471  			_ = _5_valueOrError1
   472  			if (_5_valueOrError1).IsFailure() {
   473  				return (_5_valueOrError1).PropagateFailure()
   474  			} else {
   475  				var _6_n m_JSON_Values.Decimal = (_5_valueOrError1).Extract().(m_JSON_Values.Decimal)
   476  				_ = _6_n
   477  				return m_Wrappers.Companion_Result_.Create_Success_(m_JSON_Values.Companion_JSON_.Create_Number_(_6_n))
   478  			}
   479  		}
   480  	}
   481  	{
   482  		if _source0.Is_Object() {
   483  			var _7_obj m_JSON_Grammar.Bracketed = _source0.Get_().(m_JSON_Grammar.Value_Object).Obj
   484  			_ = _7_obj
   485  			var _8_valueOrError2 m_Wrappers.Result = Companion_Default___.Object(_7_obj)
   486  			_ = _8_valueOrError2
   487  			if (_8_valueOrError2).IsFailure() {
   488  				return (_8_valueOrError2).PropagateFailure()
   489  			} else {
   490  				var _9_o _dafny.Sequence = (_8_valueOrError2).Extract().(_dafny.Sequence)
   491  				_ = _9_o
   492  				return m_Wrappers.Companion_Result_.Create_Success_(m_JSON_Values.Companion_JSON_.Create_Object_(_9_o))
   493  			}
   494  		}
   495  	}
   496  	{
   497  		var _10_arr m_JSON_Grammar.Bracketed = _source0.Get_().(m_JSON_Grammar.Value_Array).Arr
   498  		_ = _10_arr
   499  		var _11_valueOrError3 m_Wrappers.Result = Companion_Default___.Array(_10_arr)
   500  		_ = _11_valueOrError3
   501  		if (_11_valueOrError3).IsFailure() {
   502  			return (_11_valueOrError3).PropagateFailure()
   503  		} else {
   504  			var _12_a _dafny.Sequence = (_11_valueOrError3).Extract().(_dafny.Sequence)
   505  			_ = _12_a
   506  			return m_Wrappers.Companion_Result_.Create_Success_(m_JSON_Values.Companion_JSON_.Create_Array_(_12_a))
   507  		}
   508  	}
   509  }
   510  func (_static *CompanionStruct_Default___) JSON(js m_JSON_Grammar.Structural) m_Wrappers.Result {
   511  	return Companion_Default___.Value((js).Dtor_t().(m_JSON_Grammar.Value))
   512  }
   513  func (_static *CompanionStruct_Default___) HEX__TABLE__16() _dafny.Map {
   514  	return _dafny.NewMapBuilder().ToMap().UpdateUnsafe(uint16(_dafny.Char('0')), _dafny.Zero).UpdateUnsafe(uint16(_dafny.Char('1')), _dafny.One).UpdateUnsafe(uint16(_dafny.Char('2')), _dafny.IntOfInt64(2)).UpdateUnsafe(uint16(_dafny.Char('3')), _dafny.IntOfInt64(3)).UpdateUnsafe(uint16(_dafny.Char('4')), _dafny.IntOfInt64(4)).UpdateUnsafe(uint16(_dafny.Char('5')), _dafny.IntOfInt64(5)).UpdateUnsafe(uint16(_dafny.Char('6')), _dafny.IntOfInt64(6)).UpdateUnsafe(uint16(_dafny.Char('7')), _dafny.IntOfInt64(7)).UpdateUnsafe(uint16(_dafny.Char('8')), _dafny.IntOfInt64(8)).UpdateUnsafe(uint16(_dafny.Char('9')), _dafny.IntOfInt64(9)).UpdateUnsafe(uint16(_dafny.Char('a')), _dafny.IntOfInt64(10)).UpdateUnsafe(uint16(_dafny.Char('b')), _dafny.IntOfInt64(11)).UpdateUnsafe(uint16(_dafny.Char('c')), _dafny.IntOfInt64(12)).UpdateUnsafe(uint16(_dafny.Char('d')), _dafny.IntOfInt64(13)).UpdateUnsafe(uint16(_dafny.Char('e')), _dafny.IntOfInt64(14)).UpdateUnsafe(uint16(_dafny.Char('f')), _dafny.IntOfInt64(15)).UpdateUnsafe(uint16(_dafny.Char('A')), _dafny.IntOfInt64(10)).UpdateUnsafe(uint16(_dafny.Char('B')), _dafny.IntOfInt64(11)).UpdateUnsafe(uint16(_dafny.Char('C')), _dafny.IntOfInt64(12)).UpdateUnsafe(uint16(_dafny.Char('D')), _dafny.IntOfInt64(13)).UpdateUnsafe(uint16(_dafny.Char('E')), _dafny.IntOfInt64(14)).UpdateUnsafe(uint16(_dafny.Char('F')), _dafny.IntOfInt64(15))
   515  }
   516  func (_static *CompanionStruct_Default___) DIGITS() _dafny.Map {
   517  	return _dafny.NewMapBuilder().ToMap().UpdateUnsafe(uint8(_dafny.Char('0')), _dafny.Zero).UpdateUnsafe(uint8(_dafny.Char('1')), _dafny.One).UpdateUnsafe(uint8(_dafny.Char('2')), _dafny.IntOfInt64(2)).UpdateUnsafe(uint8(_dafny.Char('3')), _dafny.IntOfInt64(3)).UpdateUnsafe(uint8(_dafny.Char('4')), _dafny.IntOfInt64(4)).UpdateUnsafe(uint8(_dafny.Char('5')), _dafny.IntOfInt64(5)).UpdateUnsafe(uint8(_dafny.Char('6')), _dafny.IntOfInt64(6)).UpdateUnsafe(uint8(_dafny.Char('7')), _dafny.IntOfInt64(7)).UpdateUnsafe(uint8(_dafny.Char('8')), _dafny.IntOfInt64(8)).UpdateUnsafe(uint8(_dafny.Char('9')), _dafny.IntOfInt64(9))
   518  }
   519  func (_static *CompanionStruct_Default___) MINUS() uint8 {
   520  	return uint8(_dafny.Char('-'))
   521  }
   522  
   523  // End of class Default__