VaporShell.EMR.Classes.ps1

using namespace System
using namespace System.Collections
using namespace System.Collections.Generic
using namespace System.IO
using namespace System.Management.Automation
[CmdletBinding()]
Param()

Write-Verbose "Importing class 'EMRStepHadoopJarStepConfig'"

class EMRStepHadoopJarStepConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRStepHadoopJarStepConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-hadoopjarstepconfig.html'

    hidden [object] $_args
    hidden [object] $_jar
    hidden [object] $_mainClass
    hidden [object] $_stepProperties

    [string[]] $Args
    [string] $Jar
    [string] $MainClass
    [EMRStepKeyValue[]] $StepProperties

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Args -Value {
            $this._args
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._args = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Jar -Value {
            $this._jar
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._jar = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MainClass -Value {
            $this._mainClass
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mainClass = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StepProperties -Value {
            $this._stepProperties
        } -SecondValue {
            param([ValidateType(([EMRStepKeyValue], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._stepProperties = $value
        }
    }

    EMRStepHadoopJarStepConfig() : base() {}
    EMRStepHadoopJarStepConfig([IDictionary] $props) : base($props) {}
    EMRStepHadoopJarStepConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterComputeLimits'"

class EMRClusterComputeLimits : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterComputeLimits'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-computelimits.html'

    hidden [object] $_maximumCapacityUnits
    hidden [object] $_maximumCoreCapacityUnits
    hidden [object] $_maximumOnDemandCapacityUnits
    hidden [object] $_minimumCapacityUnits
    hidden [object] $_unitType

    [int] $MaximumCapacityUnits
    [int] $MaximumCoreCapacityUnits
    [int] $MaximumOnDemandCapacityUnits
    [int] $MinimumCapacityUnits
    [string] $UnitType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumCapacityUnits -Value {
            $this._maximumCapacityUnits
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumCapacityUnits = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumCoreCapacityUnits -Value {
            $this._maximumCoreCapacityUnits
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumCoreCapacityUnits = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaximumOnDemandCapacityUnits -Value {
            $this._maximumOnDemandCapacityUnits
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maximumOnDemandCapacityUnits = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinimumCapacityUnits -Value {
            $this._minimumCapacityUnits
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minimumCapacityUnits = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UnitType -Value {
            $this._unitType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unitType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterComputeLimits() : base() {}
    EMRClusterComputeLimits([IDictionary] $props) : base($props) {}
    EMRClusterComputeLimits([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterSpotProvisioningSpecification'"

class EMRClusterSpotProvisioningSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterSpotProvisioningSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-spotprovisioningspecification.html'

    hidden [object] $_allocationStrategy
    hidden [object] $_blockDurationMinutes
    hidden [object] $_timeoutAction
    hidden [object] $_timeoutDurationMinutes

    [string] $AllocationStrategy
    [int] $BlockDurationMinutes
    [string] $TimeoutAction
    [int] $TimeoutDurationMinutes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllocationStrategy -Value {
            $this._allocationStrategy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allocationStrategy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BlockDurationMinutes -Value {
            $this._blockDurationMinutes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._blockDurationMinutes = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutAction -Value {
            $this._timeoutAction
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutAction = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutDurationMinutes -Value {
            $this._timeoutDurationMinutes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutDurationMinutes = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRClusterSpotProvisioningSpecification() : base() {}
    EMRClusterSpotProvisioningSpecification([IDictionary] $props) : base($props) {}
    EMRClusterSpotProvisioningSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterBootstrapActionConfig'"

class EMRClusterBootstrapActionConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterBootstrapActionConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-bootstrapactionconfig.html'

    hidden [object] $_name
    hidden [object] $_scriptBootstrapAction

    [string] $Name
    [EMRClusterScriptBootstrapActionConfig] $ScriptBootstrapAction

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScriptBootstrapAction -Value {
            $this._scriptBootstrapAction
        } -SecondValue {
            param([ValidateType(([EMRClusterScriptBootstrapActionConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scriptBootstrapAction = $value
        }
    }

    EMRClusterBootstrapActionConfig() : base() {}
    EMRClusterBootstrapActionConfig([IDictionary] $props) : base($props) {}
    EMRClusterBootstrapActionConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterStepConfig'"

class EMRClusterStepConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterStepConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-stepconfig.html'

    hidden [object] $_actionOnFailure
    hidden [object] $_hadoopJarStep
    hidden [object] $_name

    [string] $ActionOnFailure
    [EMRClusterHadoopJarStepConfig] $HadoopJarStep
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ActionOnFailure -Value {
            $this._actionOnFailure
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._actionOnFailure = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HadoopJarStep -Value {
            $this._hadoopJarStep
        } -SecondValue {
            param([ValidateType(([EMRClusterHadoopJarStepConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hadoopJarStep = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterStepConfig() : base() {}
    EMRClusterStepConfig([IDictionary] $props) : base($props) {}
    EMRClusterStepConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterEbsBlockDeviceConfig'"

class EMRClusterEbsBlockDeviceConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterEbsBlockDeviceConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsblockdeviceconfig.html'

    hidden [object] $_volumeSpecification
    hidden [object] $_volumesPerInstance

    [EMRClusterVolumeSpecification] $VolumeSpecification
    [int] $VolumesPerInstance

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeSpecification -Value {
            $this._volumeSpecification
        } -SecondValue {
            param([ValidateType(([EMRClusterVolumeSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumesPerInstance -Value {
            $this._volumesPerInstance
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumesPerInstance = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRClusterEbsBlockDeviceConfig() : base() {}
    EMRClusterEbsBlockDeviceConfig([IDictionary] $props) : base($props) {}
    EMRClusterEbsBlockDeviceConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterManagedScalingPolicy'"

class EMRClusterManagedScalingPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterManagedScalingPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-managedscalingpolicy.html'

    hidden [object] $_computeLimits

    [EMRClusterComputeLimits] $ComputeLimits

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComputeLimits -Value {
            $this._computeLimits
        } -SecondValue {
            param([ValidateType(([EMRClusterComputeLimits], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._computeLimits = $value
        }
    }

    EMRClusterManagedScalingPolicy() : base() {}
    EMRClusterManagedScalingPolicy([IDictionary] $props) : base($props) {}
    EMRClusterManagedScalingPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterCloudWatchAlarmDefinition'"

class EMRClusterCloudWatchAlarmDefinition : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterCloudWatchAlarmDefinition'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-cloudwatchalarmdefinition.html'

    hidden [object] $_comparisonOperator
    hidden [object] $_dimensions
    hidden [object] $_evaluationPeriods
    hidden [object] $_metricName
    hidden [object] $_namespace
    hidden [object] $_period
    hidden [object] $_statistic
    hidden [object] $_threshold
    hidden [object] $_unit

    [string] $ComparisonOperator
    [EMRClusterMetricDimension[]] $Dimensions
    [int] $EvaluationPeriods
    [string] $MetricName
    [string] $Namespace
    [int] $Period
    [string] $Statistic
    [double] $Threshold
    [string] $Unit

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComparisonOperator -Value {
            $this._comparisonOperator
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comparisonOperator = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Dimensions -Value {
            $this._dimensions
        } -SecondValue {
            param([ValidateType(([EMRClusterMetricDimension], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dimensions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EvaluationPeriods -Value {
            $this._evaluationPeriods
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._evaluationPeriods = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricName -Value {
            $this._metricName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Namespace -Value {
            $this._namespace
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._namespace = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Period -Value {
            $this._period
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._period = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statistic -Value {
            $this._statistic
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statistic = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Threshold -Value {
            $this._threshold
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._threshold = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Unit -Value {
            $this._unit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterCloudWatchAlarmDefinition() : base() {}
    EMRClusterCloudWatchAlarmDefinition([IDictionary] $props) : base($props) {}
    EMRClusterCloudWatchAlarmDefinition([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterKeyValue'"

class EMRClusterKeyValue : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterKeyValue'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-keyvalue.html'

    hidden [object] $_key
    hidden [object] $_value

    [string] $Key
    [string] $Value

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterKeyValue() : base() {}
    EMRClusterKeyValue([IDictionary] $props) : base($props) {}
    EMRClusterKeyValue([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterVolumeSpecification'"

class EMRClusterVolumeSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterVolumeSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-volumespecification.html'

    hidden [object] $_iops
    hidden [object] $_sizeInGB
    hidden [object] $_volumeType

    [int] $Iops
    [int] $SizeInGB
    [string] $VolumeType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Iops -Value {
            $this._iops
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iops = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SizeInGB -Value {
            $this._sizeInGB
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sizeInGB = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeType -Value {
            $this._volumeType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterVolumeSpecification() : base() {}
    EMRClusterVolumeSpecification([IDictionary] $props) : base($props) {}
    EMRClusterVolumeSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterInstanceFleetProvisioningSpecifications'"

class EMRClusterInstanceFleetProvisioningSpecifications : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterInstanceFleetProvisioningSpecifications'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetprovisioningspecifications.html'

    hidden [object] $_onDemandSpecification
    hidden [object] $_spotSpecification

    [EMRClusterOnDemandProvisioningSpecification] $OnDemandSpecification
    [EMRClusterSpotProvisioningSpecification] $SpotSpecification

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnDemandSpecification -Value {
            $this._onDemandSpecification
        } -SecondValue {
            param([ValidateType(([EMRClusterOnDemandProvisioningSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onDemandSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SpotSpecification -Value {
            $this._spotSpecification
        } -SecondValue {
            param([ValidateType(([EMRClusterSpotProvisioningSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._spotSpecification = $value
        }
    }

    EMRClusterInstanceFleetProvisioningSpecifications() : base() {}
    EMRClusterInstanceFleetProvisioningSpecifications([IDictionary] $props) : base($props) {}
    EMRClusterInstanceFleetProvisioningSpecifications([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigAutoScalingPolicy'"

class EMRInstanceGroupConfigAutoScalingPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigAutoScalingPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-autoscalingpolicy.html'

    hidden [object] $_constraints
    hidden [object] $_rules

    [EMRInstanceGroupConfigScalingConstraints] $Constraints
    [EMRInstanceGroupConfigScalingRule[]] $Rules

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Constraints -Value {
            $this._constraints
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigScalingConstraints], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._constraints = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Rules -Value {
            $this._rules
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigScalingRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._rules = $value
        }
    }

    EMRInstanceGroupConfigAutoScalingPolicy() : base() {}
    EMRInstanceGroupConfigAutoScalingPolicy([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigAutoScalingPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigConfiguration'"

class EMRInstanceGroupConfigConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-cluster-configuration.html'

    hidden [object] $_classification
    hidden [object] $_configurationProperties
    hidden [object] $_configurations

    [string] $Classification
    [string] $ConfigurationProperties
    [EMRInstanceGroupConfigConfiguration[]] $Configurations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Classification -Value {
            $this._classification
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._classification = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConfigurationProperties -Value {
            $this._configurationProperties
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._configurationProperties = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Configurations -Value {
            $this._configurations
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._configurations = $value
        }
    }

    EMRInstanceGroupConfigConfiguration() : base() {}
    EMRInstanceGroupConfigConfiguration([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterInstanceGroupConfig'"

class EMRClusterInstanceGroupConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterInstanceGroupConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancegroupconfig.html'

    hidden [object] $_autoScalingPolicy
    hidden [object] $_bidPrice
    hidden [object] $_configurations
    hidden [object] $_ebsConfiguration
    hidden [object] $_instanceCount
    hidden [object] $_instanceType
    hidden [object] $_market
    hidden [object] $_name

    [EMRClusterAutoScalingPolicy] $AutoScalingPolicy
    [string] $BidPrice
    [EMRClusterConfiguration[]] $Configurations
    [EMRClusterEbsConfiguration] $EbsConfiguration
    [int] $InstanceCount
    [string] $InstanceType
    [string] $Market
    [string] $Name

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoScalingPolicy -Value {
            $this._autoScalingPolicy
        } -SecondValue {
            param([ValidateType(([EMRClusterAutoScalingPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._autoScalingPolicy = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BidPrice -Value {
            $this._bidPrice
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bidPrice = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Configurations -Value {
            $this._configurations
        } -SecondValue {
            param([ValidateType(([EMRClusterConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._configurations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsConfiguration -Value {
            $this._ebsConfiguration
        } -SecondValue {
            param([ValidateType(([EMRClusterEbsConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ebsConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceCount -Value {
            $this._instanceCount
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceCount = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this._instanceType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Market -Value {
            $this._market
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._market = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterInstanceGroupConfig() : base() {}
    EMRClusterInstanceGroupConfig([IDictionary] $props) : base($props) {}
    EMRClusterInstanceGroupConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigMetricDimension'"

class EMRInstanceGroupConfigMetricDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigMetricDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-metricdimension.html'

    hidden [object] $_key
    hidden [object] $_value

    [string] $Key
    [string] $Value

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRInstanceGroupConfigMetricDimension() : base() {}
    EMRInstanceGroupConfigMetricDimension([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigMetricDimension([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceFleetConfigConfiguration'"

class EMRInstanceFleetConfigConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceFleetConfigConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-configuration.html'

    hidden [object] $_classification
    hidden [object] $_configurationProperties
    hidden [object] $_configurations

    [string] $Classification
    [string] $ConfigurationProperties
    [EMRInstanceFleetConfigConfiguration[]] $Configurations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Classification -Value {
            $this._classification
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._classification = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConfigurationProperties -Value {
            $this._configurationProperties
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._configurationProperties = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Configurations -Value {
            $this._configurations
        } -SecondValue {
            param([ValidateType(([EMRInstanceFleetConfigConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._configurations = $value
        }
    }

    EMRInstanceFleetConfigConfiguration() : base() {}
    EMRInstanceFleetConfigConfiguration([IDictionary] $props) : base($props) {}
    EMRInstanceFleetConfigConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterKerberosAttributes'"

class EMRClusterKerberosAttributes : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterKerberosAttributes'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-kerberosattributes.html'

    hidden [object] $_aDDomainJoinPassword
    hidden [object] $_aDDomainJoinUser
    hidden [object] $_crossRealmTrustPrincipalPassword
    hidden [object] $_kdcAdminPassword
    hidden [object] $_realm

    [string] $ADDomainJoinPassword
    [string] $ADDomainJoinUser
    [string] $CrossRealmTrustPrincipalPassword
    [string] $KdcAdminPassword
    [string] $Realm

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ADDomainJoinPassword -Value {
            $this._aDDomainJoinPassword
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aDDomainJoinPassword = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ADDomainJoinUser -Value {
            $this._aDDomainJoinUser
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._aDDomainJoinUser = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CrossRealmTrustPrincipalPassword -Value {
            $this._crossRealmTrustPrincipalPassword
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._crossRealmTrustPrincipalPassword = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KdcAdminPassword -Value {
            $this._kdcAdminPassword
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._kdcAdminPassword = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Realm -Value {
            $this._realm
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._realm = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterKerberosAttributes() : base() {}
    EMRClusterKerberosAttributes([IDictionary] $props) : base($props) {}
    EMRClusterKerberosAttributes([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigSimpleScalingPolicyConfiguration'"

class EMRInstanceGroupConfigSimpleScalingPolicyConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigSimpleScalingPolicyConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-simplescalingpolicyconfiguration.html'

    hidden [object] $_adjustmentType
    hidden [object] $_coolDown
    hidden [object] $_scalingAdjustment

    [string] $AdjustmentType
    [int] $CoolDown
    [int] $ScalingAdjustment

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdjustmentType -Value {
            $this._adjustmentType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._adjustmentType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CoolDown -Value {
            $this._coolDown
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._coolDown = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingAdjustment -Value {
            $this._scalingAdjustment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scalingAdjustment = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRInstanceGroupConfigSimpleScalingPolicyConfiguration() : base() {}
    EMRInstanceGroupConfigSimpleScalingPolicyConfiguration([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigSimpleScalingPolicyConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterApplication'"

class EMRClusterApplication : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterApplication'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-application.html'

    hidden [object] $_additionalInfo
    hidden [object] $_args
    hidden [object] $_name
    hidden [object] $_version

    [string] $AdditionalInfo
    [string[]] $Args
    [string] $Name
    [string] $Version

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdditionalInfo -Value {
            $this._additionalInfo
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._additionalInfo = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Args -Value {
            $this._args
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._args = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Version -Value {
            $this._version
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._version = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterApplication() : base() {}
    EMRClusterApplication([IDictionary] $props) : base($props) {}
    EMRClusterApplication([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigScalingRule'"

class EMRInstanceGroupConfigScalingRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigScalingRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingrule.html'

    hidden [object] $_action
    hidden [object] $_description
    hidden [object] $_name
    hidden [object] $_trigger

    [EMRInstanceGroupConfigScalingAction] $Action
    [string] $Description
    [string] $Name
    [EMRInstanceGroupConfigScalingTrigger] $Trigger

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigScalingAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this._description
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._description = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Trigger -Value {
            $this._trigger
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigScalingTrigger], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._trigger = $value
        }
    }

    EMRInstanceGroupConfigScalingRule() : base() {}
    EMRInstanceGroupConfigScalingRule([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigScalingRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterConfiguration'"

class EMRClusterConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-configuration.html'

    hidden [object] $_classification
    hidden [object] $_configurationProperties
    hidden [object] $_configurations

    [string] $Classification
    [string] $ConfigurationProperties
    [EMRClusterConfiguration[]] $Configurations

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Classification -Value {
            $this._classification
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._classification = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ConfigurationProperties -Value {
            $this._configurationProperties
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._configurationProperties = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Configurations -Value {
            $this._configurations
        } -SecondValue {
            param([ValidateType(([EMRClusterConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._configurations = $value
        }
    }

    EMRClusterConfiguration() : base() {}
    EMRClusterConfiguration([IDictionary] $props) : base($props) {}
    EMRClusterConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceFleetConfigInstanceTypeConfig'"

class EMRInstanceFleetConfigInstanceTypeConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceFleetConfigInstanceTypeConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancetypeconfig.html'

    hidden [object] $_bidPrice
    hidden [object] $_bidPriceAsPercentageOfOnDemandPrice
    hidden [object] $_configurations
    hidden [object] $_ebsConfiguration
    hidden [object] $_instanceType
    hidden [object] $_weightedCapacity

    [string] $BidPrice
    [double] $BidPriceAsPercentageOfOnDemandPrice
    [EMRInstanceFleetConfigConfiguration[]] $Configurations
    [EMRInstanceFleetConfigEbsConfiguration] $EbsConfiguration
    [string] $InstanceType
    [int] $WeightedCapacity

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name BidPrice -Value {
            $this._bidPrice
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bidPrice = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BidPriceAsPercentageOfOnDemandPrice -Value {
            $this._bidPriceAsPercentageOfOnDemandPrice
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bidPriceAsPercentageOfOnDemandPrice = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Configurations -Value {
            $this._configurations
        } -SecondValue {
            param([ValidateType(([EMRInstanceFleetConfigConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._configurations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsConfiguration -Value {
            $this._ebsConfiguration
        } -SecondValue {
            param([ValidateType(([EMRInstanceFleetConfigEbsConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ebsConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this._instanceType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeightedCapacity -Value {
            $this._weightedCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._weightedCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRInstanceFleetConfigInstanceTypeConfig() : base() {}
    EMRInstanceFleetConfigInstanceTypeConfig([IDictionary] $props) : base($props) {}
    EMRInstanceFleetConfigInstanceTypeConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterScriptBootstrapActionConfig'"

class EMRClusterScriptBootstrapActionConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterScriptBootstrapActionConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scriptbootstrapactionconfig.html'

    hidden [object] $_args
    hidden [object] $_path

    [string[]] $Args
    [string] $Path

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Args -Value {
            $this._args
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._args = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Path -Value {
            $this._path
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._path = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterScriptBootstrapActionConfig() : base() {}
    EMRClusterScriptBootstrapActionConfig([IDictionary] $props) : base($props) {}
    EMRClusterScriptBootstrapActionConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigCloudWatchAlarmDefinition'"

class EMRInstanceGroupConfigCloudWatchAlarmDefinition : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigCloudWatchAlarmDefinition'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-cloudwatchalarmdefinition.html'

    hidden [object] $_comparisonOperator
    hidden [object] $_dimensions
    hidden [object] $_evaluationPeriods
    hidden [object] $_metricName
    hidden [object] $_namespace
    hidden [object] $_period
    hidden [object] $_statistic
    hidden [object] $_threshold
    hidden [object] $_unit

    [string] $ComparisonOperator
    [EMRInstanceGroupConfigMetricDimension[]] $Dimensions
    [int] $EvaluationPeriods
    [string] $MetricName
    [string] $Namespace
    [int] $Period
    [string] $Statistic
    [double] $Threshold
    [string] $Unit

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name ComparisonOperator -Value {
            $this._comparisonOperator
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._comparisonOperator = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Dimensions -Value {
            $this._dimensions
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigMetricDimension], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._dimensions = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EvaluationPeriods -Value {
            $this._evaluationPeriods
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._evaluationPeriods = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MetricName -Value {
            $this._metricName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._metricName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Namespace -Value {
            $this._namespace
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._namespace = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Period -Value {
            $this._period
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._period = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Statistic -Value {
            $this._statistic
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._statistic = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Threshold -Value {
            $this._threshold
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._threshold = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Unit -Value {
            $this._unit
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._unit = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRInstanceGroupConfigCloudWatchAlarmDefinition() : base() {}
    EMRInstanceGroupConfigCloudWatchAlarmDefinition([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigCloudWatchAlarmDefinition([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterEbsConfiguration'"

class EMRClusterEbsConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterEbsConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ebsconfiguration.html'

    hidden [object] $_ebsBlockDeviceConfigs
    hidden [object] $_ebsOptimized

    [EMRClusterEbsBlockDeviceConfig[]] $EbsBlockDeviceConfigs
    [bool] $EbsOptimized

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsBlockDeviceConfigs -Value {
            $this._ebsBlockDeviceConfigs
        } -SecondValue {
            param([ValidateType(([EMRClusterEbsBlockDeviceConfig], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ebsBlockDeviceConfigs = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsOptimized -Value {
            $this._ebsOptimized
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ebsOptimized = $value
        }
    }

    EMRClusterEbsConfiguration() : base() {}
    EMRClusterEbsConfiguration([IDictionary] $props) : base($props) {}
    EMRClusterEbsConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterInstanceTypeConfig'"

class EMRClusterInstanceTypeConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterInstanceTypeConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancetypeconfig.html'

    hidden [object] $_bidPrice
    hidden [object] $_bidPriceAsPercentageOfOnDemandPrice
    hidden [object] $_configurations
    hidden [object] $_ebsConfiguration
    hidden [object] $_instanceType
    hidden [object] $_weightedCapacity

    [string] $BidPrice
    [double] $BidPriceAsPercentageOfOnDemandPrice
    [EMRClusterConfiguration[]] $Configurations
    [EMRClusterEbsConfiguration] $EbsConfiguration
    [string] $InstanceType
    [int] $WeightedCapacity

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name BidPrice -Value {
            $this._bidPrice
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bidPrice = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BidPriceAsPercentageOfOnDemandPrice -Value {
            $this._bidPriceAsPercentageOfOnDemandPrice
        } -SecondValue {
            param([ValidateType(([double], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._bidPriceAsPercentageOfOnDemandPrice = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Configurations -Value {
            $this._configurations
        } -SecondValue {
            param([ValidateType(([EMRClusterConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._configurations = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsConfiguration -Value {
            $this._ebsConfiguration
        } -SecondValue {
            param([ValidateType(([EMRClusterEbsConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ebsConfiguration = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this._instanceType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._instanceType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WeightedCapacity -Value {
            $this._weightedCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._weightedCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRClusterInstanceTypeConfig() : base() {}
    EMRClusterInstanceTypeConfig([IDictionary] $props) : base($props) {}
    EMRClusterInstanceTypeConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterMetricDimension'"

class EMRClusterMetricDimension : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterMetricDimension'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-metricdimension.html'

    hidden [object] $_key
    hidden [object] $_value

    [string] $Key
    [string] $Value

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterMetricDimension() : base() {}
    EMRClusterMetricDimension([IDictionary] $props) : base($props) {}
    EMRClusterMetricDimension([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterOnDemandProvisioningSpecification'"

class EMRClusterOnDemandProvisioningSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterOnDemandProvisioningSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-ondemandprovisioningspecification.html'

    hidden [object] $_allocationStrategy

    [string] $AllocationStrategy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllocationStrategy -Value {
            $this._allocationStrategy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allocationStrategy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterOnDemandProvisioningSpecification() : base() {}
    EMRClusterOnDemandProvisioningSpecification([IDictionary] $props) : base($props) {}
    EMRClusterOnDemandProvisioningSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterScalingTrigger'"

class EMRClusterScalingTrigger : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterScalingTrigger'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingtrigger.html'

    hidden [object] $_cloudWatchAlarmDefinition

    [EMRClusterCloudWatchAlarmDefinition] $CloudWatchAlarmDefinition

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudWatchAlarmDefinition -Value {
            $this._cloudWatchAlarmDefinition
        } -SecondValue {
            param([ValidateType(([EMRClusterCloudWatchAlarmDefinition], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudWatchAlarmDefinition = $value
        }
    }

    EMRClusterScalingTrigger() : base() {}
    EMRClusterScalingTrigger([IDictionary] $props) : base($props) {}
    EMRClusterScalingTrigger([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigEbsBlockDeviceConfig'"

class EMRInstanceGroupConfigEbsBlockDeviceConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigEbsBlockDeviceConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig.html'

    hidden [object] $_volumeSpecification
    hidden [object] $_volumesPerInstance

    [EMRInstanceGroupConfigVolumeSpecification] $VolumeSpecification
    [int] $VolumesPerInstance

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeSpecification -Value {
            $this._volumeSpecification
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigVolumeSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumesPerInstance -Value {
            $this._volumesPerInstance
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumesPerInstance = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRInstanceGroupConfigEbsBlockDeviceConfig() : base() {}
    EMRInstanceGroupConfigEbsBlockDeviceConfig([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigEbsBlockDeviceConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceFleetConfigSpotProvisioningSpecification'"

class EMRInstanceFleetConfigSpotProvisioningSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceFleetConfigSpotProvisioningSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-spotprovisioningspecification.html'

    hidden [object] $_allocationStrategy
    hidden [object] $_blockDurationMinutes
    hidden [object] $_timeoutAction
    hidden [object] $_timeoutDurationMinutes

    [string] $AllocationStrategy
    [int] $BlockDurationMinutes
    [string] $TimeoutAction
    [int] $TimeoutDurationMinutes

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllocationStrategy -Value {
            $this._allocationStrategy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allocationStrategy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BlockDurationMinutes -Value {
            $this._blockDurationMinutes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._blockDurationMinutes = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutAction -Value {
            $this._timeoutAction
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutAction = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TimeoutDurationMinutes -Value {
            $this._timeoutDurationMinutes
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._timeoutDurationMinutes = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRInstanceFleetConfigSpotProvisioningSpecification() : base() {}
    EMRInstanceFleetConfigSpotProvisioningSpecification([IDictionary] $props) : base($props) {}
    EMRInstanceFleetConfigSpotProvisioningSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterInstanceFleetConfig'"

class EMRClusterInstanceFleetConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterInstanceFleetConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-instancefleetconfig.html'

    hidden [object] $_instanceTypeConfigs
    hidden [object] $_launchSpecifications
    hidden [object] $_name
    hidden [object] $_targetOnDemandCapacity
    hidden [object] $_targetSpotCapacity

    [EMRClusterInstanceTypeConfig[]] $InstanceTypeConfigs
    [EMRClusterInstanceFleetProvisioningSpecifications] $LaunchSpecifications
    [string] $Name
    [int] $TargetOnDemandCapacity
    [int] $TargetSpotCapacity

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceTypeConfigs -Value {
            $this._instanceTypeConfigs
        } -SecondValue {
            param([ValidateType(([EMRClusterInstanceTypeConfig], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._instanceTypeConfigs = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchSpecifications -Value {
            $this._launchSpecifications
        } -SecondValue {
            param([ValidateType(([EMRClusterInstanceFleetProvisioningSpecifications], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._launchSpecifications = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetOnDemandCapacity -Value {
            $this._targetOnDemandCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetOnDemandCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetSpotCapacity -Value {
            $this._targetSpotCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._targetSpotCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRClusterInstanceFleetConfig() : base() {}
    EMRClusterInstanceFleetConfig([IDictionary] $props) : base($props) {}
    EMRClusterInstanceFleetConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterJobFlowInstancesConfig'"

class EMRClusterJobFlowInstancesConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterJobFlowInstancesConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-jobflowinstancesconfig.html'

    hidden [object] $_additionalMasterSecurityGroups
    hidden [object] $_additionalSlaveSecurityGroups
    hidden [object] $_coreInstanceFleet
    hidden [object] $_coreInstanceGroup
    hidden [object] $_ec2KeyName
    hidden [object] $_ec2SubnetId
    hidden [object] $_ec2SubnetIds
    hidden [object] $_emrManagedMasterSecurityGroup
    hidden [object] $_emrManagedSlaveSecurityGroup
    hidden [object] $_hadoopVersion
    hidden [object] $_keepJobFlowAliveWhenNoSteps
    hidden [object] $_masterInstanceFleet
    hidden [object] $_masterInstanceGroup
    hidden [object] $_placement
    hidden [object] $_serviceAccessSecurityGroup
    hidden [object] $_terminationProtected

    [string[]] $AdditionalMasterSecurityGroups
    [string[]] $AdditionalSlaveSecurityGroups
    [EMRClusterInstanceFleetConfig] $CoreInstanceFleet
    [EMRClusterInstanceGroupConfig] $CoreInstanceGroup
    [string] $Ec2KeyName
    [string] $Ec2SubnetId
    [string[]] $Ec2SubnetIds
    [string] $EmrManagedMasterSecurityGroup
    [string] $EmrManagedSlaveSecurityGroup
    [string] $HadoopVersion
    [bool] $KeepJobFlowAliveWhenNoSteps
    [EMRClusterInstanceFleetConfig] $MasterInstanceFleet
    [EMRClusterInstanceGroupConfig] $MasterInstanceGroup
    [EMRClusterPlacementType] $Placement
    [string] $ServiceAccessSecurityGroup
    [bool] $TerminationProtected

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdditionalMasterSecurityGroups -Value {
            $this._additionalMasterSecurityGroups
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._additionalMasterSecurityGroups = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdditionalSlaveSecurityGroups -Value {
            $this._additionalSlaveSecurityGroups
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._additionalSlaveSecurityGroups = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CoreInstanceFleet -Value {
            $this._coreInstanceFleet
        } -SecondValue {
            param([ValidateType(([EMRClusterInstanceFleetConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._coreInstanceFleet = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CoreInstanceGroup -Value {
            $this._coreInstanceGroup
        } -SecondValue {
            param([ValidateType(([EMRClusterInstanceGroupConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._coreInstanceGroup = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ec2KeyName -Value {
            $this._ec2KeyName
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ec2KeyName = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ec2SubnetId -Value {
            $this._ec2SubnetId
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ec2SubnetId = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Ec2SubnetIds -Value {
            $this._ec2SubnetIds
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ec2SubnetIds = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EmrManagedMasterSecurityGroup -Value {
            $this._emrManagedMasterSecurityGroup
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._emrManagedMasterSecurityGroup = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EmrManagedSlaveSecurityGroup -Value {
            $this._emrManagedSlaveSecurityGroup
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._emrManagedSlaveSecurityGroup = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HadoopVersion -Value {
            $this._hadoopVersion
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._hadoopVersion = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KeepJobFlowAliveWhenNoSteps -Value {
            $this._keepJobFlowAliveWhenNoSteps
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._keepJobFlowAliveWhenNoSteps = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MasterInstanceFleet -Value {
            $this._masterInstanceFleet
        } -SecondValue {
            param([ValidateType(([EMRClusterInstanceFleetConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._masterInstanceFleet = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MasterInstanceGroup -Value {
            $this._masterInstanceGroup
        } -SecondValue {
            param([ValidateType(([EMRClusterInstanceGroupConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._masterInstanceGroup = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Placement -Value {
            $this._placement
        } -SecondValue {
            param([ValidateType(([EMRClusterPlacementType], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._placement = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceAccessSecurityGroup -Value {
            $this._serviceAccessSecurityGroup
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._serviceAccessSecurityGroup = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TerminationProtected -Value {
            $this._terminationProtected
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._terminationProtected = $value
        }
    }

    EMRClusterJobFlowInstancesConfig() : base() {}
    EMRClusterJobFlowInstancesConfig([IDictionary] $props) : base($props) {}
    EMRClusterJobFlowInstancesConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRStepKeyValue'"

class EMRStepKeyValue : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRStepKeyValue'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-step-keyvalue.html'

    hidden [object] $_key
    hidden [object] $_value

    [string] $Key
    [string] $Value

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Key -Value {
            $this._key
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._key = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Value -Value {
            $this._value
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._value = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRStepKeyValue() : base() {}
    EMRStepKeyValue([IDictionary] $props) : base($props) {}
    EMRStepKeyValue([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceFleetConfigEbsConfiguration'"

class EMRInstanceFleetConfigEbsConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceFleetConfigEbsConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsconfiguration.html'

    hidden [object] $_ebsBlockDeviceConfigs
    hidden [object] $_ebsOptimized

    [EMRInstanceFleetConfigEbsBlockDeviceConfig[]] $EbsBlockDeviceConfigs
    [bool] $EbsOptimized

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsBlockDeviceConfigs -Value {
            $this._ebsBlockDeviceConfigs
        } -SecondValue {
            param([ValidateType(([EMRInstanceFleetConfigEbsBlockDeviceConfig], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ebsBlockDeviceConfigs = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsOptimized -Value {
            $this._ebsOptimized
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ebsOptimized = $value
        }
    }

    EMRInstanceFleetConfigEbsConfiguration() : base() {}
    EMRInstanceFleetConfigEbsConfiguration([IDictionary] $props) : base($props) {}
    EMRInstanceFleetConfigEbsConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigScalingAction'"

class EMRInstanceGroupConfigScalingAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigScalingAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingaction.html'

    hidden [object] $_market
    hidden [object] $_simpleScalingPolicyConfiguration

    [string] $Market
    [EMRInstanceGroupConfigSimpleScalingPolicyConfiguration] $SimpleScalingPolicyConfiguration

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Market -Value {
            $this._market
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._market = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SimpleScalingPolicyConfiguration -Value {
            $this._simpleScalingPolicyConfiguration
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigSimpleScalingPolicyConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._simpleScalingPolicyConfiguration = $value
        }
    }

    EMRInstanceGroupConfigScalingAction() : base() {}
    EMRInstanceGroupConfigScalingAction([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigScalingAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigScalingTrigger'"

class EMRInstanceGroupConfigScalingTrigger : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigScalingTrigger'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingtrigger.html'

    hidden [object] $_cloudWatchAlarmDefinition

    [EMRInstanceGroupConfigCloudWatchAlarmDefinition] $CloudWatchAlarmDefinition

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name CloudWatchAlarmDefinition -Value {
            $this._cloudWatchAlarmDefinition
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigCloudWatchAlarmDefinition], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._cloudWatchAlarmDefinition = $value
        }
    }

    EMRInstanceGroupConfigScalingTrigger() : base() {}
    EMRInstanceGroupConfigScalingTrigger([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigScalingTrigger([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceFleetConfigOnDemandProvisioningSpecification'"

class EMRInstanceFleetConfigOnDemandProvisioningSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceFleetConfigOnDemandProvisioningSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ondemandprovisioningspecification.html'

    hidden [object] $_allocationStrategy

    [string] $AllocationStrategy

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AllocationStrategy -Value {
            $this._allocationStrategy
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._allocationStrategy = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRInstanceFleetConfigOnDemandProvisioningSpecification() : base() {}
    EMRInstanceFleetConfigOnDemandProvisioningSpecification([IDictionary] $props) : base($props) {}
    EMRInstanceFleetConfigOnDemandProvisioningSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigVolumeSpecification'"

class EMRInstanceGroupConfigVolumeSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigVolumeSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration-ebsblockdeviceconfig-volumespecification.html'

    hidden [object] $_iops
    hidden [object] $_sizeInGB
    hidden [object] $_volumeType

    [int] $Iops
    [int] $SizeInGB
    [string] $VolumeType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Iops -Value {
            $this._iops
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iops = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SizeInGB -Value {
            $this._sizeInGB
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sizeInGB = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeType -Value {
            $this._volumeType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRInstanceGroupConfigVolumeSpecification() : base() {}
    EMRInstanceGroupConfigVolumeSpecification([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigVolumeSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigEbsConfiguration'"

class EMRInstanceGroupConfigEbsConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigEbsConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-emr-ebsconfiguration.html'

    hidden [object] $_ebsBlockDeviceConfigs
    hidden [object] $_ebsOptimized

    [EMRInstanceGroupConfigEbsBlockDeviceConfig[]] $EbsBlockDeviceConfigs
    [bool] $EbsOptimized

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsBlockDeviceConfigs -Value {
            $this._ebsBlockDeviceConfigs
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigEbsBlockDeviceConfig], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._ebsBlockDeviceConfigs = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsOptimized -Value {
            $this._ebsOptimized
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._ebsOptimized = $value
        }
    }

    EMRInstanceGroupConfigEbsConfiguration() : base() {}
    EMRInstanceGroupConfigEbsConfiguration([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigEbsConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceFleetConfigVolumeSpecification'"

class EMRInstanceFleetConfigVolumeSpecification : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceFleetConfigVolumeSpecification'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-volumespecification.html'

    hidden [object] $_iops
    hidden [object] $_sizeInGB
    hidden [object] $_volumeType

    [int] $Iops
    [int] $SizeInGB
    [string] $VolumeType

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Iops -Value {
            $this._iops
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._iops = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SizeInGB -Value {
            $this._sizeInGB
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._sizeInGB = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeType -Value {
            $this._volumeType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRInstanceFleetConfigVolumeSpecification() : base() {}
    EMRInstanceFleetConfigVolumeSpecification([IDictionary] $props) : base($props) {}
    EMRInstanceFleetConfigVolumeSpecification([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterScalingConstraints'"

class EMRClusterScalingConstraints : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterScalingConstraints'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingconstraints.html'

    hidden [object] $_maxCapacity
    hidden [object] $_minCapacity

    [int] $MaxCapacity
    [int] $MinCapacity

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxCapacity -Value {
            $this._maxCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinCapacity -Value {
            $this._minCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRClusterScalingConstraints() : base() {}
    EMRClusterScalingConstraints([IDictionary] $props) : base($props) {}
    EMRClusterScalingConstraints([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterScalingAction'"

class EMRClusterScalingAction : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterScalingAction'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingaction.html'

    hidden [object] $_market
    hidden [object] $_simpleScalingPolicyConfiguration

    [string] $Market
    [EMRClusterSimpleScalingPolicyConfiguration] $SimpleScalingPolicyConfiguration

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Market -Value {
            $this._market
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._market = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SimpleScalingPolicyConfiguration -Value {
            $this._simpleScalingPolicyConfiguration
        } -SecondValue {
            param([ValidateType(([EMRClusterSimpleScalingPolicyConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._simpleScalingPolicyConfiguration = $value
        }
    }

    EMRClusterScalingAction() : base() {}
    EMRClusterScalingAction([IDictionary] $props) : base($props) {}
    EMRClusterScalingAction([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterSimpleScalingPolicyConfiguration'"

class EMRClusterSimpleScalingPolicyConfiguration : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterSimpleScalingPolicyConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-simplescalingpolicyconfiguration.html'

    hidden [object] $_adjustmentType
    hidden [object] $_coolDown
    hidden [object] $_scalingAdjustment

    [string] $AdjustmentType
    [int] $CoolDown
    [int] $ScalingAdjustment

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdjustmentType -Value {
            $this._adjustmentType
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._adjustmentType = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CoolDown -Value {
            $this._coolDown
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._coolDown = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScalingAdjustment -Value {
            $this._scalingAdjustment
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._scalingAdjustment = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRClusterSimpleScalingPolicyConfiguration() : base() {}
    EMRClusterSimpleScalingPolicyConfiguration([IDictionary] $props) : base($props) {}
    EMRClusterSimpleScalingPolicyConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterPlacementType'"

class EMRClusterPlacementType : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterPlacementType'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-placementtype.html'

    hidden [object] $_availabilityZone

    [string] $AvailabilityZone

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name AvailabilityZone -Value {
            $this._availabilityZone
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._availabilityZone = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
    }

    EMRClusterPlacementType() : base() {}
    EMRClusterPlacementType([IDictionary] $props) : base($props) {}
    EMRClusterPlacementType([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfigScalingConstraints'"

class EMRInstanceGroupConfigScalingConstraints : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceGroupConfigScalingConstraints'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancegroupconfig-scalingconstraints.html'

    hidden [object] $_maxCapacity
    hidden [object] $_minCapacity

    [int] $MaxCapacity
    [int] $MinCapacity

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name MaxCapacity -Value {
            $this._maxCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._maxCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MinCapacity -Value {
            $this._minCapacity
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._minCapacity = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRInstanceGroupConfigScalingConstraints() : base() {}
    EMRInstanceGroupConfigScalingConstraints([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfigScalingConstraints([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterScalingRule'"

class EMRClusterScalingRule : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterScalingRule'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-scalingrule.html'

    hidden [object] $_action
    hidden [object] $_description
    hidden [object] $_name
    hidden [object] $_trigger

    [EMRClusterScalingAction] $Action
    [string] $Description
    [string] $Name
    [EMRClusterScalingTrigger] $Trigger

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Action -Value {
            $this._action
        } -SecondValue {
            param([ValidateType(([EMRClusterScalingAction], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._action = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this._description
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._description = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this._name
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._name = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Trigger -Value {
            $this._trigger
        } -SecondValue {
            param([ValidateType(([EMRClusterScalingTrigger], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._trigger = $value
        }
    }

    EMRClusterScalingRule() : base() {}
    EMRClusterScalingRule([IDictionary] $props) : base($props) {}
    EMRClusterScalingRule([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications'"

class EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceFleetConfigInstanceFleetProvisioningSpecifications'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-instancefleetprovisioningspecifications.html'

    hidden [object] $_onDemandSpecification
    hidden [object] $_spotSpecification

    [EMRInstanceFleetConfigOnDemandProvisioningSpecification] $OnDemandSpecification
    [EMRInstanceFleetConfigSpotProvisioningSpecification] $SpotSpecification

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name OnDemandSpecification -Value {
            $this._onDemandSpecification
        } -SecondValue {
            param([ValidateType(([EMRInstanceFleetConfigOnDemandProvisioningSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._onDemandSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SpotSpecification -Value {
            $this._spotSpecification
        } -SecondValue {
            param([ValidateType(([EMRInstanceFleetConfigSpotProvisioningSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._spotSpecification = $value
        }
    }

    EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications() : base() {}
    EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications([IDictionary] $props) : base($props) {}
    EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterAutoScalingPolicy'"

class EMRClusterAutoScalingPolicy : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterAutoScalingPolicy'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-autoscalingpolicy.html'

    hidden [object] $_constraints
    hidden [object] $_rules

    [EMRClusterScalingConstraints] $Constraints
    [EMRClusterScalingRule[]] $Rules

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Constraints -Value {
            $this._constraints
        } -SecondValue {
            param([ValidateType(([EMRClusterScalingConstraints], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._constraints = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Rules -Value {
            $this._rules
        } -SecondValue {
            param([ValidateType(([EMRClusterScalingRule], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._rules = $value
        }
    }

    EMRClusterAutoScalingPolicy() : base() {}
    EMRClusterAutoScalingPolicy([IDictionary] $props) : base($props) {}
    EMRClusterAutoScalingPolicy([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceFleetConfigEbsBlockDeviceConfig'"

class EMRInstanceFleetConfigEbsBlockDeviceConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRInstanceFleetConfigEbsBlockDeviceConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-instancefleetconfig-ebsblockdeviceconfig.html'

    hidden [object] $_volumeSpecification
    hidden [object] $_volumesPerInstance

    [EMRInstanceFleetConfigVolumeSpecification] $VolumeSpecification
    [int] $VolumesPerInstance

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumeSpecification -Value {
            $this._volumeSpecification
        } -SecondValue {
            param([ValidateType(([EMRInstanceFleetConfigVolumeSpecification], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumeSpecification = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VolumesPerInstance -Value {
            $this._volumesPerInstance
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._volumesPerInstance = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
    }

    EMRInstanceFleetConfigEbsBlockDeviceConfig() : base() {}
    EMRInstanceFleetConfigEbsBlockDeviceConfig([IDictionary] $props) : base($props) {}
    EMRInstanceFleetConfigEbsBlockDeviceConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRClusterHadoopJarStepConfig'"

class EMRClusterHadoopJarStepConfig : VSResourceProperty {
    hidden [string] $_vsFunctionName = 'Add-VSEMRClusterHadoopJarStepConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-elasticmapreduce-cluster-hadoopjarstepconfig.html'

    hidden [object] $_args
    hidden [object] $_jar
    hidden [object] $_mainClass
    hidden [object] $_stepProperties

    [string[]] $Args
    [string] $Jar
    [string] $MainClass
    [EMRClusterKeyValue[]] $StepProperties

    hidden [void] _addAccessors() {
        $this | Add-Member -Force -MemberType ScriptProperty -Name Args -Value {
            $this._args
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._args = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Jar -Value {
            $this._jar
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._jar = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name MainClass -Value {
            $this._mainClass
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this._mainClass = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StepProperties -Value {
            $this._stepProperties
        } -SecondValue {
            param([ValidateType(([EMRClusterKeyValue], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this._stepProperties = $value
        }
    }

    EMRClusterHadoopJarStepConfig() : base() {}
    EMRClusterHadoopJarStepConfig([IDictionary] $props) : base($props) {}
    EMRClusterHadoopJarStepConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceGroupConfig'"

class EMRInstanceGroupConfig : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEMRInstanceGroupConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-instancegroupconfig.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::EMR::InstanceGroupConfig'
    [EMRInstanceGroupConfigAutoScalingPolicy] $AutoScalingPolicy
    [string] $BidPrice
    [EMRInstanceGroupConfigConfiguration[]] $Configurations
    [EMRInstanceGroupConfigEbsConfiguration] $EbsConfiguration
    [int] $InstanceCount
    [string] $InstanceRole
    [string] $InstanceType
    [string] $JobFlowId
    [string] $Market
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoScalingPolicy -Value {
            $this.Properties['AutoScalingPolicy']
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigAutoScalingPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoScalingPolicy'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BidPrice -Value {
            $this.Properties['BidPrice']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['BidPrice'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Configurations -Value {
            $this.Properties['Configurations']
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Configurations'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsConfiguration -Value {
            $this.Properties['EbsConfiguration']
        } -SecondValue {
            param([ValidateType(([EMRInstanceGroupConfigEbsConfiguration], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EbsConfiguration'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceCount -Value {
            $this.Properties['InstanceCount']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceCount'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceRole -Value {
            $this.Properties['InstanceRole']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceRole'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceType -Value {
            $this.Properties['InstanceType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name JobFlowId -Value {
            $this.Properties['JobFlowId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['JobFlowId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Market -Value {
            $this.Properties['Market']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Market'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    EMRInstanceGroupConfig() : base() {}
    EMRInstanceGroupConfig([IDictionary] $props) : base($props) {}
    EMRInstanceGroupConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRSecurityConfiguration'"

class EMRSecurityConfiguration : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEMRSecurityConfiguration'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-securityconfiguration.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::EMR::SecurityConfiguration'
    [string] $Name
    [VSJson] $SecurityConfiguration
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityConfiguration -Value {
            $this.Properties['SecurityConfiguration']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['SecurityConfiguration'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['SecurityConfiguration']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    EMRSecurityConfiguration() : base() {}
    EMRSecurityConfiguration([IDictionary] $props) : base($props) {}
    EMRSecurityConfiguration([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRCluster'"

class EMRCluster : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEMRCluster'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-cluster.html'

    hidden [string[]] $_attributes = @('MasterPublicDNS')
    hidden [object] $_condition

    [string] $Type = 'AWS::EMR::Cluster'
    [VSJson] $AdditionalInfo
    [EMRClusterApplication[]] $Applications
    [string] $AutoScalingRole
    [EMRClusterBootstrapActionConfig[]] $BootstrapActions
    [EMRClusterConfiguration[]] $Configurations
    [string] $CustomAmiId
    [int] $EbsRootVolumeSize
    [EMRClusterJobFlowInstancesConfig] $Instances
    [string] $JobFlowRole
    [EMRClusterKerberosAttributes] $KerberosAttributes
    [string] $LogEncryptionKmsKeyId
    [string] $LogUri
    [EMRClusterManagedScalingPolicy] $ManagedScalingPolicy
    [string] $Name
    [string] $ReleaseLabel
    [string] $ScaleDownBehavior
    [string] $SecurityConfiguration
    [string] $ServiceRole
    [int] $StepConcurrencyLevel
    [EMRClusterStepConfig[]] $Steps
    [VSTag[]] $Tags
    [bool] $VisibleToAllUsers
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AdditionalInfo -Value {
            $this.Properties['AdditionalInfo']
        } -SecondValue {
            param([ValidateType(([string], [VSJson], [VSYaml], [psobject], [IDictionary]))][object] $value)
            $this.Properties['AdditionalInfo'] = [VSJson]::Transform($value)
            Write-Debug $this.Properties['AdditionalInfo']
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Applications -Value {
            $this.Properties['Applications']
        } -SecondValue {
            param([ValidateType(([EMRClusterApplication], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Applications'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name AutoScalingRole -Value {
            $this.Properties['AutoScalingRole']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AutoScalingRole'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name BootstrapActions -Value {
            $this.Properties['BootstrapActions']
        } -SecondValue {
            param([ValidateType(([EMRClusterBootstrapActionConfig], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['BootstrapActions'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Configurations -Value {
            $this.Properties['Configurations']
        } -SecondValue {
            param([ValidateType(([EMRClusterConfiguration], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Configurations'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name CustomAmiId -Value {
            $this.Properties['CustomAmiId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['CustomAmiId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EbsRootVolumeSize -Value {
            $this.Properties['EbsRootVolumeSize']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EbsRootVolumeSize'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Instances -Value {
            $this.Properties['Instances']
        } -SecondValue {
            param([ValidateType(([EMRClusterJobFlowInstancesConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Instances'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name JobFlowRole -Value {
            $this.Properties['JobFlowRole']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['JobFlowRole'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name KerberosAttributes -Value {
            $this.Properties['KerberosAttributes']
        } -SecondValue {
            param([ValidateType(([EMRClusterKerberosAttributes], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['KerberosAttributes'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogEncryptionKmsKeyId -Value {
            $this.Properties['LogEncryptionKmsKeyId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LogEncryptionKmsKeyId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LogUri -Value {
            $this.Properties['LogUri']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LogUri'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ManagedScalingPolicy -Value {
            $this.Properties['ManagedScalingPolicy']
        } -SecondValue {
            param([ValidateType(([EMRClusterManagedScalingPolicy], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ManagedScalingPolicy'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ReleaseLabel -Value {
            $this.Properties['ReleaseLabel']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ReleaseLabel'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ScaleDownBehavior -Value {
            $this.Properties['ScaleDownBehavior']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ScaleDownBehavior'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SecurityConfiguration -Value {
            $this.Properties['SecurityConfiguration']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SecurityConfiguration'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceRole -Value {
            $this.Properties['ServiceRole']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceRole'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StepConcurrencyLevel -Value {
            $this.Properties['StepConcurrencyLevel']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StepConcurrencyLevel'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Steps -Value {
            $this.Properties['Steps']
        } -SecondValue {
            param([ValidateType(([EMRClusterStepConfig], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['Steps'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VisibleToAllUsers -Value {
            $this.Properties['VisibleToAllUsers']
        } -SecondValue {
            param([ValidateType(([bool], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VisibleToAllUsers'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    EMRCluster() : base() {}
    EMRCluster([IDictionary] $props) : base($props) {}
    EMRCluster([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRStudioSessionMapping'"

class EMRStudioSessionMapping : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEMRStudioSessionMapping'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-studiosessionmapping.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::EMR::StudioSessionMapping'
    [string] $IdentityName
    [string] $IdentityType
    [string] $SessionPolicyArn
    [string] $StudioId
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name IdentityName -Value {
            $this.Properties['IdentityName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IdentityName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IdentityType -Value {
            $this.Properties['IdentityType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IdentityType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SessionPolicyArn -Value {
            $this.Properties['SessionPolicyArn']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['SessionPolicyArn'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name StudioId -Value {
            $this.Properties['StudioId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['StudioId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    EMRStudioSessionMapping() : base() {}
    EMRStudioSessionMapping([IDictionary] $props) : base($props) {}
    EMRStudioSessionMapping([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRInstanceFleetConfig'"

class EMRInstanceFleetConfig : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEMRInstanceFleetConfig'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticmapreduce-instancefleetconfig.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::EMR::InstanceFleetConfig'
    [string] $ClusterId
    [string] $InstanceFleetType
    [EMRInstanceFleetConfigInstanceTypeConfig[]] $InstanceTypeConfigs
    [EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications] $LaunchSpecifications
    [string] $Name
    [int] $TargetOnDemandCapacity
    [int] $TargetSpotCapacity
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ClusterId -Value {
            $this.Properties['ClusterId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ClusterId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceFleetType -Value {
            $this.Properties['InstanceFleetType']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['InstanceFleetType'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name InstanceTypeConfigs -Value {
            $this.Properties['InstanceTypeConfigs']
        } -SecondValue {
            param([ValidateType(([EMRInstanceFleetConfigInstanceTypeConfig], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['InstanceTypeConfigs'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name LaunchSpecifications -Value {
            $this.Properties['LaunchSpecifications']
        } -SecondValue {
            param([ValidateType(([EMRInstanceFleetConfigInstanceFleetProvisioningSpecifications], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['LaunchSpecifications'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetOnDemandCapacity -Value {
            $this.Properties['TargetOnDemandCapacity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetOnDemandCapacity'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name TargetSpotCapacity -Value {
            $this.Properties['TargetSpotCapacity']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['TargetSpotCapacity'] = if ($cast = $value -as [int]) {
                $cast
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    EMRInstanceFleetConfig() : base() {}
    EMRInstanceFleetConfig([IDictionary] $props) : base($props) {}
    EMRInstanceFleetConfig([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRStep'"

class EMRStep : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEMRStep'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-step.html'

    hidden [object] $_condition

    [string] $Type = 'AWS::EMR::Step'
    [string] $ActionOnFailure
    [EMRStepHadoopJarStepConfig] $HadoopJarStep
    [string] $JobFlowId
    [string] $Name
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name ActionOnFailure -Value {
            $this.Properties['ActionOnFailure']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ActionOnFailure'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name HadoopJarStep -Value {
            $this.Properties['HadoopJarStep']
        } -SecondValue {
            param([ValidateType(([EMRStepHadoopJarStepConfig], [string], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['HadoopJarStep'] = $value
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name JobFlowId -Value {
            $this.Properties['JobFlowId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['JobFlowId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    EMRStep() : base() {}
    EMRStep([IDictionary] $props) : base($props) {}
    EMRStep([psobject] $props) : base($props) {}
}

Write-Verbose "Importing class 'EMRStudio'"

class EMRStudio : VSResource {
    hidden [string] $_vsFunctionName = 'New-VSEMRStudio'
    hidden [string] $_awsDocumentation = 'http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-emr-studio.html'

    hidden [string[]] $_attributes = @('Arn','StudioId','Url')
    hidden [object] $_condition

    [string] $Type = 'AWS::EMR::Studio'
    [string] $AuthMode
    [string] $DefaultS3Location
    [string] $Description
    [string] $EngineSecurityGroupId
    [string] $Name
    [string] $ServiceRole
    [string[]] $SubnetIds
    [VSTag[]] $Tags
    [string] $UserRole
    [string] $VpcId
    [string] $WorkspaceSecurityGroupId
    [string] $IdpAuthUrl
    [string] $IdpRelayStateParameterName
    [VSJson] $Metadata
    [UpdatePolicy] $UpdatePolicy
    [string] $Condition

    hidden [void] _addAccessors() {
        $this._addBaseAccessors()
        $this | Add-Member -Force -MemberType ScriptProperty -Name AuthMode -Value {
            $this.Properties['AuthMode']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['AuthMode'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name DefaultS3Location -Value {
            $this.Properties['DefaultS3Location']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['DefaultS3Location'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Description -Value {
            $this.Properties['Description']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Description'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name EngineSecurityGroupId -Value {
            $this.Properties['EngineSecurityGroupId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['EngineSecurityGroupId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Name -Value {
            $this.Properties['Name']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['Name'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name ServiceRole -Value {
            $this.Properties['ServiceRole']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['ServiceRole'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name SubnetIds -Value {
            $this.Properties['SubnetIds']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object[]] $value)
            $this.Properties['SubnetIds'] = @($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Tags -Value {
            $this.Properties['Tags']
        } -SecondValue {
            param([TransformTag()] [ValidateType(([IDictionary], [psobject], [VSTag]))] [object] $value)
            $this.Properties['Tags'] = [VSTag]::TransformTag($value)
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name UserRole -Value {
            $this.Properties['UserRole']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['UserRole'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name VpcId -Value {
            $this.Properties['VpcId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['VpcId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name WorkspaceSecurityGroupId -Value {
            $this.Properties['WorkspaceSecurityGroupId']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['WorkspaceSecurityGroupId'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IdpAuthUrl -Value {
            $this.Properties['IdpAuthUrl']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IdpAuthUrl'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name IdpRelayStateParameterName -Value {
            $this.Properties['IdpRelayStateParameterName']
        } -SecondValue {
            param([ValidateType(([string], [int], [IntrinsicFunction], [ConditionFunction]))] [object] $value)
            $this.Properties['IdpRelayStateParameterName'] = if ($value -is [int]) {
                $value.ToString()
            }
            else {
                $value
            }
        }
        $this | Add-Member -Force -MemberType ScriptProperty -Name Condition -Value {
            $this._condition
        } -SecondValue {
            param(
                [ValidateType(([string], [IntrinsicFunction], [ConditionFunction]))] [object]
                $value
            )
            $this._condition = $value
        }
    }

    EMRStudio() : base() {}
    EMRStudio([IDictionary] $props) : base($props) {}
    EMRStudio([psobject] $props) : base($props) {}
}