github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl@v0.2.0/AwsArnParsing/AwsArnParsing.go (about)

     1  // Package AwsArnParsing
     2  // Dafny module AwsArnParsing compiled into Go
     3  
     4  package AwsArnParsing
     5  
     6  import (
     7  	os "os"
     8  
     9  	m_ComAmazonawsDynamodbTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/dynamodb/ComAmazonawsDynamodbTypes"
    10  	m_ComAmazonawsKmsTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/kms/ComAmazonawsKmsTypes"
    11  	m_AwsCryptographyKeyStoreTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyKeyStoreTypes"
    12  	m_AwsCryptographyMaterialProvidersTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/mpl/AwsCryptographyMaterialProvidersTypes"
    13  	m_AtomicPrimitives "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AtomicPrimitives"
    14  	m_AwsCryptographyPrimitivesOperations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesOperations"
    15  	m_AwsCryptographyPrimitivesTypes "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/AwsCryptographyPrimitivesTypes"
    16  	m_Digest "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Digest"
    17  	m_HKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/HKDF"
    18  	m_KdfCtr "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/KdfCtr"
    19  	m_Random "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/Random"
    20  	m_WrappedHKDF "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHKDF"
    21  	m_WrappedHMAC "github.com/aws/aws-cryptographic-material-providers-library/releases/go/primitives/WrappedHMAC"
    22  	m_Actions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Actions"
    23  	m_Base64 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64"
    24  	m_Base64Lemmas "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Base64Lemmas"
    25  	m_BoundedInts "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/BoundedInts"
    26  	m_DivInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternals"
    27  	m_DivInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivInternalsNonlinear"
    28  	m_DivMod "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/DivMod"
    29  	m_FileIO "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FileIO"
    30  	m_FloatCompare "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/FloatCompare"
    31  	m_Functions "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Functions"
    32  	m_GeneralInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GeneralInternals"
    33  	m_GetOpt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/GetOpt"
    34  	m_HexStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/HexStrings"
    35  	m_Logarithm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Logarithm"
    36  	m__Math "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Math_"
    37  	m_ModInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternals"
    38  	m_ModInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/ModInternalsNonlinear"
    39  	m_Mul "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Mul"
    40  	m_MulInternals "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternals"
    41  	m_MulInternalsNonlinear "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/MulInternalsNonlinear"
    42  	m_Power "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Power"
    43  	m_Relations "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Relations"
    44  	m_Seq "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq"
    45  	m_Seq_MergeSort "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Seq_MergeSort"
    46  	m_Sorting "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Sorting"
    47  	m_StandardLibrary "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary"
    48  	m_StandardLibraryInterop "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibraryInterop"
    49  	m_StandardLibrary_Sequence "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_Sequence"
    50  	m_StandardLibrary_String "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_String"
    51  	m_StandardLibrary_UInt "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/StandardLibrary_UInt"
    52  	m_Streams "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Streams"
    53  	m_UTF8 "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UTF8"
    54  	m_UnicodeStrings "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/UnicodeStrings"
    55  	m__Unicode "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Unicode_"
    56  	m_Utf16EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf16EncodingForm"
    57  	m_Utf8EncodingForm "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Utf8EncodingForm"
    58  	m_Wrappers "github.com/aws/aws-cryptographic-material-providers-library/releases/go/smithy-dafny-standard-library/Wrappers"
    59  	m__System "github.com/dafny-lang/DafnyRuntimeGo/v4/System_"
    60  	_dafny "github.com/dafny-lang/DafnyRuntimeGo/v4/dafny"
    61  )
    62  
    63  var _ = os.Args
    64  var _ _dafny.Dummy__
    65  var _ m__System.Dummy__
    66  var _ m_Wrappers.Dummy__
    67  var _ m_BoundedInts.Dummy__
    68  var _ m_StandardLibrary_UInt.Dummy__
    69  var _ m_StandardLibrary_Sequence.Dummy__
    70  var _ m_StandardLibrary_String.Dummy__
    71  var _ m_StandardLibrary.Dummy__
    72  var _ m_AwsCryptographyPrimitivesTypes.Dummy__
    73  var _ m_Random.Dummy__
    74  var _ m_Digest.Dummy__
    75  var _ m_WrappedHMAC.Dummy__
    76  var _ m_HKDF.Dummy__
    77  var _ m_WrappedHKDF.Dummy__
    78  var _ m_KdfCtr.Dummy__
    79  var _ m_AwsCryptographyPrimitivesOperations.Dummy__
    80  var _ m_AtomicPrimitives.Dummy__
    81  var _ m_ComAmazonawsDynamodbTypes.Dummy__
    82  var _ m_ComAmazonawsKmsTypes.Dummy__
    83  var _ m_Relations.Dummy__
    84  var _ m_Seq_MergeSort.Dummy__
    85  var _ m__Math.Dummy__
    86  var _ m_Seq.Dummy__
    87  var _ m__Unicode.Dummy__
    88  var _ m_Functions.Dummy__
    89  var _ m_Utf8EncodingForm.Dummy__
    90  var _ m_Utf16EncodingForm.Dummy__
    91  var _ m_UnicodeStrings.Dummy__
    92  var _ m_FileIO.Dummy__
    93  var _ m_GeneralInternals.Dummy__
    94  var _ m_MulInternalsNonlinear.Dummy__
    95  var _ m_MulInternals.Dummy__
    96  var _ m_Mul.Dummy__
    97  var _ m_ModInternalsNonlinear.Dummy__
    98  var _ m_DivInternalsNonlinear.Dummy__
    99  var _ m_ModInternals.Dummy__
   100  var _ m_DivInternals.Dummy__
   101  var _ m_DivMod.Dummy__
   102  var _ m_Power.Dummy__
   103  var _ m_Logarithm.Dummy__
   104  var _ m_StandardLibraryInterop.Dummy__
   105  var _ m_Streams.Dummy__
   106  var _ m_Sorting.Dummy__
   107  var _ m_HexStrings.Dummy__
   108  var _ m_GetOpt.Dummy__
   109  var _ m_FloatCompare.Dummy__
   110  var _ m_Base64.Dummy__
   111  var _ m_Base64Lemmas.Dummy__
   112  var _ m_Actions.Dummy__
   113  var _ m_AwsCryptographyKeyStoreTypes.Dummy__
   114  var _ m_AwsCryptographyMaterialProvidersTypes.Dummy__
   115  
   116  type Dummy__ struct{}
   117  
   118  // Definition of class Default__
   119  type Default__ struct {
   120  	dummy byte
   121  }
   122  
   123  func New_Default___() *Default__ {
   124  	_this := Default__{}
   125  
   126  	return &_this
   127  }
   128  
   129  type CompanionStruct_Default___ struct {
   130  }
   131  
   132  var Companion_Default___ = CompanionStruct_Default___{}
   133  
   134  func (_this *Default__) Equals(other *Default__) bool {
   135  	return _this == other
   136  }
   137  
   138  func (_this *Default__) EqualsGeneric(x interface{}) bool {
   139  	other, ok := x.(*Default__)
   140  	return ok && _this.Equals(other)
   141  }
   142  
   143  func (*Default__) String() string {
   144  	return "AwsArnParsing.Default__"
   145  }
   146  func (_this *Default__) ParentTraits_() []*_dafny.TraitID {
   147  	return [](*_dafny.TraitID){}
   148  }
   149  
   150  var _ _dafny.TraitOffspring = &Default__{}
   151  
   152  func (_static *CompanionStruct_Default___) ValidAwsKmsResource(resource AwsResource) bool {
   153  	return ((resource).Valid()) && ((_dafny.Companion_Sequence_.Equal((resource).Dtor_resourceType(), _dafny.SeqOfString("key"))) || (_dafny.Companion_Sequence_.Equal((resource).Dtor_resourceType(), _dafny.SeqOfString("alias"))))
   154  }
   155  func (_static *CompanionStruct_Default___) ValidAwsKmsArn(arn AwsArn) bool {
   156  	return (((arn).Valid()) && (_dafny.Companion_Sequence_.Equal((arn).Dtor_service(), _dafny.SeqOfString("kms")))) && (Companion_Default___.ValidAwsKmsResource((arn).Dtor_resource()))
   157  }
   158  func (_static *CompanionStruct_Default___) ParseAwsKmsRawResources(identifier _dafny.Sequence) m_Wrappers.Result {
   159  	var _0_info _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(identifier, _dafny.Char('/'))
   160  	_ = _0_info
   161  	var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(!_dafny.Companion_Sequence_.Equal((_0_info).Select(0).(_dafny.Sequence), _dafny.SeqOfString("key")), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Malformed raw key id: "), identifier))
   162  	_ = _1_valueOrError0
   163  	if (_1_valueOrError0).IsFailure() {
   164  		return (_1_valueOrError0).PropagateFailure()
   165  	} else if (_dafny.IntOfUint32((_0_info).Cardinality())).Cmp(_dafny.One) == 0 {
   166  		return Companion_Default___.ParseAwsKmsResources(_dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("key/"), identifier))
   167  	} else {
   168  		return Companion_Default___.ParseAwsKmsResources(identifier)
   169  	}
   170  }
   171  func (_static *CompanionStruct_Default___) ParseAwsKmsResources(identifier _dafny.Sequence) m_Wrappers.Result {
   172  	var _0_info _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(identifier, _dafny.Char('/'))
   173  	_ = _0_info
   174  	var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.IntOfUint32((_0_info).Cardinality())).Cmp(_dafny.One) > 0, _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Malformed resource: "), identifier))
   175  	_ = _1_valueOrError0
   176  	if (_1_valueOrError0).IsFailure() {
   177  		return (_1_valueOrError0).PropagateFailure()
   178  	} else {
   179  		var _2_resourceType _dafny.Sequence = (_0_info).Select(0).(_dafny.Sequence)
   180  		_ = _2_resourceType
   181  		var _3_value _dafny.Sequence = m_StandardLibrary.Companion_Default___.Join((_0_info).Drop(1), _dafny.SeqOfString("/"))
   182  		_ = _3_value
   183  		var _4_resource AwsResource = Companion_AwsResource_.Create_AwsResource_(_2_resourceType, _3_value)
   184  		_ = _4_resource
   185  		var _5_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.ValidAwsKmsResource(_4_resource), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Malformed resource: "), identifier))
   186  		_ = _5_valueOrError1
   187  		if (_5_valueOrError1).IsFailure() {
   188  			return (_5_valueOrError1).PropagateFailure()
   189  		} else {
   190  			return m_Wrappers.Companion_Result_.Create_Success_(_4_resource)
   191  		}
   192  	}
   193  }
   194  func (_static *CompanionStruct_Default___) ValidAmazonDynamodbResource(resource AwsResource) bool {
   195  	return ((resource).Valid()) && (_dafny.Companion_Sequence_.Equal((resource).Dtor_resourceType(), _dafny.SeqOfString("table")))
   196  }
   197  func (_static *CompanionStruct_Default___) ValidAmazonDynamodbArn(arn AwsArn) bool {
   198  	return (((arn).Valid()) && (_dafny.Companion_Sequence_.Equal((arn).Dtor_service(), _dafny.SeqOfString("dynamodb")))) && (Companion_Default___.ValidAmazonDynamodbResource((arn).Dtor_resource()))
   199  }
   200  func (_static *CompanionStruct_Default___) ParseAmazonDynamodbResources(identifier _dafny.Sequence) m_Wrappers.Result {
   201  	var _0_info m_Wrappers.Option = m_StandardLibrary.Companion_Default___.SplitOnce_q(identifier, _dafny.Char('/'))
   202  	_ = _0_info
   203  	var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_0_info).Is_Some(), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Malformed resource: "), identifier))
   204  	_ = _1_valueOrError0
   205  	if (_1_valueOrError0).IsFailure() {
   206  		return (_1_valueOrError0).PropagateFailure()
   207  	} else {
   208  		var _2_resourceType _dafny.Sequence = (*((_0_info).Dtor_value().(_dafny.Tuple)).IndexInt(0)).(_dafny.Sequence)
   209  		_ = _2_resourceType
   210  		var _3_value _dafny.Sequence = (*((_0_info).Dtor_value().(_dafny.Tuple)).IndexInt(1)).(_dafny.Sequence)
   211  		_ = _3_value
   212  		var _4_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__TableName(_3_value), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Table Name invalid: "), identifier))
   213  		_ = _4_valueOrError1
   214  		if (_4_valueOrError1).IsFailure() {
   215  			return (_4_valueOrError1).PropagateFailure()
   216  		} else {
   217  			var _5_resource AwsResource = Companion_AwsResource_.Create_AwsResource_(_2_resourceType, _3_value)
   218  			_ = _5_resource
   219  			var _6_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.ValidAmazonDynamodbResource(_5_resource), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Malformed resource: "), identifier))
   220  			_ = _6_valueOrError2
   221  			if (_6_valueOrError2).IsFailure() {
   222  				return (_6_valueOrError2).PropagateFailure()
   223  			} else {
   224  				return m_Wrappers.Companion_Result_.Create_Success_(_5_resource)
   225  			}
   226  		}
   227  	}
   228  }
   229  func (_static *CompanionStruct_Default___) ParseAwsKmsArn(identifier _dafny.Sequence) m_Wrappers.Result {
   230  	var _0_components _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(identifier, _dafny.Char(':'))
   231  	_ = _0_components
   232  	var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.IntOfInt64(6)).Cmp(_dafny.IntOfUint32((_0_components).Cardinality())) == 0, _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Malformed arn: "), identifier))
   233  	_ = _1_valueOrError0
   234  	if (_1_valueOrError0).IsFailure() {
   235  		return (_1_valueOrError0).PropagateFailure()
   236  	} else {
   237  		var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.ParseAwsKmsResources((_0_components).Select(5).(_dafny.Sequence))
   238  		_ = _2_valueOrError1
   239  		if (_2_valueOrError1).IsFailure() {
   240  			return (_2_valueOrError1).PropagateFailure()
   241  		} else {
   242  			var _3_resource AwsResource = (_2_valueOrError1).Extract().(AwsResource)
   243  			_ = _3_resource
   244  			var _4_arn AwsArn = Companion_AwsArn_.Create_AwsArn_((_0_components).Select(0).(_dafny.Sequence), (_0_components).Select(1).(_dafny.Sequence), (_0_components).Select(2).(_dafny.Sequence), (_0_components).Select(3).(_dafny.Sequence), (_0_components).Select(4).(_dafny.Sequence), _3_resource)
   245  			_ = _4_arn
   246  			var _5_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.ValidAwsKmsArn(_4_arn), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Malformed Arn:"), identifier))
   247  			_ = _5_valueOrError2
   248  			if (_5_valueOrError2).IsFailure() {
   249  				return (_5_valueOrError2).PropagateFailure()
   250  			} else {
   251  				return m_Wrappers.Companion_Result_.Create_Success_(_4_arn)
   252  			}
   253  		}
   254  	}
   255  }
   256  func (_static *CompanionStruct_Default___) ParseAmazonDynamodbTableArn(identifier _dafny.Sequence) m_Wrappers.Result {
   257  	var _0_components _dafny.Sequence = m_StandardLibrary.Companion_Default___.Split(identifier, _dafny.Char(':'))
   258  	_ = _0_components
   259  	var _1_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need((_dafny.IntOfInt64(6)).Cmp(_dafny.IntOfUint32((_0_components).Cardinality())) == 0, _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Malformed arn: "), identifier))
   260  	_ = _1_valueOrError0
   261  	if (_1_valueOrError0).IsFailure() {
   262  		return (_1_valueOrError0).PropagateFailure()
   263  	} else {
   264  		var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.ParseAmazonDynamodbResources((_0_components).Select(5).(_dafny.Sequence))
   265  		_ = _2_valueOrError1
   266  		if (_2_valueOrError1).IsFailure() {
   267  			return (_2_valueOrError1).PropagateFailure()
   268  		} else {
   269  			var _3_resource AwsResource = (_2_valueOrError1).Extract().(AwsResource)
   270  			_ = _3_resource
   271  			var _4_arn AwsArn = Companion_AwsArn_.Create_AwsArn_((_0_components).Select(0).(_dafny.Sequence), (_0_components).Select(1).(_dafny.Sequence), (_0_components).Select(2).(_dafny.Sequence), (_0_components).Select(3).(_dafny.Sequence), (_0_components).Select(4).(_dafny.Sequence), _3_resource)
   272  			_ = _4_arn
   273  			var _5_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(Companion_Default___.ValidAmazonDynamodbArn(_4_arn), _dafny.Companion_Sequence_.Concatenate(_dafny.SeqOfString("Malformed Arn:"), identifier))
   274  			_ = _5_valueOrError2
   275  			if (_5_valueOrError2).IsFailure() {
   276  				return (_5_valueOrError2).PropagateFailure()
   277  			} else {
   278  				return m_Wrappers.Companion_Result_.Create_Success_(_4_arn)
   279  			}
   280  		}
   281  	}
   282  }
   283  func (_static *CompanionStruct_Default___) ParseAwsKmsIdentifier(identifier _dafny.Sequence) m_Wrappers.Result {
   284  	if _dafny.Companion_Sequence_.IsPrefixOf(_dafny.SeqOfString("arn:"), identifier) {
   285  		var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.ParseAwsKmsArn(identifier)
   286  		_ = _0_valueOrError0
   287  		if (_0_valueOrError0).IsFailure() {
   288  			return (_0_valueOrError0).PropagateFailure()
   289  		} else {
   290  			var _1_arn AwsArn = (_0_valueOrError0).Extract().(AwsArn)
   291  			_ = _1_arn
   292  			return m_Wrappers.Companion_Result_.Create_Success_(Companion_AwsKmsIdentifier_.Create_AwsKmsArnIdentifier_(_1_arn))
   293  		}
   294  	} else {
   295  		var _2_valueOrError1 m_Wrappers.Result = Companion_Default___.ParseAwsKmsRawResources(identifier)
   296  		_ = _2_valueOrError1
   297  		if (_2_valueOrError1).IsFailure() {
   298  			return (_2_valueOrError1).PropagateFailure()
   299  		} else {
   300  			var _3_r AwsResource = (_2_valueOrError1).Extract().(AwsResource)
   301  			_ = _3_r
   302  			return m_Wrappers.Companion_Result_.Create_Success_(Companion_AwsKmsIdentifier_.Create_AwsKmsRawResourceIdentifier_(_3_r))
   303  		}
   304  	}
   305  }
   306  func (_static *CompanionStruct_Default___) ParseAmazonDynamodbTableName(identifier _dafny.Sequence) m_Wrappers.Result {
   307  	var _0_valueOrError0 m_Wrappers.Result = Companion_Default___.ParseAmazonDynamodbTableArn(identifier)
   308  	_ = _0_valueOrError0
   309  	if (_0_valueOrError0).IsFailure() {
   310  		return (_0_valueOrError0).PropagateFailure()
   311  	} else {
   312  		var _1_arn AwsArn = (_0_valueOrError0).Extract().(AwsArn)
   313  		_ = _1_arn
   314  		var _2_tableArn AmazonDynamodbTableName = Companion_AmazonDynamodbTableName_.Create_AmazonDynamodbTableArn_(_1_arn)
   315  		_ = _2_tableArn
   316  		var _3_tableName _dafny.Sequence = (_2_tableArn).GetTableName()
   317  		_ = _3_tableName
   318  		return m_Wrappers.Companion_Result_.Create_Success_(_3_tableName)
   319  	}
   320  }
   321  func (_static *CompanionStruct_Default___) IsMultiRegionAwsKmsArn(arn AwsArn) bool {
   322  	return Companion_Default___.IsMultiRegionAwsKmsResource((arn).Dtor_resource())
   323  }
   324  func (_static *CompanionStruct_Default___) IsMultiRegionAwsKmsIdentifier(identifier AwsKmsIdentifier) bool {
   325  	var _source0 AwsKmsIdentifier = identifier
   326  	_ = _source0
   327  	{
   328  		if _source0.Is_AwsKmsArnIdentifier() {
   329  			var _0_arn AwsArn = _source0.Get_().(AwsKmsIdentifier_AwsKmsArnIdentifier).A
   330  			_ = _0_arn
   331  			return Companion_Default___.IsMultiRegionAwsKmsArn(_0_arn)
   332  		}
   333  	}
   334  	{
   335  		var _1_r AwsResource = _source0.Get_().(AwsKmsIdentifier_AwsKmsRawResourceIdentifier).R
   336  		_ = _1_r
   337  		return Companion_Default___.IsMultiRegionAwsKmsResource(_1_r)
   338  	}
   339  }
   340  func (_static *CompanionStruct_Default___) IsMultiRegionAwsKmsResource(resource AwsResource) bool {
   341  	return (_dafny.Companion_Sequence_.Equal((resource).Dtor_resourceType(), _dafny.SeqOfString("key"))) && (_dafny.Companion_Sequence_.IsPrefixOf(_dafny.SeqOfString("mrk-"), (resource).Dtor_value()))
   342  }
   343  func (_static *CompanionStruct_Default___) GetRegion(identifier AwsKmsIdentifier) m_Wrappers.Option {
   344  	var _source0 AwsKmsIdentifier = identifier
   345  	_ = _source0
   346  	{
   347  		if _source0.Is_AwsKmsArnIdentifier() {
   348  			var _0_a AwsArn = _source0.Get_().(AwsKmsIdentifier_AwsKmsArnIdentifier).A
   349  			_ = _0_a
   350  			return m_Wrappers.Companion_Option_.Create_Some_((_0_a).Dtor_region())
   351  		}
   352  	}
   353  	{
   354  		return m_Wrappers.Companion_Option_.Create_None_()
   355  	}
   356  }
   357  func (_static *CompanionStruct_Default___) IsAwsKmsIdentifierString(s _dafny.Sequence) m_Wrappers.Result {
   358  	var _0_valueOrError0 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_UTF8.Companion_Default___.IsASCIIString(s), _dafny.SeqOfString("Not a valid ASCII string."))
   359  	_ = _0_valueOrError0
   360  	if (_0_valueOrError0).IsFailure() {
   361  		return (_0_valueOrError0).PropagateFailure()
   362  	} else {
   363  		var _1_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(((_dafny.IntOfUint32((s).Cardinality())).Sign() == 1) && ((_dafny.IntOfUint32((s).Cardinality())).Cmp(Companion_Default___.MAX__AWS__KMS__IDENTIFIER__LENGTH()) <= 0), _dafny.SeqOfString("Identifier exceeds maximum length."))
   364  		_ = _1_valueOrError1
   365  		if (_1_valueOrError1).IsFailure() {
   366  			return (_1_valueOrError1).PropagateFailure()
   367  		} else {
   368  			return Companion_Default___.ParseAwsKmsIdentifier(s)
   369  		}
   370  	}
   371  }
   372  func (_static *CompanionStruct_Default___) Error(s _dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error {
   373  	return m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(s)
   374  }
   375  func (_static *CompanionStruct_Default___) ValidateDdbTableArn(tableArn _dafny.Sequence) m_Wrappers.Result {
   376  	var _0_valueOrError0 m_Wrappers.Result = (Companion_Default___.ParseAmazonDynamodbTableName(tableArn)).MapFailure(func(coer0 func(_dafny.Sequence) m_AwsCryptographyMaterialProvidersTypes.Error) func(interface{}) interface{} {
   377  		return func(arg0 interface{}) interface{} {
   378  			return coer0(arg0.(_dafny.Sequence))
   379  		}
   380  	}(Companion_Default___.Error))
   381  	_ = _0_valueOrError0
   382  	if (_0_valueOrError0).IsFailure() {
   383  		return (_0_valueOrError0).PropagateFailure()
   384  	} else {
   385  		var _1___v1 _dafny.Sequence = (_0_valueOrError0).Extract().(_dafny.Sequence)
   386  		_ = _1___v1
   387  		var _2_valueOrError1 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_UTF8.Companion_Default___.IsASCIIString(tableArn), m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(_dafny.SeqOfString("Table Arn is not ASCII")))
   388  		_ = _2_valueOrError1
   389  		if (_2_valueOrError1).IsFailure() {
   390  			return (_2_valueOrError1).PropagateFailure()
   391  		} else {
   392  			var _3_valueOrError2 m_Wrappers.Outcome = m_Wrappers.Companion_Default___.Need(m_ComAmazonawsDynamodbTypes.Companion_Default___.IsValid__TableName((Companion_Default___.ParseAmazonDynamodbTableName(tableArn)).Dtor_value().(_dafny.Sequence)), m_AwsCryptographyMaterialProvidersTypes.Companion_Error_.Create_AwsCryptographicMaterialProvidersException_(_dafny.SeqOfString("Table Name is too long")))
   393  			_ = _3_valueOrError2
   394  			if (_3_valueOrError2).IsFailure() {
   395  				return (_3_valueOrError2).PropagateFailure()
   396  			} else {
   397  				return m_Wrappers.Companion_Result_.Create_Success_(_dafny.TupleOf())
   398  			}
   399  		}
   400  	}
   401  }
   402  func (_static *CompanionStruct_Default___) MAX__AWS__KMS__IDENTIFIER__LENGTH() _dafny.Int {
   403  	return _dafny.IntOfInt64(2048)
   404  }
   405  
   406  // End of class Default__
   407  
   408  // Definition of datatype AwsResource
   409  type AwsResource struct {
   410  	Data_AwsResource_
   411  }
   412  
   413  func (_this AwsResource) Get_() Data_AwsResource_ {
   414  	return _this.Data_AwsResource_
   415  }
   416  
   417  type Data_AwsResource_ interface {
   418  	isAwsResource()
   419  }
   420  
   421  type CompanionStruct_AwsResource_ struct {
   422  }
   423  
   424  var Companion_AwsResource_ = CompanionStruct_AwsResource_{}
   425  
   426  type AwsResource_AwsResource struct {
   427  	ResourceType _dafny.Sequence
   428  	Value        _dafny.Sequence
   429  }
   430  
   431  func (AwsResource_AwsResource) isAwsResource() {}
   432  
   433  func (CompanionStruct_AwsResource_) Create_AwsResource_(ResourceType _dafny.Sequence, Value _dafny.Sequence) AwsResource {
   434  	return AwsResource{AwsResource_AwsResource{ResourceType, Value}}
   435  }
   436  
   437  func (_this AwsResource) Is_AwsResource() bool {
   438  	_, ok := _this.Get_().(AwsResource_AwsResource)
   439  	return ok
   440  }
   441  
   442  func (CompanionStruct_AwsResource_) Default() AwsResource {
   443  	return Companion_AwsResource_.Create_AwsResource_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString())
   444  }
   445  
   446  func (_this AwsResource) Dtor_resourceType() _dafny.Sequence {
   447  	return _this.Get_().(AwsResource_AwsResource).ResourceType
   448  }
   449  
   450  func (_this AwsResource) Dtor_value() _dafny.Sequence {
   451  	return _this.Get_().(AwsResource_AwsResource).Value
   452  }
   453  
   454  func (_this AwsResource) String() string {
   455  	switch data := _this.Get_().(type) {
   456  	case nil:
   457  		return "null"
   458  	case AwsResource_AwsResource:
   459  		{
   460  			return "AwsArnParsing.AwsResource.AwsResource" + "(" + _dafny.String(data.ResourceType) + ", " + _dafny.String(data.Value) + ")"
   461  		}
   462  	default:
   463  		{
   464  			return "<unexpected>"
   465  		}
   466  	}
   467  }
   468  
   469  func (_this AwsResource) Equals(other AwsResource) bool {
   470  	switch data1 := _this.Get_().(type) {
   471  	case AwsResource_AwsResource:
   472  		{
   473  			data2, ok := other.Get_().(AwsResource_AwsResource)
   474  			return ok && data1.ResourceType.Equals(data2.ResourceType) && data1.Value.Equals(data2.Value)
   475  		}
   476  	default:
   477  		{
   478  			return false // unexpected
   479  		}
   480  	}
   481  }
   482  
   483  func (_this AwsResource) EqualsGeneric(other interface{}) bool {
   484  	typed, ok := other.(AwsResource)
   485  	return ok && _this.Equals(typed)
   486  }
   487  
   488  func Type_AwsResource_() _dafny.TypeDescriptor {
   489  	return type_AwsResource_{}
   490  }
   491  
   492  type type_AwsResource_ struct {
   493  }
   494  
   495  func (_this type_AwsResource_) Default() interface{} {
   496  	return Companion_AwsResource_.Default()
   497  }
   498  
   499  func (_this type_AwsResource_) String() string {
   500  	return "AwsArnParsing.AwsResource"
   501  }
   502  func (_this AwsResource) ParentTraits_() []*_dafny.TraitID {
   503  	return [](*_dafny.TraitID){}
   504  }
   505  
   506  var _ _dafny.TraitOffspring = AwsResource{}
   507  
   508  func (_this AwsResource) Valid() bool {
   509  	{
   510  		return (true) && ((_dafny.IntOfUint32(((_this).Dtor_value()).Cardinality())).Sign() == 1)
   511  	}
   512  }
   513  func (_this AwsResource) ToString() _dafny.Sequence {
   514  	{
   515  		return _dafny.Companion_Sequence_.Concatenate(_dafny.Companion_Sequence_.Concatenate((_this).Dtor_resourceType(), _dafny.SeqOfString("/")), (_this).Dtor_value())
   516  	}
   517  }
   518  
   519  // End of datatype AwsResource
   520  
   521  // Definition of datatype AwsArn
   522  type AwsArn struct {
   523  	Data_AwsArn_
   524  }
   525  
   526  func (_this AwsArn) Get_() Data_AwsArn_ {
   527  	return _this.Data_AwsArn_
   528  }
   529  
   530  type Data_AwsArn_ interface {
   531  	isAwsArn()
   532  }
   533  
   534  type CompanionStruct_AwsArn_ struct {
   535  }
   536  
   537  var Companion_AwsArn_ = CompanionStruct_AwsArn_{}
   538  
   539  type AwsArn_AwsArn struct {
   540  	ArnLiteral _dafny.Sequence
   541  	Partition  _dafny.Sequence
   542  	Service    _dafny.Sequence
   543  	Region     _dafny.Sequence
   544  	Account    _dafny.Sequence
   545  	Resource   AwsResource
   546  }
   547  
   548  func (AwsArn_AwsArn) isAwsArn() {}
   549  
   550  func (CompanionStruct_AwsArn_) Create_AwsArn_(ArnLiteral _dafny.Sequence, Partition _dafny.Sequence, Service _dafny.Sequence, Region _dafny.Sequence, Account _dafny.Sequence, Resource AwsResource) AwsArn {
   551  	return AwsArn{AwsArn_AwsArn{ArnLiteral, Partition, Service, Region, Account, Resource}}
   552  }
   553  
   554  func (_this AwsArn) Is_AwsArn() bool {
   555  	_, ok := _this.Get_().(AwsArn_AwsArn)
   556  	return ok
   557  }
   558  
   559  func (CompanionStruct_AwsArn_) Default() AwsArn {
   560  	return Companion_AwsArn_.Create_AwsArn_(_dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), _dafny.EmptySeq.SetString(), Companion_AwsResource_.Default())
   561  }
   562  
   563  func (_this AwsArn) Dtor_arnLiteral() _dafny.Sequence {
   564  	return _this.Get_().(AwsArn_AwsArn).ArnLiteral
   565  }
   566  
   567  func (_this AwsArn) Dtor_partition() _dafny.Sequence {
   568  	return _this.Get_().(AwsArn_AwsArn).Partition
   569  }
   570  
   571  func (_this AwsArn) Dtor_service() _dafny.Sequence {
   572  	return _this.Get_().(AwsArn_AwsArn).Service
   573  }
   574  
   575  func (_this AwsArn) Dtor_region() _dafny.Sequence {
   576  	return _this.Get_().(AwsArn_AwsArn).Region
   577  }
   578  
   579  func (_this AwsArn) Dtor_account() _dafny.Sequence {
   580  	return _this.Get_().(AwsArn_AwsArn).Account
   581  }
   582  
   583  func (_this AwsArn) Dtor_resource() AwsResource {
   584  	return _this.Get_().(AwsArn_AwsArn).Resource
   585  }
   586  
   587  func (_this AwsArn) String() string {
   588  	switch data := _this.Get_().(type) {
   589  	case nil:
   590  		return "null"
   591  	case AwsArn_AwsArn:
   592  		{
   593  			return "AwsArnParsing.AwsArn.AwsArn" + "(" + _dafny.String(data.ArnLiteral) + ", " + _dafny.String(data.Partition) + ", " + _dafny.String(data.Service) + ", " + _dafny.String(data.Region) + ", " + _dafny.String(data.Account) + ", " + _dafny.String(data.Resource) + ")"
   594  		}
   595  	default:
   596  		{
   597  			return "<unexpected>"
   598  		}
   599  	}
   600  }
   601  
   602  func (_this AwsArn) Equals(other AwsArn) bool {
   603  	switch data1 := _this.Get_().(type) {
   604  	case AwsArn_AwsArn:
   605  		{
   606  			data2, ok := other.Get_().(AwsArn_AwsArn)
   607  			return ok && data1.ArnLiteral.Equals(data2.ArnLiteral) && data1.Partition.Equals(data2.Partition) && data1.Service.Equals(data2.Service) && data1.Region.Equals(data2.Region) && data1.Account.Equals(data2.Account) && data1.Resource.Equals(data2.Resource)
   608  		}
   609  	default:
   610  		{
   611  			return false // unexpected
   612  		}
   613  	}
   614  }
   615  
   616  func (_this AwsArn) EqualsGeneric(other interface{}) bool {
   617  	typed, ok := other.(AwsArn)
   618  	return ok && _this.Equals(typed)
   619  }
   620  
   621  func Type_AwsArn_() _dafny.TypeDescriptor {
   622  	return type_AwsArn_{}
   623  }
   624  
   625  type type_AwsArn_ struct {
   626  }
   627  
   628  func (_this type_AwsArn_) Default() interface{} {
   629  	return Companion_AwsArn_.Default()
   630  }
   631  
   632  func (_this type_AwsArn_) String() string {
   633  	return "AwsArnParsing.AwsArn"
   634  }
   635  func (_this AwsArn) ParentTraits_() []*_dafny.TraitID {
   636  	return [](*_dafny.TraitID){}
   637  }
   638  
   639  var _ _dafny.TraitOffspring = AwsArn{}
   640  
   641  func (_this AwsArn) Valid() bool {
   642  	{
   643  		return (((((_dafny.Companion_Sequence_.Equal((_this).Dtor_arnLiteral(), _dafny.SeqOfString("arn"))) && ((_dafny.IntOfUint32(((_this).Dtor_partition()).Cardinality())).Sign() == 1)) && ((_dafny.IntOfUint32(((_this).Dtor_service()).Cardinality())).Sign() == 1)) && ((_dafny.IntOfUint32(((_this).Dtor_region()).Cardinality())).Sign() == 1)) && ((_dafny.IntOfUint32(((_this).Dtor_account()).Cardinality())).Sign() == 1)) && (((_this).Dtor_resource()).Valid())
   644  	}
   645  }
   646  func (_this AwsArn) ToString() _dafny.Sequence {
   647  	{
   648  		return (_this).ToArnString(m_Wrappers.Companion_Option_.Create_None_())
   649  	}
   650  }
   651  func (_this AwsArn) ToArnString(customRegion m_Wrappers.Option) _dafny.Sequence {
   652  	{
   653  		goto TAIL_CALL_START
   654  	TAIL_CALL_START:
   655  		var _source0 m_Wrappers.Option = customRegion
   656  		_ = _source0
   657  		{
   658  			if _source0.Is_None() {
   659  				var _in0 AwsArn = _this
   660  				_ = _in0
   661  				var _in1 m_Wrappers.Option = m_Wrappers.Companion_Option_.Create_Some_((_this).Dtor_region())
   662  				_ = _in1
   663  				_this = _in0
   664  
   665  				customRegion = _in1
   666  				goto TAIL_CALL_START
   667  			}
   668  		}
   669  		{
   670  			var _0_customRegion _dafny.Sequence = _source0.Get_().(m_Wrappers.Option_Some).Value.(_dafny.Sequence)
   671  			_ = _0_customRegion
   672  			return m_StandardLibrary.Companion_Default___.Join(_dafny.SeqOf((_this).Dtor_arnLiteral(), (_this).Dtor_partition(), (_this).Dtor_service(), _0_customRegion, (_this).Dtor_account(), ((_this).Dtor_resource()).ToString()), _dafny.SeqOfString(":"))
   673  		}
   674  	}
   675  }
   676  
   677  // End of datatype AwsArn
   678  
   679  // Definition of class AwsKmsArn
   680  type AwsKmsArn struct {
   681  }
   682  
   683  func New_AwsKmsArn_() *AwsKmsArn {
   684  	_this := AwsKmsArn{}
   685  
   686  	return &_this
   687  }
   688  
   689  type CompanionStruct_AwsKmsArn_ struct {
   690  }
   691  
   692  var Companion_AwsKmsArn_ = CompanionStruct_AwsKmsArn_{}
   693  
   694  func (*AwsKmsArn) String() string {
   695  	return "AwsArnParsing.AwsKmsArn"
   696  }
   697  
   698  // End of class AwsKmsArn
   699  
   700  func Type_AwsKmsArn_() _dafny.TypeDescriptor {
   701  	return type_AwsKmsArn_{}
   702  }
   703  
   704  type type_AwsKmsArn_ struct {
   705  }
   706  
   707  func (_this type_AwsKmsArn_) Default() interface{} {
   708  	return Companion_AwsArn_.Default()
   709  }
   710  
   711  func (_this type_AwsKmsArn_) String() string {
   712  	return "AwsArnParsing.AwsKmsArn"
   713  }
   714  func (_this *CompanionStruct_AwsKmsArn_) Is_(__source AwsArn) bool {
   715  	var _1_a AwsArn = (__source)
   716  	_ = _1_a
   717  	return Companion_Default___.ValidAwsKmsArn(_1_a)
   718  }
   719  
   720  // Definition of class AwsKmsResource
   721  type AwsKmsResource struct {
   722  }
   723  
   724  func New_AwsKmsResource_() *AwsKmsResource {
   725  	_this := AwsKmsResource{}
   726  
   727  	return &_this
   728  }
   729  
   730  type CompanionStruct_AwsKmsResource_ struct {
   731  }
   732  
   733  var Companion_AwsKmsResource_ = CompanionStruct_AwsKmsResource_{}
   734  
   735  func (*AwsKmsResource) String() string {
   736  	return "AwsArnParsing.AwsKmsResource"
   737  }
   738  
   739  // End of class AwsKmsResource
   740  
   741  func Type_AwsKmsResource_() _dafny.TypeDescriptor {
   742  	return type_AwsKmsResource_{}
   743  }
   744  
   745  type type_AwsKmsResource_ struct {
   746  }
   747  
   748  func (_this type_AwsKmsResource_) Default() interface{} {
   749  	return Companion_AwsResource_.Default()
   750  }
   751  
   752  func (_this type_AwsKmsResource_) String() string {
   753  	return "AwsArnParsing.AwsKmsResource"
   754  }
   755  func (_this *CompanionStruct_AwsKmsResource_) Is_(__source AwsResource) bool {
   756  	var _2_r AwsResource = (__source)
   757  	_ = _2_r
   758  	return Companion_Default___.ValidAwsKmsResource(_2_r)
   759  }
   760  
   761  // Definition of datatype AwsKmsIdentifier
   762  type AwsKmsIdentifier struct {
   763  	Data_AwsKmsIdentifier_
   764  }
   765  
   766  func (_this AwsKmsIdentifier) Get_() Data_AwsKmsIdentifier_ {
   767  	return _this.Data_AwsKmsIdentifier_
   768  }
   769  
   770  type Data_AwsKmsIdentifier_ interface {
   771  	isAwsKmsIdentifier()
   772  }
   773  
   774  type CompanionStruct_AwsKmsIdentifier_ struct {
   775  }
   776  
   777  var Companion_AwsKmsIdentifier_ = CompanionStruct_AwsKmsIdentifier_{}
   778  
   779  type AwsKmsIdentifier_AwsKmsArnIdentifier struct {
   780  	A AwsArn
   781  }
   782  
   783  func (AwsKmsIdentifier_AwsKmsArnIdentifier) isAwsKmsIdentifier() {}
   784  
   785  func (CompanionStruct_AwsKmsIdentifier_) Create_AwsKmsArnIdentifier_(A AwsArn) AwsKmsIdentifier {
   786  	return AwsKmsIdentifier{AwsKmsIdentifier_AwsKmsArnIdentifier{A}}
   787  }
   788  
   789  func (_this AwsKmsIdentifier) Is_AwsKmsArnIdentifier() bool {
   790  	_, ok := _this.Get_().(AwsKmsIdentifier_AwsKmsArnIdentifier)
   791  	return ok
   792  }
   793  
   794  type AwsKmsIdentifier_AwsKmsRawResourceIdentifier struct {
   795  	R AwsResource
   796  }
   797  
   798  func (AwsKmsIdentifier_AwsKmsRawResourceIdentifier) isAwsKmsIdentifier() {}
   799  
   800  func (CompanionStruct_AwsKmsIdentifier_) Create_AwsKmsRawResourceIdentifier_(R AwsResource) AwsKmsIdentifier {
   801  	return AwsKmsIdentifier{AwsKmsIdentifier_AwsKmsRawResourceIdentifier{R}}
   802  }
   803  
   804  func (_this AwsKmsIdentifier) Is_AwsKmsRawResourceIdentifier() bool {
   805  	_, ok := _this.Get_().(AwsKmsIdentifier_AwsKmsRawResourceIdentifier)
   806  	return ok
   807  }
   808  
   809  func (CompanionStruct_AwsKmsIdentifier_) Default() AwsKmsIdentifier {
   810  	return Companion_AwsKmsIdentifier_.Create_AwsKmsArnIdentifier_(Companion_AwsArn_.Default())
   811  }
   812  
   813  func (_this AwsKmsIdentifier) Dtor_a() AwsArn {
   814  	return _this.Get_().(AwsKmsIdentifier_AwsKmsArnIdentifier).A
   815  }
   816  
   817  func (_this AwsKmsIdentifier) Dtor_r() AwsResource {
   818  	return _this.Get_().(AwsKmsIdentifier_AwsKmsRawResourceIdentifier).R
   819  }
   820  
   821  func (_this AwsKmsIdentifier) String() string {
   822  	switch data := _this.Get_().(type) {
   823  	case nil:
   824  		return "null"
   825  	case AwsKmsIdentifier_AwsKmsArnIdentifier:
   826  		{
   827  			return "AwsArnParsing.AwsKmsIdentifier.AwsKmsArnIdentifier" + "(" + _dafny.String(data.A) + ")"
   828  		}
   829  	case AwsKmsIdentifier_AwsKmsRawResourceIdentifier:
   830  		{
   831  			return "AwsArnParsing.AwsKmsIdentifier.AwsKmsRawResourceIdentifier" + "(" + _dafny.String(data.R) + ")"
   832  		}
   833  	default:
   834  		{
   835  			return "<unexpected>"
   836  		}
   837  	}
   838  }
   839  
   840  func (_this AwsKmsIdentifier) Equals(other AwsKmsIdentifier) bool {
   841  	switch data1 := _this.Get_().(type) {
   842  	case AwsKmsIdentifier_AwsKmsArnIdentifier:
   843  		{
   844  			data2, ok := other.Get_().(AwsKmsIdentifier_AwsKmsArnIdentifier)
   845  			return ok && data1.A.Equals(data2.A)
   846  		}
   847  	case AwsKmsIdentifier_AwsKmsRawResourceIdentifier:
   848  		{
   849  			data2, ok := other.Get_().(AwsKmsIdentifier_AwsKmsRawResourceIdentifier)
   850  			return ok && data1.R.Equals(data2.R)
   851  		}
   852  	default:
   853  		{
   854  			return false // unexpected
   855  		}
   856  	}
   857  }
   858  
   859  func (_this AwsKmsIdentifier) EqualsGeneric(other interface{}) bool {
   860  	typed, ok := other.(AwsKmsIdentifier)
   861  	return ok && _this.Equals(typed)
   862  }
   863  
   864  func Type_AwsKmsIdentifier_() _dafny.TypeDescriptor {
   865  	return type_AwsKmsIdentifier_{}
   866  }
   867  
   868  type type_AwsKmsIdentifier_ struct {
   869  }
   870  
   871  func (_this type_AwsKmsIdentifier_) Default() interface{} {
   872  	return Companion_AwsKmsIdentifier_.Default()
   873  }
   874  
   875  func (_this type_AwsKmsIdentifier_) String() string {
   876  	return "AwsArnParsing.AwsKmsIdentifier"
   877  }
   878  func (_this AwsKmsIdentifier) ParentTraits_() []*_dafny.TraitID {
   879  	return [](*_dafny.TraitID){}
   880  }
   881  
   882  var _ _dafny.TraitOffspring = AwsKmsIdentifier{}
   883  
   884  func (_this AwsKmsIdentifier) ToString() _dafny.Sequence {
   885  	{
   886  		var _source0 AwsKmsIdentifier = _this
   887  		_ = _source0
   888  		{
   889  			if _source0.Is_AwsKmsArnIdentifier() {
   890  				var _0_a AwsArn = _source0.Get_().(AwsKmsIdentifier_AwsKmsArnIdentifier).A
   891  				_ = _0_a
   892  				return (_0_a).ToString()
   893  			}
   894  		}
   895  		{
   896  			var _1_r AwsResource = _source0.Get_().(AwsKmsIdentifier_AwsKmsRawResourceIdentifier).R
   897  			_ = _1_r
   898  			return (_1_r).ToString()
   899  		}
   900  	}
   901  }
   902  
   903  // End of datatype AwsKmsIdentifier
   904  
   905  // Definition of class AmazonDynamodbTableArn
   906  type AmazonDynamodbTableArn struct {
   907  }
   908  
   909  func New_AmazonDynamodbTableArn_() *AmazonDynamodbTableArn {
   910  	_this := AmazonDynamodbTableArn{}
   911  
   912  	return &_this
   913  }
   914  
   915  type CompanionStruct_AmazonDynamodbTableArn_ struct {
   916  }
   917  
   918  var Companion_AmazonDynamodbTableArn_ = CompanionStruct_AmazonDynamodbTableArn_{}
   919  
   920  func (*AmazonDynamodbTableArn) String() string {
   921  	return "AwsArnParsing.AmazonDynamodbTableArn"
   922  }
   923  
   924  // End of class AmazonDynamodbTableArn
   925  
   926  func Type_AmazonDynamodbTableArn_() _dafny.TypeDescriptor {
   927  	return type_AmazonDynamodbTableArn_{}
   928  }
   929  
   930  type type_AmazonDynamodbTableArn_ struct {
   931  }
   932  
   933  func (_this type_AmazonDynamodbTableArn_) Default() interface{} {
   934  	return Companion_AwsArn_.Default()
   935  }
   936  
   937  func (_this type_AmazonDynamodbTableArn_) String() string {
   938  	return "AwsArnParsing.AmazonDynamodbTableArn"
   939  }
   940  func (_this *CompanionStruct_AmazonDynamodbTableArn_) Is_(__source AwsArn) bool {
   941  	var _2_a AwsArn = (__source)
   942  	_ = _2_a
   943  	return Companion_Default___.ValidAmazonDynamodbArn(_2_a)
   944  }
   945  
   946  // Definition of class AmazonDynamodbResource
   947  type AmazonDynamodbResource struct {
   948  }
   949  
   950  func New_AmazonDynamodbResource_() *AmazonDynamodbResource {
   951  	_this := AmazonDynamodbResource{}
   952  
   953  	return &_this
   954  }
   955  
   956  type CompanionStruct_AmazonDynamodbResource_ struct {
   957  }
   958  
   959  var Companion_AmazonDynamodbResource_ = CompanionStruct_AmazonDynamodbResource_{}
   960  
   961  func (*AmazonDynamodbResource) String() string {
   962  	return "AwsArnParsing.AmazonDynamodbResource"
   963  }
   964  
   965  // End of class AmazonDynamodbResource
   966  
   967  func Type_AmazonDynamodbResource_() _dafny.TypeDescriptor {
   968  	return type_AmazonDynamodbResource_{}
   969  }
   970  
   971  type type_AmazonDynamodbResource_ struct {
   972  }
   973  
   974  func (_this type_AmazonDynamodbResource_) Default() interface{} {
   975  	return Companion_AwsResource_.Default()
   976  }
   977  
   978  func (_this type_AmazonDynamodbResource_) String() string {
   979  	return "AwsArnParsing.AmazonDynamodbResource"
   980  }
   981  func (_this *CompanionStruct_AmazonDynamodbResource_) Is_(__source AwsResource) bool {
   982  	var _3_r AwsResource = (__source)
   983  	_ = _3_r
   984  	return Companion_Default___.ValidAmazonDynamodbResource(_3_r)
   985  }
   986  
   987  // Definition of datatype AmazonDynamodbTableName
   988  type AmazonDynamodbTableName struct {
   989  	Data_AmazonDynamodbTableName_
   990  }
   991  
   992  func (_this AmazonDynamodbTableName) Get_() Data_AmazonDynamodbTableName_ {
   993  	return _this.Data_AmazonDynamodbTableName_
   994  }
   995  
   996  type Data_AmazonDynamodbTableName_ interface {
   997  	isAmazonDynamodbTableName()
   998  }
   999  
  1000  type CompanionStruct_AmazonDynamodbTableName_ struct {
  1001  }
  1002  
  1003  var Companion_AmazonDynamodbTableName_ = CompanionStruct_AmazonDynamodbTableName_{}
  1004  
  1005  type AmazonDynamodbTableName_AmazonDynamodbTableArn struct {
  1006  	A AwsArn
  1007  }
  1008  
  1009  func (AmazonDynamodbTableName_AmazonDynamodbTableArn) isAmazonDynamodbTableName() {}
  1010  
  1011  func (CompanionStruct_AmazonDynamodbTableName_) Create_AmazonDynamodbTableArn_(A AwsArn) AmazonDynamodbTableName {
  1012  	return AmazonDynamodbTableName{AmazonDynamodbTableName_AmazonDynamodbTableArn{A}}
  1013  }
  1014  
  1015  func (_this AmazonDynamodbTableName) Is_AmazonDynamodbTableArn() bool {
  1016  	_, ok := _this.Get_().(AmazonDynamodbTableName_AmazonDynamodbTableArn)
  1017  	return ok
  1018  }
  1019  
  1020  func (CompanionStruct_AmazonDynamodbTableName_) Default() AmazonDynamodbTableName {
  1021  	return Companion_AmazonDynamodbTableName_.Create_AmazonDynamodbTableArn_(Companion_AwsArn_.Default())
  1022  }
  1023  
  1024  func (_this AmazonDynamodbTableName) Dtor_a() AwsArn {
  1025  	return _this.Get_().(AmazonDynamodbTableName_AmazonDynamodbTableArn).A
  1026  }
  1027  
  1028  func (_this AmazonDynamodbTableName) String() string {
  1029  	switch data := _this.Get_().(type) {
  1030  	case nil:
  1031  		return "null"
  1032  	case AmazonDynamodbTableName_AmazonDynamodbTableArn:
  1033  		{
  1034  			return "AwsArnParsing.AmazonDynamodbTableName.AmazonDynamodbTableArn" + "(" + _dafny.String(data.A) + ")"
  1035  		}
  1036  	default:
  1037  		{
  1038  			return "<unexpected>"
  1039  		}
  1040  	}
  1041  }
  1042  
  1043  func (_this AmazonDynamodbTableName) Equals(other AmazonDynamodbTableName) bool {
  1044  	switch data1 := _this.Get_().(type) {
  1045  	case AmazonDynamodbTableName_AmazonDynamodbTableArn:
  1046  		{
  1047  			data2, ok := other.Get_().(AmazonDynamodbTableName_AmazonDynamodbTableArn)
  1048  			return ok && data1.A.Equals(data2.A)
  1049  		}
  1050  	default:
  1051  		{
  1052  			return false // unexpected
  1053  		}
  1054  	}
  1055  }
  1056  
  1057  func (_this AmazonDynamodbTableName) EqualsGeneric(other interface{}) bool {
  1058  	typed, ok := other.(AmazonDynamodbTableName)
  1059  	return ok && _this.Equals(typed)
  1060  }
  1061  
  1062  func Type_AmazonDynamodbTableName_() _dafny.TypeDescriptor {
  1063  	return type_AmazonDynamodbTableName_{}
  1064  }
  1065  
  1066  type type_AmazonDynamodbTableName_ struct {
  1067  }
  1068  
  1069  func (_this type_AmazonDynamodbTableName_) Default() interface{} {
  1070  	return Companion_AmazonDynamodbTableName_.Default()
  1071  }
  1072  
  1073  func (_this type_AmazonDynamodbTableName_) String() string {
  1074  	return "AwsArnParsing.AmazonDynamodbTableName"
  1075  }
  1076  func (_this AmazonDynamodbTableName) ParentTraits_() []*_dafny.TraitID {
  1077  	return [](*_dafny.TraitID){}
  1078  }
  1079  
  1080  var _ _dafny.TraitOffspring = AmazonDynamodbTableName{}
  1081  
  1082  func (_this AmazonDynamodbTableName) GetTableName() _dafny.Sequence {
  1083  	{
  1084  		var _source0 AmazonDynamodbTableName = _this
  1085  		_ = _source0
  1086  		{
  1087  			var _0_a AwsArn = _source0.Get_().(AmazonDynamodbTableName_AmazonDynamodbTableArn).A
  1088  			_ = _0_a
  1089  			return ((_0_a).Dtor_resource()).Dtor_value()
  1090  		}
  1091  	}
  1092  }
  1093  
  1094  // End of datatype AmazonDynamodbTableName
  1095  
  1096  // Definition of class AwsKmsIdentifierString
  1097  type AwsKmsIdentifierString struct {
  1098  }
  1099  
  1100  func New_AwsKmsIdentifierString_() *AwsKmsIdentifierString {
  1101  	_this := AwsKmsIdentifierString{}
  1102  
  1103  	return &_this
  1104  }
  1105  
  1106  type CompanionStruct_AwsKmsIdentifierString_ struct {
  1107  }
  1108  
  1109  var Companion_AwsKmsIdentifierString_ = CompanionStruct_AwsKmsIdentifierString_{}
  1110  
  1111  func (*AwsKmsIdentifierString) String() string {
  1112  	return "AwsArnParsing.AwsKmsIdentifierString"
  1113  }
  1114  
  1115  // End of class AwsKmsIdentifierString
  1116  
  1117  func Type_AwsKmsIdentifierString_() _dafny.TypeDescriptor {
  1118  	return type_AwsKmsIdentifierString_{}
  1119  }
  1120  
  1121  type type_AwsKmsIdentifierString_ struct {
  1122  }
  1123  
  1124  func (_this type_AwsKmsIdentifierString_) Default() interface{} {
  1125  	return _dafny.EmptySeq.SetString()
  1126  }
  1127  
  1128  func (_this type_AwsKmsIdentifierString_) String() string {
  1129  	return "AwsArnParsing.AwsKmsIdentifierString"
  1130  }
  1131  func (_this *CompanionStruct_AwsKmsIdentifierString_) Is_(__source _dafny.Sequence) bool {
  1132  	var _1_s _dafny.Sequence = (__source)
  1133  	_ = _1_s
  1134  	return (Companion_Default___.IsAwsKmsIdentifierString(_1_s)).Is_Success()
  1135  }