# Number of lines of code in new: 37
sub new {
my ($class, %args) = @_;
$class = ref($class) || $class;
my $validatorList = [];
$validatorList = [
new Com::Vmware::Vapi::Data::UnionValidator(
'discriminant_name' => 'type',
'case_map' => {
'LONG' => ['long_value'],
'STRING' => ['string_value'],
'STRING_LIST' => ['list_value'],
'STRUCTURE_REFERENCE' => ['structure_id'],
'STRUCTURE_REFERENCE_LIST' => ['structure_ids'],
}),
];
my $self = $class->SUPER::new('validator_list' => $validatorList, %args);
$self->{type} = $args{'type'};
$self->{long_value} = $args{'long_value'};
$self->{string_value} = $args{'string_value'};
$self->{list_value} = $args{'list_value'};
$self->{structure_id} = $args{'structure_id'};
$self->{structure_ids} = $args{'structure_ids'};
$self->set_binding_class('binding_class' => 'Com::Vmware::Vapi::Metadata::Metamodel::ElementValue');
$self->set_binding_name('name' => 'com.vmware.vapi.metadata.metamodel.element_value');
$self->set_binding_field('key' => 'type', 'value' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vapi::Metadata::Metamodel', 'type_name' => 'ElementValue::Type'));
$self->set_binding_field('key' => 'long_value', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::LongType()));
$self->set_binding_field('key' => 'string_value', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::StringType()));
$self->set_binding_field('key' => 'list_value', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ListType(new Com::Vmware::Vapi::Bindings::Type::StringType())));
$self->set_binding_field('key' => 'structure_id', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::StringType()));
$self->set_binding_field('key' => 'structure_ids', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ListType(new Com::Vmware::Vapi::Bindings::Type::StringType())));
bless $self, $class;
return $self;
}