# Number of lines of code in new: 32
sub new {
my ($class, %args) = @_;
$class = ref($class) || $class;
my $validatorList = [];
$validatorList = [new Com::Vmware::Vapi::Data::UnionValidator(
'discriminant_name' => 'source_type',
'case_map' => {
'PULL' => ['source_endpoint'],
'NONE' => [],
'PUSH' => [],
}),
];
my $self = $class->SUPER::new('validator_list' => $validatorList, %args);
$self->{name} = $args{'name'};
$self->{source_type} = $args{'source_type'};
$self->{source_endpoint} = $args{'source_endpoint'};
$self->{size} = $args{'size'};
$self->{checksum_info} = $args{'checksum_info'};
$self->set_binding_class('binding_class' => 'Com::Vmware::Content::Library::Item::Updatesession::File::AddSpec');
$self->set_binding_name('name' => 'com.vmware.content.library.item.updatesession.file.add_spec');
$self->set_binding_field('key' => 'name', 'value' => new Com::Vmware::Vapi::Bindings::Type::StringType());
$self->set_binding_field('key' => 'source_type', 'value' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Content::Library::Item::Updatesession', 'type_name' => 'File::SourceType'));
$self->set_binding_field('key' => 'source_endpoint', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Content::Library::Item', 'type_name' => 'TransferEndpoint')));
$self->set_binding_field('key' => 'size', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::LongType()));
$self->set_binding_field('key' => 'checksum_info', 'value' => new Com::Vmware::Vapi::Bindings::Type::OptionalType('element_type' => new Com::Vmware::Vapi::Bindings::Type::ReferenceType('module_ctx' => 'Com::Vmware::Content::Library::Item', 'type_name' => 'File::ChecksumInfo')));
bless $self, $class;
return $self;
}