# Number of lines of code in new: 31
sub new {
my ($class, %args) = @_;
$class = ref($class) || $class;
my $validatorList = [];
$validatorList = [
new Com::Vmware::Vapi::Data::UnionValidator(
'discriminant_name' => 'category',
'case_map' => {
'BUILTIN' => ['builtin_type'],
'USER_DEFINED' => ['user_defined_type'],
'GENERIC' => ['generic_instantiation'],
}),
];
my $self = $class->SUPER::new('validator_list' => $validatorList, %args);
$self->{category} = $args{'category'};
$self->{builtin_type} = $args{'builtin_type'};
$self->{user_defined_type} = $args{'user_defined_type'};
$self->{generic_instantiation} = $args{'generic_instantiation'};
$self->set_binding_class('binding_class' => 'Com::Vmware::Vapi::Metadata::Metamodel::Type');
$self->set_binding_name('name' => 'com.vmware.vapi.metadata.metamodel.type');
$self->set_binding_field('key' => 'category', 'value' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vapi::Metadata::Metamodel', 'type_name' => 'Type::Category'));
$self->set_binding_field('key' => 'builtin_type', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vapi::Metadata::Metamodel', 'type_name' => 'Type::BuiltinType')));
$self->set_binding_field('key' => 'user_defined_type', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vapi::Metadata::Metamodel', 'type_name' => 'UserDefinedType')));
$self->set_binding_field('key' => 'generic_instantiation', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Vapi::Metadata::Metamodel', 'type_name' => 'GenericInstantiation')));
bless $self, $class;
return $self;
}