# Number of lines of code in new: 35
sub new {
my ($class, %args) = @_;
$class = ref($class) || $class;
my $validatorList = [];
$validatorList = [
new Com::Vmware::Vapi::Data::UnionValidator(
'discriminant_name' => 'type',
'case_map' => {
'IDE' => ['ide'],
'SCSI' => ['scsi'],
'SATA' => ['sata'],
}),
];
my $self = $class->SUPER::new('validator_list' => $validatorList, %args);
$self->{type} = $args{'type'};
$self->{ide} = $args{'ide'};
$self->{scsi} = $args{'scsi'};
$self->{sata} = $args{'sata'};
$self->{backing} = $args{'backing'};
$self->{new_vmdk} = $args{'new_vmdk'};
$self->set_binding_class('binding_class' => 'Com::Vmware::Vcenter::Vm::Hardware::Disk::CreateSpec');
$self->set_binding_name('name' => 'com.vmware.vcenter.vm.hardware.disk.create_spec');
$self->set_binding_field('key' => 'type', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm::Hardware', 'type_name' => 'Disk::HostBusAdapterType')));
$self->set_binding_field('key' => 'ide', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm::Hardware', 'type_name' => 'IdeAddressSpec')));
$self->set_binding_field('key' => 'scsi', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm::Hardware', 'type_name' => 'ScsiAddressSpec')));
$self->set_binding_field('key' => 'sata', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm::Hardware', 'type_name' => 'SataAddressSpec')));
$self->set_binding_field('key' => 'backing', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm::Hardware', 'type_name' => 'Disk::BackingSpec')));
$self->set_binding_field('key' => 'new_vmdk', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vcenter::Vm::Hardware', 'type_name' => 'Disk::VmdkCreateSpec')));
bless $self, $class;
return $self;
}