package UML::MetaModel::Foundation::Model_Management::Subsystem;

#################################################################

our $VERSION = do { my @r = (q$Revision: 1.5 $ =~ /\d+/g); sprintf "%d." . "%03d" x $#r, @r };

use strict;
use warnings;

use base qw(UML::MetaModel::Foundation::Model_Management::Package UML::MetaModel::Foundation::Core::Classifier);

sub __model_name { 'Foundation::Model_Management::Subsystem' }


  my $__class;
  sub __class 
{ 
  my ($self) = @_;
  
  unless ( $__class ) {
    use UML::MetaMetaModel::Util qw(Namespace_ownedElement_name_);
    $__class = Namespace_ownedElement_name_($self->__metamodel, $self->__model_name);
  }
  
  $__class;
}
sub isaSubsystem { 1 }

sub isaFoundation__Model_Management__Subsystem { 1 }

sub __validate
{
  my ($self, $x) = @_;
  
      # Use $x->isa$Class???
      UNIVERSAL::isa($x, 'UML::MetaModel::Foundation::Model_Management::Subsystem')
    ;
}

sub __typecheck
{
  my ($self, $x, $msg) = @_;
  die("typecheck: $msg: type 'UML::MetaModel::Foundation::Model_Management::Subsystem': value '$x'")  unless __validate($self, $x);
  $x;
}

sub __initialize
{
  my ($self) = @_;

  $self->UML::MetaModel::Foundation::Model_Management::Package::__initialize;
  $self->UML::MetaModel::Foundation::Core::Classifier::__initialize;

# Attribute 0x86a159c name = isInstantiable, type = Foundation::Data_Types::Boolean, multiplicity = 1

	  if ( exists $self->{'isInstantiable'} ) {
	    my $x = $self->{'isInstantiable'};
	    $self->{'isInstantiable'} = undef;
	    $self->set_isInstantiable($x);
	  } else {
	    ;
	  }
	

  $self;
}

sub __initialize_associations
{
  my ($self) = @_;

  $self->UML::MetaModel::Foundation::Model_Management::Package::__initialize_associations;
  $self->UML::MetaModel::Foundation::Core::Classifier::__initialize_associations;


  $self;
}

# Attribute 0x86a159c name = isInstantiable, type = Foundation::Data_Types::Boolean, multiplicity = 1

	  sub isInstantiable {
	    my ($self) = @_;

	    $self->{'isInstantiable'};
	  }
	  sub set_isInstantiable {
	    my ($self, $new) = @_;

	    
    $self->__autouse('UML::MetaModel::Foundation::Data_Types::Boolean')
    ->__typecheck($new, 'isInstantiable');
  ;

	    $self->{'isInstantiable'} = $new;

	    $self;
	  }
	


1;

