UMMF::UML_1_5::Foundation::Core::ModelElement - UMMF::UML_1_5::Foundation::Core::ModelElement documentation


UMMF documentation Contained in the UMMF distribution.

Index


Code Index:

NAME

Top

UMMF::UML_1_5::Foundation::Core::ModelElement --

VERSION

Top

1.5

SYNOPSIS

Top

DESCRIPTION

Top

USAGE

Top

EXPORT

Top

METATYPE

Top

UMMF::UML_1_5::Foundation::Core::Class

SUPERCLASSES

Top

UMMF::UML_1_5::Foundation::Core::Element

ATTRIBUTES

Top

name : UMMF::UML_1_5::Foundation::Data_Types::Name

metatype = UMMF::UML_1_5::Foundation::Core::Attribute
type = UMMF::UML_1_5::Foundation::Data_Types::Name
visibility = private
multiplicity = 1
changeability = changeable
targetScope = instance
ordering = unordered
initialValue = UNSPECIFIED
container_type = Set::Object

visibility : UMMF::UML_1_5::Foundation::Data_Types::VisibilityKind

metatype = UMMF::UML_1_5::Foundation::Core::Attribute
type = UMMF::UML_1_5::Foundation::Data_Types::VisibilityKind
visibility = private
multiplicity = 1
changeability = changeable
targetScope = instance
ordering = unordered
initialValue = <"public">
container_type = Set::Object

isSpecification : UMMF::UML_1_5::Foundation::Data_Types::Boolean

metatype = UMMF::UML_1_5::Foundation::Core::Attribute
type = UMMF::UML_1_5::Foundation::Data_Types::Boolean
visibility = private
multiplicity = 1
changeability = changeable
targetScope = instance
ordering = unordered
initialValue = <"false">
container_type = Set::Object

ASSOCIATIONS

Top

context : THIS 0..1 <---> behavior : UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

client : THIS 1..* <---> clientDependency : UMMF::UML_1_5::Foundation::Core::Dependency 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::Dependency
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

constrainingElement : THIS 0..* <---> collaborationInstanceSet_constrainingElement : UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet (UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet)
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = private
container_type = Set::Object

constrainingElement : THIS 0..* <---> collaboration_constrainingElement : UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration (UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration)
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = aggregate
visibility = private
container_type = Set::Object

annotatedElement : THIS 0..* <---> comment : UMMF::UML_1_5::Foundation::Core::Comment 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::Comment
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = private
container_type = Set::Object

constrainedElement : THIS 0..1 <---> constraint : UMMF::UML_1_5::Foundation::Core::Constraint 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::Constraint
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

resident : THIS 0..* <---> container : UMMF::UML_1_5::Foundation::Core::Component 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::Component
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

ownedElement : THIS 0..* <---> namespace : UMMF::UML_1_5::Foundation::Core::Namespace 0..1

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::Namespace
multiplicity = 0..1
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = composite
visibility = public
container_type = Set::Object

ownedElement : THIS 1 <---> namespace_AC : UMMF::UML_1_5::Foundation::Core::ElementOwnership 0..1

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::ElementOwnership
multiplicity = 0..1
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = composite
visibility = public
container_type = Set::Object

importedElement : THIS 0..* <---> package : UMMF::UML_1_5::Model_Management::Package 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Model_Management::Package
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = private
container_type = Set::Object

importedElement : THIS 1 <---> package_AC : UMMF::UML_1_5::Model_Management::ElementImport 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Model_Management::ElementImport
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

contents : THIS 0..* <---> partition_contents : UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = private
container_type = Set::Object

subject : THIS 0..* <---> presentation : UMMF::UML_1_5::Foundation::Core::PresentationElement 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::PresentationElement
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

referenceValue : THIS 0..* <---> referenceTag : UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

source : THIS 0..* <---> sourceFlow : UMMF::UML_1_5::Foundation::Core::Flow 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::Flow
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

extendedElement : THIS 0..* <---> stereotype : UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

supplier : THIS 1..* <---> supplierDependency : UMMF::UML_1_5::Foundation::Core::Dependency 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::Dependency
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

modelElement : THIS 1 <---> taggedValue : UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

target : THIS 0..* <---> targetFlow : UMMF::UML_1_5::Foundation::Core::Flow 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::Flow
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = public
container_type = Set::Object

templateParameter : THIS 0..* <---> template : UMMF::UML_1_5::Foundation::Core::ModelElement 0..1

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::ModelElement
multiplicity = 0..1
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = composite
visibility = public
container_type = Set::Object

modelElement : THIS 1 <---> templateArgument : UMMF::UML_1_5::Foundation::Core::TemplateArgument 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::TemplateArgument
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = private
container_type = Set::Object

template : THIS 0..1 <---> templateParameter : UMMF::UML_1_5::Foundation::Core::ModelElement 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::ModelElement
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering = ordered
isNavigable = 1
aggregation = none
visibility = public
container_type = ARRAY

template : THIS 1 <---> templateParameter_AC : UMMF::UML_1_5::Foundation::Core::TemplateParameter 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::TemplateParameter
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering = ordered
isNavigable = 1
aggregation = none
visibility = public
container_type = ARRAY

defaultElement : THIS 0..1 <---> templateParameter_defaultElement : UMMF::UML_1_5::Foundation::Core::TemplateParameter 0..*

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::TemplateParameter
multiplicity = 0..*
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = none
visibility = private
container_type = Set::Object

templateParameter : THIS 1 <---> template_AC : UMMF::UML_1_5::Foundation::Core::TemplateParameter 0..1

metatype = UMMF::UML_1_5::Foundation::Core::AssociationEnd
type = UMMF::UML_1_5::Foundation::Core::TemplateParameter
multiplicity = 0..1
changeability = changeable
targetScope = instance
ordering =
isNavigable = 1
aggregation = composite
visibility = public
container_type = Set::Object

METHODS

Top

__validate_type

  UMMF::UML_1_5::Foundation::Core::ModelElement->__validate_type($value);

Returns true if $value is a valid representation of UMMF::UML_1_5::Foundation::Core::ModelElement.

__typecheck

  UMMF::UML_1_5::Foundation::Core::ModelElement->__typecheck($value, $msg);

Calls confess() with $msg if <UMMF::UML_1_5::Foundation::Core::ModelElement-__validate_type($value)>> is false.

isaModelElement

Returns true if receiver is a UMMF::UML_1_5::Foundation::Core::ModelElement. Other receivers will return false.

isaFoundation__Core__ModelElement

Returns true if receiver is a UMMF::UML_1_5::Foundation::Core::ModelElement. Other receivers will return false. This is the fully qualified version of the isaModelElement method.

__model_name

  my $name = $obj_or_package->__model_name;

Returns the UML Model name ('Foundation::Core::ModelElement') for an object or package of this Classifier.

__isAbstract

  $package->__isAbstract;

Returns 1.

__tangram_schema

  my $tangram_schema $obj_or_package->__tangram_schema

Returns a HASH ref that describes this Classifier for Tangram.

See UMMF::Export::Perl::Tangram

___initialize

Initialize all Attributes and AssociationEnds in a instance of this Classifier. Does not initalize slots in its Generalizations.

See also: __initialize.

__initialize

Initialize all slots in this Classifier and all its Generalizations.

See also: ___initialize.

__create

Calls all <<create>> Methods for this Classifier and all Generalizations.

See also: ___create.

name

  my $val = $obj->name;

Returns the UMMF::UML_1_5::Foundation::Data_Types::Name value of Attribute name.

set_name

  $obj->set_name($val);

Sets the value of Attribute name. $val must be of type UMMF::UML_1_5::Foundation::Data_Types::Name or undef. Returns $obj.

count_name

  $obj->count_name;

Returns the number of elements (0 or 1) in name.

visibility

  my $val = $obj->visibility;

Returns the UMMF::UML_1_5::Foundation::Data_Types::VisibilityKind value of Attribute visibility.

set_visibility

  $obj->set_visibility($val);

Sets the value of Attribute visibility. $val must be of type UMMF::UML_1_5::Foundation::Data_Types::VisibilityKind or undef. Returns $obj.

count_visibility

  $obj->count_visibility;

Returns the number of elements (0 or 1) in visibility.

isSpecification

  my $val = $obj->isSpecification;

Returns the UMMF::UML_1_5::Foundation::Data_Types::Boolean value of Attribute isSpecification.

set_isSpecification

  $obj->set_isSpecification($val);

Sets the value of Attribute isSpecification. $val must be of type UMMF::UML_1_5::Foundation::Data_Types::Boolean or undef. Returns $obj.

count_isSpecification

  $obj->count_isSpecification;

Returns the number of elements (0 or 1) in isSpecification.

behavior

  my @val = $obj->behavior;
  my $ary_val = $obj->behavior;

Returns the AssociationEnd behavior values of type UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_behavior

  $obj->set_behavior(@val);

Sets the AssociationEnd behavior value. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine. Returns $obj.

add_behavior

  $obj->add_behavior(@val);

Adds AssociationEnd behavior values. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine. Returns $obj.

remove_behavior

  $obj->remove_behavior(@val);

Removes the AssociationEnd behavior values @val. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine. Returns $obj.

clear_behavior

  $obj->clear_behavior;

Clears the AssociationEnd behavior links to UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine. Returns $obj.

count_behavior

  $obj->count_behavior;

Returns the number of elements associated with behavior.

clientDependency

  my @val = $obj->clientDependency;
  my $ary_val = $obj->clientDependency;

Returns the AssociationEnd clientDependency values of type UMMF::UML_1_5::Foundation::Core::Dependency. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_clientDependency

  $obj->set_clientDependency(@val);

Sets the AssociationEnd clientDependency value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Dependency. Returns $obj.

add_clientDependency

  $obj->add_clientDependency(@val);

Adds AssociationEnd clientDependency values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Dependency. Returns $obj.

remove_clientDependency

  $obj->remove_clientDependency(@val);

Removes the AssociationEnd clientDependency values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Dependency. Returns $obj.

clear_clientDependency

  $obj->clear_clientDependency;

Clears the AssociationEnd clientDependency links to UMMF::UML_1_5::Foundation::Core::Dependency. Returns $obj.

count_clientDependency

  $obj->count_clientDependency;

Returns the number of elements associated with clientDependency.

collaborationInstanceSet_constrainingElement

  my @val = $obj->collaborationInstanceSet_constrainingElement;
  my $ary_val = $obj->collaborationInstanceSet_constrainingElement;

Returns the AssociationEnd collaborationInstanceSet_constrainingElement values of type UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet (UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet). In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_collaborationInstanceSet_constrainingElement

  $obj->set_collaborationInstanceSet_constrainingElement(@val);

Sets the AssociationEnd collaborationInstanceSet_constrainingElement value. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet (UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet). Returns $obj.

add_collaborationInstanceSet_constrainingElement

  $obj->add_collaborationInstanceSet_constrainingElement(@val);

Adds AssociationEnd collaborationInstanceSet_constrainingElement values. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet (UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet). Returns $obj.

remove_collaborationInstanceSet_constrainingElement

  $obj->remove_collaborationInstanceSet_constrainingElement(@val);

Removes the AssociationEnd collaborationInstanceSet_constrainingElement values @val. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet (UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet). Returns $obj.

clear_collaborationInstanceSet_constrainingElement

  $obj->clear_collaborationInstanceSet_constrainingElement;

Clears the AssociationEnd collaborationInstanceSet_constrainingElement links to UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet (UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet). Returns $obj.

count_collaborationInstanceSet_constrainingElement

  $obj->count_collaborationInstanceSet_constrainingElement;

Returns the number of elements associated with collaborationInstanceSet_constrainingElement.

collaboration_constrainingElement

  my @val = $obj->collaboration_constrainingElement;
  my $ary_val = $obj->collaboration_constrainingElement;

Returns the AssociationEnd collaboration_constrainingElement values of type UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration (UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration). In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_collaboration_constrainingElement

  $obj->set_collaboration_constrainingElement(@val);

Sets the AssociationEnd collaboration_constrainingElement value. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration (UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration). Returns $obj.

add_collaboration_constrainingElement

  $obj->add_collaboration_constrainingElement(@val);

Adds AssociationEnd collaboration_constrainingElement values. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration (UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration). Returns $obj.

remove_collaboration_constrainingElement

  $obj->remove_collaboration_constrainingElement(@val);

Removes the AssociationEnd collaboration_constrainingElement values @val. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration (UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration). Returns $obj.

clear_collaboration_constrainingElement

  $obj->clear_collaboration_constrainingElement;

Clears the AssociationEnd collaboration_constrainingElement links to UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration (UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration). Returns $obj.

count_collaboration_constrainingElement

  $obj->count_collaboration_constrainingElement;

Returns the number of elements associated with collaboration_constrainingElement.

comment

  my @val = $obj->comment;
  my $ary_val = $obj->comment;

Returns the AssociationEnd comment values of type UMMF::UML_1_5::Foundation::Core::Comment. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_comment

  $obj->set_comment(@val);

Sets the AssociationEnd comment value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Comment. Returns $obj.

add_comment

  $obj->add_comment(@val);

Adds AssociationEnd comment values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Comment. Returns $obj.

remove_comment

  $obj->remove_comment(@val);

Removes the AssociationEnd comment values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Comment. Returns $obj.

clear_comment

  $obj->clear_comment;

Clears the AssociationEnd comment links to UMMF::UML_1_5::Foundation::Core::Comment. Returns $obj.

count_comment

  $obj->count_comment;

Returns the number of elements associated with comment.

constraint

  my @val = $obj->constraint;
  my $ary_val = $obj->constraint;

Returns the AssociationEnd constraint values of type UMMF::UML_1_5::Foundation::Core::Constraint. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_constraint

  $obj->set_constraint(@val);

Sets the AssociationEnd constraint value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Constraint. Returns $obj.

add_constraint

  $obj->add_constraint(@val);

Adds AssociationEnd constraint values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Constraint. Returns $obj.

remove_constraint

  $obj->remove_constraint(@val);

Removes the AssociationEnd constraint values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Constraint. Returns $obj.

clear_constraint

  $obj->clear_constraint;

Clears the AssociationEnd constraint links to UMMF::UML_1_5::Foundation::Core::Constraint. Returns $obj.

count_constraint

  $obj->count_constraint;

Returns the number of elements associated with constraint.

container

  my @val = $obj->container;
  my $ary_val = $obj->container;

Returns the AssociationEnd container values of type UMMF::UML_1_5::Foundation::Core::Component. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_container

  $obj->set_container(@val);

Sets the AssociationEnd container value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Component. Returns $obj.

add_container

  $obj->add_container(@val);

Adds AssociationEnd container values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Component. Returns $obj.

remove_container

  $obj->remove_container(@val);

Removes the AssociationEnd container values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Component. Returns $obj.

clear_container

  $obj->clear_container;

Clears the AssociationEnd container links to UMMF::UML_1_5::Foundation::Core::Component. Returns $obj.

count_container

  $obj->count_container;

Returns the number of elements associated with container.

namespace

  my $val = $obj->namespace;

Returns the AssociationEnd namespace value of type UMMF::UML_1_5::Foundation::Core::Namespace.

set_namespace

  $obj->set_namespace($val);

Sets the AssociationEnd namespace value. $val must of type UMMF::UML_1_5::Foundation::Core::Namespace. Returns $obj.

add_namespace

  $obj->add_namespace($val);

Adds the AssociationEnd namespace value. $val must of type UMMF::UML_1_5::Foundation::Core::Namespace. Throws exception if a value already exists. Returns $obj.

remove_namespace

  $obj->remove_namespace($val);

Removes the AssociationEnd namespace value $val. Returns $obj.

clear_namespace

  $obj->clear_namespace;

Clears the AssociationEnd namespace links to UMMF::UML_1_5::Foundation::Core::Namespace. Returns $obj.

count_namespace

  $obj->count_namespace;

Returns the number of elements of type UMMF::UML_1_5::Foundation::Core::Namespace associated with namespace.

namespace_AC

  my $val = $obj->namespace_AC;

Returns the AssociationEnd namespace_AC value of type UMMF::UML_1_5::Foundation::Core::ElementOwnership.

set_namespace_AC

  $obj->set_namespace_AC($val);

Sets the AssociationEnd namespace_AC value. $val must of type UMMF::UML_1_5::Foundation::Core::ElementOwnership. Returns $obj.

add_namespace_AC

  $obj->add_namespace_AC($val);

Adds the AssociationEnd namespace_AC value. $val must of type UMMF::UML_1_5::Foundation::Core::ElementOwnership. Throws exception if a value already exists. Returns $obj.

remove_namespace_AC

  $obj->remove_namespace_AC($val);

Removes the AssociationEnd namespace_AC value $val. Returns $obj.

clear_namespace_AC

  $obj->clear_namespace_AC;

Clears the AssociationEnd namespace_AC links to UMMF::UML_1_5::Foundation::Core::ElementOwnership. Returns $obj.

count_namespace_AC

  $obj->count_namespace_AC;

Returns the number of elements of type UMMF::UML_1_5::Foundation::Core::ElementOwnership associated with namespace_AC.

package

  my @val = $obj->package;
  my $ary_val = $obj->package;

Returns the AssociationEnd package values of type UMMF::UML_1_5::Model_Management::Package. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_package

  $obj->set_package(@val);

Sets the AssociationEnd package value. Elements of @val must of type UMMF::UML_1_5::Model_Management::Package. Returns $obj.

add_package

  $obj->add_package(@val);

Adds AssociationEnd package values. Elements of @val must of type UMMF::UML_1_5::Model_Management::Package. Returns $obj.

remove_package

  $obj->remove_package(@val);

Removes the AssociationEnd package values @val. Elements of @val must of type UMMF::UML_1_5::Model_Management::Package. Returns $obj.

clear_package

  $obj->clear_package;

Clears the AssociationEnd package links to UMMF::UML_1_5::Model_Management::Package. Returns $obj.

count_package

  $obj->count_package;

Returns the number of elements associated with package.

package_AC

  my @val = $obj->package_AC;
  my $ary_val = $obj->package_AC;

Returns the AssociationEnd package_AC values of type UMMF::UML_1_5::Model_Management::ElementImport. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_package_AC

  $obj->set_package_AC(@val);

Sets the AssociationEnd package_AC value. Elements of @val must of type UMMF::UML_1_5::Model_Management::ElementImport. Returns $obj.

add_package_AC

  $obj->add_package_AC(@val);

Adds AssociationEnd package_AC values. Elements of @val must of type UMMF::UML_1_5::Model_Management::ElementImport. Returns $obj.

remove_package_AC

  $obj->remove_package_AC(@val);

Removes the AssociationEnd package_AC values @val. Elements of @val must of type UMMF::UML_1_5::Model_Management::ElementImport. Returns $obj.

clear_package_AC

  $obj->clear_package_AC;

Clears the AssociationEnd package_AC links to UMMF::UML_1_5::Model_Management::ElementImport. Returns $obj.

count_package_AC

  $obj->count_package_AC;

Returns the number of elements associated with package_AC.

partition_contents

  my @val = $obj->partition_contents;
  my $ary_val = $obj->partition_contents;

Returns the AssociationEnd partition_contents values of type UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_partition_contents

  $obj->set_partition_contents(@val);

Sets the AssociationEnd partition_contents value. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition. Returns $obj.

add_partition_contents

  $obj->add_partition_contents(@val);

Adds AssociationEnd partition_contents values. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition. Returns $obj.

remove_partition_contents

  $obj->remove_partition_contents(@val);

Removes the AssociationEnd partition_contents values @val. Elements of @val must of type UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition. Returns $obj.

clear_partition_contents

  $obj->clear_partition_contents;

Clears the AssociationEnd partition_contents links to UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition. Returns $obj.

count_partition_contents

  $obj->count_partition_contents;

Returns the number of elements associated with partition_contents.

presentation

  my @val = $obj->presentation;
  my $ary_val = $obj->presentation;

Returns the AssociationEnd presentation values of type UMMF::UML_1_5::Foundation::Core::PresentationElement. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_presentation

  $obj->set_presentation(@val);

Sets the AssociationEnd presentation value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::PresentationElement. Returns $obj.

add_presentation

  $obj->add_presentation(@val);

Adds AssociationEnd presentation values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::PresentationElement. Returns $obj.

remove_presentation

  $obj->remove_presentation(@val);

Removes the AssociationEnd presentation values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::PresentationElement. Returns $obj.

clear_presentation

  $obj->clear_presentation;

Clears the AssociationEnd presentation links to UMMF::UML_1_5::Foundation::Core::PresentationElement. Returns $obj.

count_presentation

  $obj->count_presentation;

Returns the number of elements associated with presentation.

referenceTag

  my @val = $obj->referenceTag;
  my $ary_val = $obj->referenceTag;

Returns the AssociationEnd referenceTag values of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_referenceTag

  $obj->set_referenceTag(@val);

Sets the AssociationEnd referenceTag value. Elements of @val must of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. Returns $obj.

add_referenceTag

  $obj->add_referenceTag(@val);

Adds AssociationEnd referenceTag values. Elements of @val must of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. Returns $obj.

remove_referenceTag

  $obj->remove_referenceTag(@val);

Removes the AssociationEnd referenceTag values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. Returns $obj.

clear_referenceTag

  $obj->clear_referenceTag;

Clears the AssociationEnd referenceTag links to UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. Returns $obj.

count_referenceTag

  $obj->count_referenceTag;

Returns the number of elements associated with referenceTag.

sourceFlow

  my @val = $obj->sourceFlow;
  my $ary_val = $obj->sourceFlow;

Returns the AssociationEnd sourceFlow values of type UMMF::UML_1_5::Foundation::Core::Flow. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_sourceFlow

  $obj->set_sourceFlow(@val);

Sets the AssociationEnd sourceFlow value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Flow. Returns $obj.

add_sourceFlow

  $obj->add_sourceFlow(@val);

Adds AssociationEnd sourceFlow values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Flow. Returns $obj.

remove_sourceFlow

  $obj->remove_sourceFlow(@val);

Removes the AssociationEnd sourceFlow values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Flow. Returns $obj.

clear_sourceFlow

  $obj->clear_sourceFlow;

Clears the AssociationEnd sourceFlow links to UMMF::UML_1_5::Foundation::Core::Flow. Returns $obj.

count_sourceFlow

  $obj->count_sourceFlow;

Returns the number of elements associated with sourceFlow.

stereotype

  my @val = $obj->stereotype;
  my $ary_val = $obj->stereotype;

Returns the AssociationEnd stereotype values of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_stereotype

  $obj->set_stereotype(@val);

Sets the AssociationEnd stereotype value. Elements of @val must of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype. Returns $obj.

add_stereotype

  $obj->add_stereotype(@val);

Adds AssociationEnd stereotype values. Elements of @val must of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype. Returns $obj.

remove_stereotype

  $obj->remove_stereotype(@val);

Removes the AssociationEnd stereotype values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype. Returns $obj.

clear_stereotype

  $obj->clear_stereotype;

Clears the AssociationEnd stereotype links to UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype. Returns $obj.

count_stereotype

  $obj->count_stereotype;

Returns the number of elements associated with stereotype.

supplierDependency

  my @val = $obj->supplierDependency;
  my $ary_val = $obj->supplierDependency;

Returns the AssociationEnd supplierDependency values of type UMMF::UML_1_5::Foundation::Core::Dependency. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_supplierDependency

  $obj->set_supplierDependency(@val);

Sets the AssociationEnd supplierDependency value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Dependency. Returns $obj.

add_supplierDependency

  $obj->add_supplierDependency(@val);

Adds AssociationEnd supplierDependency values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Dependency. Returns $obj.

remove_supplierDependency

  $obj->remove_supplierDependency(@val);

Removes the AssociationEnd supplierDependency values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Dependency. Returns $obj.

clear_supplierDependency

  $obj->clear_supplierDependency;

Clears the AssociationEnd supplierDependency links to UMMF::UML_1_5::Foundation::Core::Dependency. Returns $obj.

count_supplierDependency

  $obj->count_supplierDependency;

Returns the number of elements associated with supplierDependency.

taggedValue

  my @val = $obj->taggedValue;
  my $ary_val = $obj->taggedValue;

Returns the AssociationEnd taggedValue values of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_taggedValue

  $obj->set_taggedValue(@val);

Sets the AssociationEnd taggedValue value. Elements of @val must of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. Returns $obj.

add_taggedValue

  $obj->add_taggedValue(@val);

Adds AssociationEnd taggedValue values. Elements of @val must of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. Returns $obj.

remove_taggedValue

  $obj->remove_taggedValue(@val);

Removes the AssociationEnd taggedValue values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. Returns $obj.

clear_taggedValue

  $obj->clear_taggedValue;

Clears the AssociationEnd taggedValue links to UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue. Returns $obj.

count_taggedValue

  $obj->count_taggedValue;

Returns the number of elements associated with taggedValue.

targetFlow

  my @val = $obj->targetFlow;
  my $ary_val = $obj->targetFlow;

Returns the AssociationEnd targetFlow values of type UMMF::UML_1_5::Foundation::Core::Flow. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_targetFlow

  $obj->set_targetFlow(@val);

Sets the AssociationEnd targetFlow value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Flow. Returns $obj.

add_targetFlow

  $obj->add_targetFlow(@val);

Adds AssociationEnd targetFlow values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Flow. Returns $obj.

remove_targetFlow

  $obj->remove_targetFlow(@val);

Removes the AssociationEnd targetFlow values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::Flow. Returns $obj.

clear_targetFlow

  $obj->clear_targetFlow;

Clears the AssociationEnd targetFlow links to UMMF::UML_1_5::Foundation::Core::Flow. Returns $obj.

count_targetFlow

  $obj->count_targetFlow;

Returns the number of elements associated with targetFlow.

template

  my $val = $obj->template;

Returns the AssociationEnd template value of type UMMF::UML_1_5::Foundation::Core::ModelElement.

set_template

  $obj->set_template($val);

Sets the AssociationEnd template value. $val must of type UMMF::UML_1_5::Foundation::Core::ModelElement. Returns $obj.

add_template

  $obj->add_template($val);

Adds the AssociationEnd template value. $val must of type UMMF::UML_1_5::Foundation::Core::ModelElement. Throws exception if a value already exists. Returns $obj.

remove_template

  $obj->remove_template($val);

Removes the AssociationEnd template value $val. Returns $obj.

clear_template

  $obj->clear_template;

Clears the AssociationEnd template links to UMMF::UML_1_5::Foundation::Core::ModelElement. Returns $obj.

count_template

  $obj->count_template;

Returns the number of elements of type UMMF::UML_1_5::Foundation::Core::ModelElement associated with template.

templateArgument

  my @val = $obj->templateArgument;
  my $ary_val = $obj->templateArgument;

Returns the AssociationEnd templateArgument values of type UMMF::UML_1_5::Foundation::Core::TemplateArgument. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_templateArgument

  $obj->set_templateArgument(@val);

Sets the AssociationEnd templateArgument value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateArgument. Returns $obj.

add_templateArgument

  $obj->add_templateArgument(@val);

Adds AssociationEnd templateArgument values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateArgument. Returns $obj.

remove_templateArgument

  $obj->remove_templateArgument(@val);

Removes the AssociationEnd templateArgument values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateArgument. Returns $obj.

clear_templateArgument

  $obj->clear_templateArgument;

Clears the AssociationEnd templateArgument links to UMMF::UML_1_5::Foundation::Core::TemplateArgument. Returns $obj.

count_templateArgument

  $obj->count_templateArgument;

Returns the number of elements associated with templateArgument.

templateParameter

  my @val = $obj->templateParameter;
  my $ary_val = $obj->templateParameter;

Returns the AssociationEnd templateParameter values of type UMMF::UML_1_5::Foundation::Core::ModelElement. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

index_templateParameter

  my $x = $obj->index_templateParameter($i);
  my @x = $obj->index_templateParameter($i, $count);

In scalar context, returns the value of AssociationEnd templateParameter at index $i. In array context, returns the values between index $i and $i + $count - 1, inclusive.

index_of_templateParameter

  my $index = $obj->index_of_templateParameter($val);

Returns the index of $val in AssociationEnd templateParameter. Return undef if $val is not in templateParameter.

set_templateParameter

  $obj->set_templateParameter(@val);

Sets the AssociationEnd templateParameter value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::ModelElement. Returns $obj.

set_index_templateParameter

  $obj->set_index_templateParameter($i, $val);

Sets the value of AssociationEnd templateParameter at index $i. Returns self.

add_templateParameter

  $obj->add_templateParameter(@val);

Adds AssociationEnd templateParameter values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::ModelElement. Returns $obj.

add_index_templateParameter

  $obj->add_index_templateParameter($i, @val);

Adds AssociationEnd templateParameter values at index $i. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::ModelElement. Returns $obj.

remove_templateParameter

  $obj->remove_templateParameter(@val);

Removes the AssociationEnd templateParameter values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::ModelElement. Returns $obj.

clear_templateParameter

  $obj->clear_templateParameter;

Clears the AssociationEnd templateParameter links to UMMF::UML_1_5::Foundation::Core::ModelElement. Returns $obj.

count_templateParameter

  $obj->count_templateParameter;

Returns the number of elements associated with templateParameter.

templateParameter_AC

  my @val = $obj->templateParameter_AC;
  my $ary_val = $obj->templateParameter_AC;

Returns the AssociationEnd templateParameter_AC values of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

index_templateParameter_AC

  my $x = $obj->index_templateParameter_AC($i);
  my @x = $obj->index_templateParameter_AC($i, $count);

In scalar context, returns the value of AssociationEnd templateParameter_AC at index $i. In array context, returns the values between index $i and $i + $count - 1, inclusive.

index_of_templateParameter_AC

  my $index = $obj->index_of_templateParameter_AC($val);

Returns the index of $val in AssociationEnd templateParameter_AC. Return undef if $val is not in templateParameter_AC.

set_templateParameter_AC

  $obj->set_templateParameter_AC(@val);

Sets the AssociationEnd templateParameter_AC value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

set_index_templateParameter_AC

  $obj->set_index_templateParameter_AC($i, $val);

Sets the value of AssociationEnd templateParameter_AC at index $i. Returns self.

add_templateParameter_AC

  $obj->add_templateParameter_AC(@val);

Adds AssociationEnd templateParameter_AC values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

add_index_templateParameter_AC

  $obj->add_index_templateParameter_AC($i, @val);

Adds AssociationEnd templateParameter_AC values at index $i. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

remove_templateParameter_AC

  $obj->remove_templateParameter_AC(@val);

Removes the AssociationEnd templateParameter_AC values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

clear_templateParameter_AC

  $obj->clear_templateParameter_AC;

Clears the AssociationEnd templateParameter_AC links to UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

count_templateParameter_AC

  $obj->count_templateParameter_AC;

Returns the number of elements associated with templateParameter_AC.

templateParameter_defaultElement

  my @val = $obj->templateParameter_defaultElement;
  my $ary_val = $obj->templateParameter_defaultElement;

Returns the AssociationEnd templateParameter_defaultElement values of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. In array context, returns all the objects in the Association. In scalar context, returns an array ref of all the objects in the Association.

set_templateParameter_defaultElement

  $obj->set_templateParameter_defaultElement(@val);

Sets the AssociationEnd templateParameter_defaultElement value. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

add_templateParameter_defaultElement

  $obj->add_templateParameter_defaultElement(@val);

Adds AssociationEnd templateParameter_defaultElement values. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

remove_templateParameter_defaultElement

  $obj->remove_templateParameter_defaultElement(@val);

Removes the AssociationEnd templateParameter_defaultElement values @val. Elements of @val must of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

clear_templateParameter_defaultElement

  $obj->clear_templateParameter_defaultElement;

Clears the AssociationEnd templateParameter_defaultElement links to UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

count_templateParameter_defaultElement

  $obj->count_templateParameter_defaultElement;

Returns the number of elements associated with templateParameter_defaultElement.

template_AC

  my $val = $obj->template_AC;

Returns the AssociationEnd template_AC value of type UMMF::UML_1_5::Foundation::Core::TemplateParameter.

set_template_AC

  $obj->set_template_AC($val);

Sets the AssociationEnd template_AC value. $val must of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

add_template_AC

  $obj->add_template_AC($val);

Adds the AssociationEnd template_AC value. $val must of type UMMF::UML_1_5::Foundation::Core::TemplateParameter. Throws exception if a value already exists. Returns $obj.

remove_template_AC

  $obj->remove_template_AC($val);

Removes the AssociationEnd template_AC value $val. Returns $obj.

clear_template_AC

  $obj->clear_template_AC;

Clears the AssociationEnd template_AC links to UMMF::UML_1_5::Foundation::Core::TemplateParameter. Returns $obj.

count_template_AC

  $obj->count_template_AC;

Returns the number of elements of type UMMF::UML_1_5::Foundation::Core::TemplateParameter associated with template_AC.

END OF DOCUMENT


UMMF documentation Contained in the UMMF distribution.
# -*- perl -*-
# DO NOT EDIT - This file is generated by UMMF; http://ummf.sourceforge.net 
# From template: $Id: Perl.txt,v 1.77 2006/05/14 01:40:03 kstephens Exp $

package UMMF::UML_1_5::Foundation::Core::ModelElement;

#use 5.6.1;
use strict;
use warnings;

#################################################################
# Version
#

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


#################################################################
# Documentation
#



#################################################################
# Dependencies
#





use Carp qw(croak confess);
use Set::Object 1.05;
use Class::Multimethods 1.70;
use Data::Dumper;
use Scalar::Util qw(weaken);
use UMMF::UML_1_5::__ObjectBase qw(:__ummf_array);


#################################################################
# Generalizations
#

use base qw(
  UMMF::UML_1_5::Foundation::Core::Element



);


#################################################################
# Exports
#

our @EXPORT_OK = qw(
);
our %EXPORT_TAGS = ( 'all' => \@EXPORT_OK );





#################################################################
# Validation
#


sub __validate_type($$)
{
  my ($self, $x) = @_;

  no warnings;

  UNIVERSAL::isa($x, 'UMMF::UML_1_5::Foundation::Core::ModelElement')  ;
}


sub __typecheck
{
  my ($self, $x, $msg) = @_;

  confess("typecheck: $msg: type '" . 'UMMF::UML_1_5::Foundation::Core::ModelElement' . ": value '$x'")
    unless __validate_type($self, $x);
}


sub isaModelElement { 1 }


sub isaFoundation__Core__ModelElement { 1 }


#################################################################
# Introspection
#

sub __model_name { 'Foundation::Core::ModelElement' }



sub __isAbstract { 1; }


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

  $__tangram_schema ||=
  {
   'classes' =>
   [
     'UMMF::UML_1_5::Foundation::Core::ModelElement' =>
     {
       'table' => 'Foundation__Core__ModelElement',
       'abstract' => 1,
       'slots' => 
       { 
	 # Attributes
	 	       'name'
       => {
	 'type_impl' => 'string',
                                             'col' => 'name', 

                                                                                                                   }
      ,
         	       'visibility'
       => {
	 'type_impl' => 'string',
                                             'col' => 'visibility', 

                                                                                                                   }
      ,
         	       'isSpecification'
       => {
	 'type_impl' => 'string',
                                             'col' => 'isSpecification', 

                                                                                                                   }
      ,
         
	 # Associations
	 	 	       'behavior'
       => {
	 'type_impl' => 'iset',
         'class' => 'UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine',

                           'table' => 'Foundation__Core__ModelElement__behavior', 

                                                               'coll' => 'context',

                                                                               }
      ,
                  	 	       'clientDependency'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Foundation::Core::Dependency',

                           'table' => 'Foundation__Core__ClientDependency_Client', 

                                                      'item' => 'clientDependency', 

                  'coll' => 'client',

                                                                               }
      ,
                  	 	       'collaborationInstanceSet_constrainingElement'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet',

                           'table' => 'CollaborationInstanceSet_ConstrainingElement', 

                                                      'item' => 'collaborationInstanceSet_constrainingElement', 

                  'coll' => 'constrainingElement',

                                                                               }
      ,
                  	 	       'collaboration_constrainingElement'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration',

                           'table' => 'Collaboration_ConstrainingElement', 

                                                      'item' => 'collaboration_constrainingElement', 

                  'coll' => 'constrainingElement',

                                                                               }
      ,
                  	 	       'comment'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Foundation::Core::Comment',

                           'table' => 'Foundation__Core__Comment_AnnotatedElement', 

                                                      'item' => 'comment', 

                  'coll' => 'annotatedElement',

                                                                               }
      ,
                  	 	       'constraint'
       => {
	 'type_impl' => 'iset',
         'class' => 'UMMF::UML_1_5::Foundation::Core::Constraint',

                           'table' => 'Foundation__Core__ModelElement__constraint', 

                                                               'coll' => 'constrainedElement',

                                                                               }
      ,
                  	 	       'container'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Foundation::Core::Component',

                           'table' => 'Foundation__Core__Container_Resident', 

                                                      'item' => 'container', 

                  'coll' => 'resident',

                                                                               }
      ,
                  	 	       'namespace'
       => {
	 'type_impl' => 'ref',
         'class' => 'UMMF::UML_1_5::Foundation::Core::Namespace',

                  'null' => '1', 

                                    'col' => 'namespace', 

                                                                                                                   }
      ,
                  	 	       'namespace_AC'
       => {
	 'type_impl' => 'ref',
         'class' => 'UMMF::UML_1_5::Foundation::Core::ElementOwnership',

                  'null' => '1', 

                                    'col' => 'namespace_AC', 

                                                                                                                   }
      ,
                  	 	       'package'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Model_Management::Package',

                           'table' => 'Model_Management__ElementImport', 

                                                      'item' => 'package', 

                  'coll' => 'importedElement',

                                                                               }
      ,
                  	 	       'package_AC'
       => {
	 'type_impl' => 'iset',
         'class' => 'UMMF::UML_1_5::Model_Management::ElementImport',

                           'table' => 'Foundation__Core__ModelElement__package_AC', 

                                                               'coll' => 'importedElement',

                                                                               }
      ,
                  	 	       'partition_contents'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition',

                           'table' => 'Partition_Contents', 

                                                      'item' => 'partition_contents', 

                  'coll' => 'contents',

                                                                               }
      ,
                  	 	       'presentation'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Foundation::Core::PresentationElement',

                           'table' => 'Foundation__Core__Presentation_Subject', 

                                                      'item' => 'presentation', 

                  'coll' => 'subject',

                                                                               }
      ,
                  	 	       'referenceTag'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue',

                           'table' => 'Foundation__ReferenceTag_ReferenceValue', 

                                                      'item' => 'referenceTag', 

                  'coll' => 'referenceValue',

                                                                               }
      ,
                  	 	       'sourceFlow'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Foundation::Core::Flow',

                           'table' => 'Foundation__Core__SourceFlow_Source', 

                                                      'item' => 'sourceFlow', 

                  'coll' => 'source',

                                                                               }
      ,
                  	 	       'stereotype'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype',

                           'table' => 'Foundation__Stereotype_ExtendedElement', 

                                                      'item' => 'stereotype', 

                  'coll' => 'extendedElement',

                                                                               }
      ,
                  	 	       'supplierDependency'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Foundation::Core::Dependency',

                           'table' => 'Foundation__Core__SupplierDependency_Supplier', 

                                                      'item' => 'supplierDependency', 

                  'coll' => 'supplier',

                                                                               }
      ,
                  	 	       'taggedValue'
       => {
	 'type_impl' => 'iset',
         'class' => 'UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue',

                           'table' => 'Foundation__Core__ModelElement__taggedValue', 

                                                               'coll' => 'modelElement',

                                                                               }
      ,
                  	 	       'targetFlow'
       => {
	 'type_impl' => 'set',
         'class' => 'UMMF::UML_1_5::Foundation::Core::Flow',

                           'table' => 'Foundation__Core__TargetFlow_Target', 

                                                      'item' => 'targetFlow', 

                  'coll' => 'target',

                                                                               }
      ,
                  	 	       'template'
       => {
	 'type_impl' => 'ref',
         'class' => 'UMMF::UML_1_5::Foundation::Core::ModelElement',

                  'null' => '1', 

                                    'col' => 'template', 

                                                                                                                   }
      ,
                  	 	       'templateArgument'
       => {
	 'type_impl' => 'iset',
         'class' => 'UMMF::UML_1_5::Foundation::Core::TemplateArgument',

                           'table' => 'Foundation__Core__ModelElement__templateArgument', 

                                                               'coll' => 'modelElement',

                                                                               }
      ,
                  	 	       'templateParameter'
       => {
	 'type_impl' => 'iarray',
         'class' => 'UMMF::UML_1_5::Foundation::Core::ModelElement',

                           'table' => 'Foundation__Core__ModelElement__templateParameter', 

                                                               'coll' => 'template',

                  'slot' => 'template_i', 

                                    'aggreg' => '1', 

                                           }
      ,
                  	 	       'templateParameter_AC'
       => {
	 'type_impl' => 'iarray',
         'class' => 'UMMF::UML_1_5::Foundation::Core::TemplateParameter',

                           'table' => 'Foundation__Core__ModelElement__templateParameter_AC', 

                                                               'coll' => 'template',

                  'slot' => 'template_i', 

                                    'aggreg' => '1', 

                                           }
      ,
                  	 	       'templateParameter_defaultElement'
       => {
	 'type_impl' => 'iset',
         'class' => 'UMMF::UML_1_5::Foundation::Core::TemplateParameter',

                           'table' => 'Foundation__Core__ModelElement__templateParameter_defaultElement', 

                                                               'coll' => 'defaultElement',

                                                                               }
      ,
                  	 	       'template_AC'
       => {
	 'type_impl' => 'ref',
         'class' => 'UMMF::UML_1_5::Foundation::Core::TemplateParameter',

                  'null' => '1', 

                                    'col' => 'template_AC', 

                                                                                                                   }
      ,
                         },
       'bases' => [  'UMMF::UML_1_5::Foundation::Core::Element',  ],
       'sql' => {

       },
     },
   ],

   'sql' =>
   {
    # Note Tangram::Ref::get_exporter() has
    # "UPDATE $table SET $self->{col} = $refid WHERE id = $id",
    # The id_col is hard-coded, 
    # Thus id_col will not work.
    #'id_col' => '__sid',
    #'class_col' => '__stype',
   },
     # 'set_id' => sub { }
     # 'get_id' => sub { }

      
  };
}


#################################################################
# Class Attributes
#


          

#################################################################
# Class Associations
#


    

#################################################################
# Initialization
#


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

  # Attributes

    # Attribute name
  if ( exists $self->{'name'} ) {
    my $x = $self->{'name'};
    $self->{'name'} = undef;
        $self->set_name($x);
      } else {
      }
  
    # Attribute visibility
  if ( exists $self->{'visibility'} ) {
    my $x = $self->{'visibility'};
    $self->{'visibility'} = undef;
        $self->set_visibility($x);
      } else {
        $self->{'visibility'} = "public";
      }
  
    # Attribute isSpecification
  if ( exists $self->{'isSpecification'} ) {
    my $x = $self->{'isSpecification'};
    $self->{'isSpecification'} = undef;
        $self->set_isSpecification($x);
      } else {
        $self->{'isSpecification'} = "false";
      }
  


  # Associations

  # AssociationEnd 
  #  context 0..1
  #  <--> 
  #  behavior 0..* UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine.
    if ( defined $self->{'behavior'} ) {
    my $x = $self->{'behavior'};
        $self->{'behavior'} = Set::Object->new();
        $self->set_behavior(@$x);
  }
  
  # AssociationEnd 
  #  client 1..*
  #  <--> 
  #  clientDependency 0..* UMMF::UML_1_5::Foundation::Core::Dependency.
    if ( defined $self->{'clientDependency'} ) {
    my $x = $self->{'clientDependency'};
        $self->{'clientDependency'} = Set::Object->new();
        $self->set_clientDependency(@$x);
  }
  
  # AssociationEnd 
  #  constrainingElement 0..*
  #  <--> 
  #  collaborationInstanceSet_constrainingElement 0..* UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet.
    if ( defined $self->{'collaborationInstanceSet_constrainingElement'} ) {
    my $x = $self->{'collaborationInstanceSet_constrainingElement'};
        $self->{'collaborationInstanceSet_constrainingElement'} = Set::Object->new();
        $self->set_collaborationInstanceSet_constrainingElement(@$x);
  }
  
  # AssociationEnd 
  #  constrainingElement 0..*
  #  <--> 
  #  collaboration_constrainingElement 0..* UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration.
    if ( defined $self->{'collaboration_constrainingElement'} ) {
    my $x = $self->{'collaboration_constrainingElement'};
        $self->{'collaboration_constrainingElement'} = Set::Object->new();
        $self->set_collaboration_constrainingElement(@$x);
  }
  
  # AssociationEnd 
  #  annotatedElement 0..*
  #  <--> 
  #  comment 0..* UMMF::UML_1_5::Foundation::Core::Comment.
    if ( defined $self->{'comment'} ) {
    my $x = $self->{'comment'};
        $self->{'comment'} = Set::Object->new();
        $self->set_comment(@$x);
  }
  
  # AssociationEnd 
  #  constrainedElement 0..1
  #  <--> 
  #  constraint 0..* UMMF::UML_1_5::Foundation::Core::Constraint.
    if ( defined $self->{'constraint'} ) {
    my $x = $self->{'constraint'};
        $self->{'constraint'} = Set::Object->new();
        $self->set_constraint(@$x);
  }
  
  # AssociationEnd 
  #  resident 0..*
  #  <--> 
  #  container 0..* UMMF::UML_1_5::Foundation::Core::Component.
    if ( defined $self->{'container'} ) {
    my $x = $self->{'container'};
        $self->{'container'} = Set::Object->new();
        $self->set_container(@$x);
  }
  
  # AssociationEnd 
  #  ownedElement 0..*
  #  <--> 
  #  namespace 0..1 UMMF::UML_1_5::Foundation::Core::Namespace.
    if ( defined $self->{'namespace'} ) {
    my $x = $self->{'namespace'};
    $self->{'namespace'} = undef;
    $self->set_namespace($x);
  }
  
  # AssociationEnd 
  #  ownedElement 1
  #  <--> 
  #  namespace_AC 0..1 UMMF::UML_1_5::Foundation::Core::ElementOwnership.
    if ( defined $self->{'namespace_AC'} ) {
    my $x = $self->{'namespace_AC'};
    $self->{'namespace_AC'} = undef;
    $self->set_namespace_AC($x);
  }
  
  # AssociationEnd 
  #  importedElement 0..*
  #  <--> 
  #  package 0..* UMMF::UML_1_5::Model_Management::Package.
    if ( defined $self->{'package'} ) {
    my $x = $self->{'package'};
        $self->{'package'} = Set::Object->new();
        $self->set_package(@$x);
  }
  
  # AssociationEnd 
  #  importedElement 1
  #  <--> 
  #  package_AC 0..* UMMF::UML_1_5::Model_Management::ElementImport.
    if ( defined $self->{'package_AC'} ) {
    my $x = $self->{'package_AC'};
        $self->{'package_AC'} = Set::Object->new();
        $self->set_package_AC(@$x);
  }
  
  # AssociationEnd 
  #  contents 0..*
  #  <--> 
  #  partition_contents 0..* UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition.
    if ( defined $self->{'partition_contents'} ) {
    my $x = $self->{'partition_contents'};
        $self->{'partition_contents'} = Set::Object->new();
        $self->set_partition_contents(@$x);
  }
  
  # AssociationEnd 
  #  subject 0..*
  #  <--> 
  #  presentation 0..* UMMF::UML_1_5::Foundation::Core::PresentationElement.
    if ( defined $self->{'presentation'} ) {
    my $x = $self->{'presentation'};
        $self->{'presentation'} = Set::Object->new();
        $self->set_presentation(@$x);
  }
  
  # AssociationEnd 
  #  referenceValue 0..*
  #  <--> 
  #  referenceTag 0..* UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue.
    if ( defined $self->{'referenceTag'} ) {
    my $x = $self->{'referenceTag'};
        $self->{'referenceTag'} = Set::Object->new();
        $self->set_referenceTag(@$x);
  }
  
  # AssociationEnd 
  #  source 0..*
  #  <--> 
  #  sourceFlow 0..* UMMF::UML_1_5::Foundation::Core::Flow.
    if ( defined $self->{'sourceFlow'} ) {
    my $x = $self->{'sourceFlow'};
        $self->{'sourceFlow'} = Set::Object->new();
        $self->set_sourceFlow(@$x);
  }
  
  # AssociationEnd 
  #  extendedElement 0..*
  #  <--> 
  #  stereotype 0..* UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype.
    if ( defined $self->{'stereotype'} ) {
    my $x = $self->{'stereotype'};
        $self->{'stereotype'} = Set::Object->new();
        $self->set_stereotype(@$x);
  }
  
  # AssociationEnd 
  #  supplier 1..*
  #  <--> 
  #  supplierDependency 0..* UMMF::UML_1_5::Foundation::Core::Dependency.
    if ( defined $self->{'supplierDependency'} ) {
    my $x = $self->{'supplierDependency'};
        $self->{'supplierDependency'} = Set::Object->new();
        $self->set_supplierDependency(@$x);
  }
  
  # AssociationEnd 
  #  modelElement 1
  #  <--> 
  #  taggedValue 0..* UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue.
    if ( defined $self->{'taggedValue'} ) {
    my $x = $self->{'taggedValue'};
        $self->{'taggedValue'} = Set::Object->new();
        $self->set_taggedValue(@$x);
  }
  
  # AssociationEnd 
  #  target 0..*
  #  <--> 
  #  targetFlow 0..* UMMF::UML_1_5::Foundation::Core::Flow.
    if ( defined $self->{'targetFlow'} ) {
    my $x = $self->{'targetFlow'};
        $self->{'targetFlow'} = Set::Object->new();
        $self->set_targetFlow(@$x);
  }
  
  # AssociationEnd 
  #  templateParameter 0..*
  #  <--> 
  #  template 0..1 UMMF::UML_1_5::Foundation::Core::ModelElement.
    if ( defined $self->{'template'} ) {
    my $x = $self->{'template'};
    $self->{'template'} = undef;
    $self->set_template($x);
  }
  
  # AssociationEnd 
  #  modelElement 1
  #  <--> 
  #  templateArgument 0..* UMMF::UML_1_5::Foundation::Core::TemplateArgument.
    if ( defined $self->{'templateArgument'} ) {
    my $x = $self->{'templateArgument'};
        $self->{'templateArgument'} = Set::Object->new();
        $self->set_templateArgument(@$x);
  }
  
  # AssociationEnd 
  #  template 0..1
  #  <--> 
  #  templateParameter 0..* UMMF::UML_1_5::Foundation::Core::ModelElement.
    if ( defined $self->{'templateParameter'} ) {
    my $x = $self->{'templateParameter'};
        $self->{'templateParameter'} = [ ];
        $self->set_templateParameter(@$x);
  }
  
  # AssociationEnd 
  #  template 1
  #  <--> 
  #  templateParameter_AC 0..* UMMF::UML_1_5::Foundation::Core::TemplateParameter.
    if ( defined $self->{'templateParameter_AC'} ) {
    my $x = $self->{'templateParameter_AC'};
        $self->{'templateParameter_AC'} = [ ];
        $self->set_templateParameter_AC(@$x);
  }
  
  # AssociationEnd 
  #  defaultElement 0..1
  #  <--> 
  #  templateParameter_defaultElement 0..* UMMF::UML_1_5::Foundation::Core::TemplateParameter.
    if ( defined $self->{'templateParameter_defaultElement'} ) {
    my $x = $self->{'templateParameter_defaultElement'};
        $self->{'templateParameter_defaultElement'} = Set::Object->new();
        $self->set_templateParameter_defaultElement(@$x);
  }
  
  # AssociationEnd 
  #  templateParameter 1
  #  <--> 
  #  template_AC 0..1 UMMF::UML_1_5::Foundation::Core::TemplateParameter.
    if ( defined $self->{'template_AC'} ) {
    my $x = $self->{'template_AC'};
    $self->{'template_AC'} = undef;
    $self->set_template_AC($x);
  }
  

  $self;
}


my $__initialize_use;

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

  # $DB::single = 1;

  unless ( ! $__initialize_use ) {
    $__initialize_use = 1;
    $self->__use('UMMF::UML_1_5::Foundation::Core::Element');
  }

  $self->UMMF::UML_1_5::Foundation::Core::ModelElement::___initialize;
  $self->UMMF::UML_1_5::Foundation::Core::Element::___initialize;

  $self;
}
      

sub __create
{
  my ($self, @args) = @_;

  # $DB::single = 1;
  $self->UMMF::UML_1_5::Foundation::Core::ModelElement::___create(@args);
  $self->UMMF::UML_1_5::Foundation::Core::Element::___create();

  $self;
}




#################################################################
# Attributes
#



#################################################################
# Attribute name
# type = UMMF::UML_1_5::Foundation::Data_Types::Name
# multiplicity = 1
# ordering = unordered
# ownerScope = instance
# initialValue = 

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

  ;

  my $val = $self->{'name'};

  ;

  $val;
}


sub set_name ($$)
{
  my ($self, $val) = @_;

  ;

  if ( defined $val ) {
    ;
  }

    $self->{'name'} = $val
  ;

  ;

  $self;
}


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

  ;

  my $val = $self->{'name'};

  ;

  defined $val ? 1 : 0;
}



#################################################################
# Attribute visibility
# type = UMMF::UML_1_5::Foundation::Data_Types::VisibilityKind
# multiplicity = 1
# ordering = unordered
# ownerScope = instance
# initialValue = "public"

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

  ;

  my $val = $self->{'visibility'};

  ;

  $val;
}


sub set_visibility ($$)
{
  my ($self, $val) = @_;

  ;

  if ( defined $val ) {
    $self->__use('UMMF::UML_1_5::Foundation::Data_Types::VisibilityKind')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.visibility");
  }

    $self->{'visibility'} = $val
  ;

  ;

  $self;
}


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

  ;

  my $val = $self->{'visibility'};

  ;

  defined $val ? 1 : 0;
}



#################################################################
# Attribute isSpecification
# type = UMMF::UML_1_5::Foundation::Data_Types::Boolean
# multiplicity = 1
# ordering = unordered
# ownerScope = instance
# initialValue = "false"

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

  ;

  my $val = $self->{'isSpecification'};

  ;

  $val;
}


sub set_isSpecification ($$)
{
  my ($self, $val) = @_;

  ;

  if ( defined $val ) {
    ;
  }

    $self->{'isSpecification'} = $val
  ;

  ;

  $self;
}


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

  ;

  my $val = $self->{'isSpecification'};

  ;

  defined $val ? 1 : 0;
}




#################################################################
# Association
#


#################################################################
# AssociationEnd context <---> behavior
# type = UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'behavior'};

  # confess("Container for behavior $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_behavior ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_behavior;
  $self->add_behavior(@val);
}


sub add_behavior ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'behavior'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.behavior");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_context($self) if $old;
    $val->add_context($self)    if $val;

    }
  
  $self;
}


sub remove_behavior ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'behavior'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Behavioral_Elements::State_Machines::StateMachine')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.behavior");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_context($self) if $old;
    $val->add_context($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_behavior ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'behavior'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'behavior'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_context($self) if $old;
    $val->add_context($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'behavior'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd client <---> clientDependency
# type = UMMF::UML_1_5::Foundation::Core::Dependency
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'clientDependency'};

  # confess("Container for clientDependency $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_clientDependency ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_clientDependency;
  $self->add_clientDependency(@val);
}


sub add_clientDependency ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'clientDependency'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::Dependency')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.clientDependency");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_client($self) if $old;
    $val->add_client($self)    if $val;

    }
  
  $self;
}


sub remove_clientDependency ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'clientDependency'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::Dependency')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.clientDependency");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_client($self) if $old;
    $val->add_client($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_clientDependency ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'clientDependency'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'clientDependency'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_client($self) if $old;
    $val->add_client($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'clientDependency'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd constrainingElement <---> collaborationInstanceSet_constrainingElement
# type = UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'collaborationInstanceSet_constrainingElement'};

  # confess("Container for collaborationInstanceSet_constrainingElement $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_collaborationInstanceSet_constrainingElement ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_collaborationInstanceSet_constrainingElement;
  $self->add_collaborationInstanceSet_constrainingElement(@val);
}


sub add_collaborationInstanceSet_constrainingElement ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'collaborationInstanceSet_constrainingElement'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.collaborationInstanceSet_constrainingElement");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_constrainingElement($self) if $old;
    $val->add_constrainingElement($self)    if $val;

    }
  
  $self;
}


sub remove_collaborationInstanceSet_constrainingElement ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'collaborationInstanceSet_constrainingElement'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Behavioral_Elements::Collaborations::CollaborationInstanceSet')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.collaborationInstanceSet_constrainingElement");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_constrainingElement($self) if $old;
    $val->add_constrainingElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_collaborationInstanceSet_constrainingElement ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'collaborationInstanceSet_constrainingElement'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'collaborationInstanceSet_constrainingElement'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_constrainingElement($self) if $old;
    $val->add_constrainingElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'collaborationInstanceSet_constrainingElement'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd constrainingElement <---> collaboration_constrainingElement
# type = UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'collaboration_constrainingElement'};

  # confess("Container for collaboration_constrainingElement $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_collaboration_constrainingElement ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_collaboration_constrainingElement;
  $self->add_collaboration_constrainingElement(@val);
}


sub add_collaboration_constrainingElement ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'collaboration_constrainingElement'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.collaboration_constrainingElement");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_constrainingElement($self) if $old;
    $val->add_constrainingElement($self)    if $val;

    }
  
  $self;
}


sub remove_collaboration_constrainingElement ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'collaboration_constrainingElement'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Behavioral_Elements::Collaborations::Collaboration')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.collaboration_constrainingElement");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_constrainingElement($self) if $old;
    $val->add_constrainingElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_collaboration_constrainingElement ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'collaboration_constrainingElement'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'collaboration_constrainingElement'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_constrainingElement($self) if $old;
    $val->add_constrainingElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'collaboration_constrainingElement'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd annotatedElement <---> comment
# type = UMMF::UML_1_5::Foundation::Core::Comment
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'comment'};

  # confess("Container for comment $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_comment ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_comment;
  $self->add_comment(@val);
}


sub add_comment ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'comment'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::Comment')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.comment");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_annotatedElement($self) if $old;
    $val->add_annotatedElement($self)    if $val;

    }
  
  $self;
}


sub remove_comment ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'comment'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::Comment')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.comment");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_annotatedElement($self) if $old;
    $val->add_annotatedElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_comment ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'comment'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'comment'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_annotatedElement($self) if $old;
    $val->add_annotatedElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'comment'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd constrainedElement <---> constraint
# type = UMMF::UML_1_5::Foundation::Core::Constraint
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'constraint'};

  # confess("Container for constraint $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_constraint ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_constraint;
  $self->add_constraint(@val);
}


sub add_constraint ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'constraint'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::Constraint')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.constraint");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_constrainedElement($self) if $old;
    $val->add_constrainedElement($self)    if $val;

    }
  
  $self;
}


sub remove_constraint ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'constraint'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::Constraint')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.constraint");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_constrainedElement($self) if $old;
    $val->add_constrainedElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_constraint ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'constraint'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'constraint'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_constrainedElement($self) if $old;
    $val->add_constrainedElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'constraint'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd resident <---> container
# type = UMMF::UML_1_5::Foundation::Core::Component
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'container'};

  # confess("Container for container $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_container ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_container;
  $self->add_container(@val);
}


sub add_container ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'container'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::Component')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.container");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_resident($self) if $old;
    $val->add_resident($self)    if $val;

    }
  
  $self;
}


sub remove_container ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'container'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::Component')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.container");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_resident($self) if $old;
    $val->add_resident($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_container ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'container'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'container'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_resident($self) if $old;
    $val->add_resident($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'container'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd ownedElement <---> namespace
# type = UMMF::UML_1_5::Foundation::Core::Namespace
# multiplicity = 0..1
# ordering = 

sub namespace ($)
{
  my ($self) = @_;
		  
  $self->{'namespace'};
}


sub set_namespace ($$)
{
  my ($self, $val) = @_;
		  
  no warnings; # Use of uninitialized value in string ne at ...
		  
  my $old;
  if ( ($old = $self->{'namespace'}) ne $val ) { # Recursion lock

    if ( defined $val ) { $self->__use('UMMF::UML_1_5::Foundation::Core::Namespace')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.namespace") }

    # Recursion lock
        $self->{'namespace'} = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_ownedElement($self) if $old;
    $val->add_ownedElement($self)    if $val;

    }
		  
  $self;
}


sub add_namespace ($$)
{
  my ($self, $val) = @_;

  no warnings; # Use of uninitialized value in string ne at ...

  my $old;
  if ( ($old = $self->{'namespace'}) ne $val ) { # Recursion lock
    $self->__use('UMMF::UML_1_5::Foundation::Core::Namespace')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.namespace");
      
    # confess("UMMF::UML_1_5::Foundation::Core::ModelElement::namespace: too many")
    # if defined $self->{'namespace'};

    # Recursion lock
        $self->{'namespace'} = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_ownedElement($self) if $old;
    $val->add_ownedElement($self)    if $val;

  
  }

  $self;
}


sub remove_namespace ($$)
{
  my ($self, $val) = @_;

  no warnings; # Use of uninitialized value in string ne at ...

  my $old;
  if ( ($old = $self->{'namespace'}) eq $val ) { # Recursion lock
    $val = $self->{'namespace'} = undef;         # Recursion lock

    # Remove and add associations with other ends.
        
    $old->remove_ownedElement($self) if $old;
    $val->add_ownedElement($self)    if $val;

  
  }
}


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

  my $old;
  if ( defined ($old = $self->{'namespace'}) ) { # Recursion lock
    my $val = $self->{'namespace'} = undef;      # Recursion lock

    # Remove and add associations with other ends.
        
    $old->remove_ownedElement($self) if $old;
    $val->add_ownedElement($self)    if $val;

    }

  $self;
}


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

  my $x = $self->{'namespace'};

  defined $x ? 1 : 0;
}




#################################################################
# AssociationEnd ownedElement <---> namespace_AC
# type = UMMF::UML_1_5::Foundation::Core::ElementOwnership
# multiplicity = 0..1
# ordering = 

sub namespace_AC ($)
{
  my ($self) = @_;
		  
  $self->{'namespace_AC'};
}


sub set_namespace_AC ($$)
{
  my ($self, $val) = @_;
		  
  no warnings; # Use of uninitialized value in string ne at ...
		  
  my $old;
  if ( ($old = $self->{'namespace_AC'}) ne $val ) { # Recursion lock

    if ( defined $val ) { $self->__use('UMMF::UML_1_5::Foundation::Core::ElementOwnership')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.namespace_AC") }

    # Recursion lock
        $self->{'namespace_AC'} = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_ownedElement($self) if $old;
    $val->add_ownedElement($self)    if $val;

    }
		  
  $self;
}


sub add_namespace_AC ($$)
{
  my ($self, $val) = @_;

  no warnings; # Use of uninitialized value in string ne at ...

  my $old;
  if ( ($old = $self->{'namespace_AC'}) ne $val ) { # Recursion lock
    $self->__use('UMMF::UML_1_5::Foundation::Core::ElementOwnership')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.namespace_AC");
      
    # confess("UMMF::UML_1_5::Foundation::Core::ModelElement::namespace_AC: too many")
    # if defined $self->{'namespace_AC'};

    # Recursion lock
        $self->{'namespace_AC'} = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_ownedElement($self) if $old;
    $val->add_ownedElement($self)    if $val;

  
  }

  $self;
}


sub remove_namespace_AC ($$)
{
  my ($self, $val) = @_;

  no warnings; # Use of uninitialized value in string ne at ...

  my $old;
  if ( ($old = $self->{'namespace_AC'}) eq $val ) { # Recursion lock
    $val = $self->{'namespace_AC'} = undef;         # Recursion lock

    # Remove and add associations with other ends.
        
    $old->remove_ownedElement($self) if $old;
    $val->add_ownedElement($self)    if $val;

  
  }
}


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

  my $old;
  if ( defined ($old = $self->{'namespace_AC'}) ) { # Recursion lock
    my $val = $self->{'namespace_AC'} = undef;      # Recursion lock

    # Remove and add associations with other ends.
        
    $old->remove_ownedElement($self) if $old;
    $val->add_ownedElement($self)    if $val;

    }

  $self;
}


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

  my $x = $self->{'namespace_AC'};

  defined $x ? 1 : 0;
}




#################################################################
# AssociationEnd importedElement <---> package
# type = UMMF::UML_1_5::Model_Management::Package
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'package'};

  # confess("Container for package $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_package ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_package;
  $self->add_package(@val);
}


sub add_package ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'package'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Model_Management::Package')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.package");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_importedElement($self) if $old;
    $val->add_importedElement($self)    if $val;

    }
  
  $self;
}


sub remove_package ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'package'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Model_Management::Package')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.package");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_importedElement($self) if $old;
    $val->add_importedElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_package ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'package'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'package'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_importedElement($self) if $old;
    $val->add_importedElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'package'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd importedElement <---> package_AC
# type = UMMF::UML_1_5::Model_Management::ElementImport
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'package_AC'};

  # confess("Container for package_AC $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_package_AC ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_package_AC;
  $self->add_package_AC(@val);
}


sub add_package_AC ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'package_AC'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Model_Management::ElementImport')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.package_AC");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_importedElement($self) if $old;
    $val->add_importedElement($self)    if $val;

    }
  
  $self;
}


sub remove_package_AC ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'package_AC'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Model_Management::ElementImport')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.package_AC");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_importedElement($self) if $old;
    $val->add_importedElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_package_AC ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'package_AC'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'package_AC'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_importedElement($self) if $old;
    $val->add_importedElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'package_AC'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd contents <---> partition_contents
# type = UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'partition_contents'};

  # confess("Container for partition_contents $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_partition_contents ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_partition_contents;
  $self->add_partition_contents(@val);
}


sub add_partition_contents ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'partition_contents'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.partition_contents");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_contents($self) if $old;
    $val->add_contents($self)    if $val;

    }
  
  $self;
}


sub remove_partition_contents ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'partition_contents'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Behavioral_Elements::Activity_Graphs::Partition')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.partition_contents");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_contents($self) if $old;
    $val->add_contents($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_partition_contents ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'partition_contents'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'partition_contents'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_contents($self) if $old;
    $val->add_contents($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'partition_contents'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd subject <---> presentation
# type = UMMF::UML_1_5::Foundation::Core::PresentationElement
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'presentation'};

  # confess("Container for presentation $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_presentation ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_presentation;
  $self->add_presentation(@val);
}


sub add_presentation ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'presentation'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::PresentationElement')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.presentation");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_subject($self) if $old;
    $val->add_subject($self)    if $val;

    }
  
  $self;
}


sub remove_presentation ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'presentation'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::PresentationElement')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.presentation");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_subject($self) if $old;
    $val->add_subject($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_presentation ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'presentation'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'presentation'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_subject($self) if $old;
    $val->add_subject($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'presentation'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd referenceValue <---> referenceTag
# type = UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'referenceTag'};

  # confess("Container for referenceTag $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_referenceTag ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_referenceTag;
  $self->add_referenceTag(@val);
}


sub add_referenceTag ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'referenceTag'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.referenceTag");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_referenceValue($self) if $old;
    $val->add_referenceValue($self)    if $val;

    }
  
  $self;
}


sub remove_referenceTag ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'referenceTag'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.referenceTag");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_referenceValue($self) if $old;
    $val->add_referenceValue($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_referenceTag ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'referenceTag'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'referenceTag'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_referenceValue($self) if $old;
    $val->add_referenceValue($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'referenceTag'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd source <---> sourceFlow
# type = UMMF::UML_1_5::Foundation::Core::Flow
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'sourceFlow'};

  # confess("Container for sourceFlow $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_sourceFlow ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_sourceFlow;
  $self->add_sourceFlow(@val);
}


sub add_sourceFlow ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'sourceFlow'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::Flow')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.sourceFlow");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_source($self) if $old;
    $val->add_source($self)    if $val;

    }
  
  $self;
}


sub remove_sourceFlow ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'sourceFlow'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::Flow')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.sourceFlow");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_source($self) if $old;
    $val->add_source($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_sourceFlow ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'sourceFlow'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'sourceFlow'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_source($self) if $old;
    $val->add_source($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'sourceFlow'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd extendedElement <---> stereotype
# type = UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'stereotype'};

  # confess("Container for stereotype $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_stereotype ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_stereotype;
  $self->add_stereotype(@val);
}


sub add_stereotype ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'stereotype'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.stereotype");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_extendedElement($self) if $old;
    $val->add_extendedElement($self)    if $val;

    }
  
  $self;
}


sub remove_stereotype ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'stereotype'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Extension_Mechanisms::Stereotype')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.stereotype");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_extendedElement($self) if $old;
    $val->add_extendedElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_stereotype ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'stereotype'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'stereotype'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_extendedElement($self) if $old;
    $val->add_extendedElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'stereotype'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd supplier <---> supplierDependency
# type = UMMF::UML_1_5::Foundation::Core::Dependency
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'supplierDependency'};

  # confess("Container for supplierDependency $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_supplierDependency ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_supplierDependency;
  $self->add_supplierDependency(@val);
}


sub add_supplierDependency ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'supplierDependency'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::Dependency')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.supplierDependency");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_supplier($self) if $old;
    $val->add_supplier($self)    if $val;

    }
  
  $self;
}


sub remove_supplierDependency ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'supplierDependency'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::Dependency')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.supplierDependency");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_supplier($self) if $old;
    $val->add_supplier($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_supplierDependency ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'supplierDependency'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'supplierDependency'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_supplier($self) if $old;
    $val->add_supplier($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'supplierDependency'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd modelElement <---> taggedValue
# type = UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'taggedValue'};

  # confess("Container for taggedValue $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_taggedValue ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_taggedValue;
  $self->add_taggedValue(@val);
}


sub add_taggedValue ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'taggedValue'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.taggedValue");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_modelElement($self) if $old;
    $val->add_modelElement($self)    if $val;

    }
  
  $self;
}


sub remove_taggedValue ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'taggedValue'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Extension_Mechanisms::TaggedValue')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.taggedValue");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_modelElement($self) if $old;
    $val->add_modelElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_taggedValue ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'taggedValue'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'taggedValue'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_modelElement($self) if $old;
    $val->add_modelElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'taggedValue'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd target <---> targetFlow
# type = UMMF::UML_1_5::Foundation::Core::Flow
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'targetFlow'};

  # confess("Container for targetFlow $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_targetFlow ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_targetFlow;
  $self->add_targetFlow(@val);
}


sub add_targetFlow ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'targetFlow'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::Flow')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.targetFlow");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_target($self) if $old;
    $val->add_target($self)    if $val;

    }
  
  $self;
}


sub remove_targetFlow ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'targetFlow'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::Flow')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.targetFlow");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_target($self) if $old;
    $val->add_target($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_targetFlow ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'targetFlow'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'targetFlow'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_target($self) if $old;
    $val->add_target($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'targetFlow'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd templateParameter <---> template
# type = UMMF::UML_1_5::Foundation::Core::ModelElement
# multiplicity = 0..1
# ordering = 

sub template ($)
{
  my ($self) = @_;
		  
  $self->{'template'};
}


sub set_template ($$)
{
  my ($self, $val) = @_;
		  
  no warnings; # Use of uninitialized value in string ne at ...
		  
  my $old;
  if ( ($old = $self->{'template'}) ne $val ) { # Recursion lock

    if ( defined $val ) { $self->__use('UMMF::UML_1_5::Foundation::Core::ModelElement')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.template") }

    # Recursion lock
        $self->{'template'} = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_templateParameter($self) if $old;
    $val->add_templateParameter($self)    if $val;

    }
		  
  $self;
}


sub add_template ($$)
{
  my ($self, $val) = @_;

  no warnings; # Use of uninitialized value in string ne at ...

  my $old;
  if ( ($old = $self->{'template'}) ne $val ) { # Recursion lock
    $self->__use('UMMF::UML_1_5::Foundation::Core::ModelElement')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.template");
      
    # confess("UMMF::UML_1_5::Foundation::Core::ModelElement::template: too many")
    # if defined $self->{'template'};

    # Recursion lock
        $self->{'template'} = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_templateParameter($self) if $old;
    $val->add_templateParameter($self)    if $val;

  
  }

  $self;
}


sub remove_template ($$)
{
  my ($self, $val) = @_;

  no warnings; # Use of uninitialized value in string ne at ...

  my $old;
  if ( ($old = $self->{'template'}) eq $val ) { # Recursion lock
    $val = $self->{'template'} = undef;         # Recursion lock

    # Remove and add associations with other ends.
        
    $old->remove_templateParameter($self) if $old;
    $val->add_templateParameter($self)    if $val;

  
  }
}


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

  my $old;
  if ( defined ($old = $self->{'template'}) ) { # Recursion lock
    my $val = $self->{'template'} = undef;      # Recursion lock

    # Remove and add associations with other ends.
        
    $old->remove_templateParameter($self) if $old;
    $val->add_templateParameter($self)    if $val;

    }

  $self;
}


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

  my $x = $self->{'template'};

  defined $x ? 1 : 0;
}




#################################################################
# AssociationEnd modelElement <---> templateArgument
# type = UMMF::UML_1_5::Foundation::Core::TemplateArgument
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'templateArgument'};

  # confess("Container for templateArgument $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_templateArgument ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_templateArgument;
  $self->add_templateArgument(@val);
}


sub add_templateArgument ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'templateArgument'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::TemplateArgument')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateArgument");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_modelElement($self) if $old;
    $val->add_modelElement($self)    if $val;

    }
  
  $self;
}


sub remove_templateArgument ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'templateArgument'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::TemplateArgument')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateArgument");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_modelElement($self) if $old;
    $val->add_modelElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_templateArgument ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'templateArgument'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'templateArgument'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_modelElement($self) if $old;
    $val->add_modelElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'templateArgument'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd template <---> templateParameter
# type = UMMF::UML_1_5::Foundation::Core::ModelElement
# multiplicity = 0..*
# ordering = ordered

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

    my $x = $self->{'templateParameter'} ||= [ ];

  wantarray ? @{$x} : $x;
  
}


sub index_templateParameter ($$@)
{
  my ($self, $i, $count) = @_;

  ;

  my $val = $self->{'templateParameter'} ||= [ ];

  ;

  wantarray ? $val->[$i .. (defined $count ? $i + $count - 1 : $i)]
            : $val->[$i];
}


sub index_of_templateParameter ($$)
{
  my ($self, $x) = @_;

  ;

  my $val = $self->{'templateParameter'} ||= [ ];

  ;

  __ummf_array_index($val, $x);
}


sub set_templateParameter ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_templateParameter;
  $self->add_templateParameter(@val);
}


sub set_index_templateParameter ($$$)
{
  my ($self, $i, $val) = @_;

  ;

  my $x = $self->{'templateParameter'} ||= [ ];

  no warnings;
  my $old;
  if ( ($old = $x->[$i]) ne $val) {
    # Recursion lock
        $x->[$i] = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

  
    ;
  }

  $self;
}


sub add_templateParameter ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'templateParameter'} ||= [ ];
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if grep($_ eq $val, @$x);
        $self->__use('UMMF::UML_1_5::Foundation::Core::ModelElement')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateParameter");

    # Recursion lock
        push(@{$x}, $val);
        
    # Remove and add associations with other ends.
        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

    }
  
  $self;
}


sub add_index_templateParameter ($$@)
{
  my ($self, $i, @val) = @_;

  
    my $x = $self->{'templateParameter'} ||= [ ];
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if grep($_ eq $val, @$x);
        $self->__use('UMMF::UML_1_5::Foundation::Core::ModelElement')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateParameter");

    # Recursion lock
        splice(@{$x}, $i, 0, $val); # Recursion lock
        ++ $i;
    
    # Remove and add associations with other ends.
        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

    }
  
  
  $self;
}


sub remove_templateParameter ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'templateParameter'} ||= [ ];
  
  for my $old ( @val ) {
    # Recursion lock
        my $i; # index of $old in @$x.
    next unless defined($i = __ummf_array_index($x, $old));
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::ModelElement')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateParameter");

    # Recursion lock
        splice(@$x, $i, 1);     
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_templateParameter ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'templateParameter'} ||= [ ];
  
  my $val; # Place holder for other MACRO.
  
    $self->{'templateParameter'} = [ ];  # Recursion lock
  for my $old ( @$x ) { # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'templateParameter'};

    defined $x ? scalar @$x : 0;
  }




#################################################################
# AssociationEnd template <---> templateParameter_AC
# type = UMMF::UML_1_5::Foundation::Core::TemplateParameter
# multiplicity = 0..*
# ordering = ordered

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

    my $x = $self->{'templateParameter_AC'} ||= [ ];

  wantarray ? @{$x} : $x;
  
}


sub index_templateParameter_AC ($$@)
{
  my ($self, $i, $count) = @_;

  ;

  my $val = $self->{'templateParameter_AC'} ||= [ ];

  ;

  wantarray ? $val->[$i .. (defined $count ? $i + $count - 1 : $i)]
            : $val->[$i];
}


sub index_of_templateParameter_AC ($$)
{
  my ($self, $x) = @_;

  ;

  my $val = $self->{'templateParameter_AC'} ||= [ ];

  ;

  __ummf_array_index($val, $x);
}


sub set_templateParameter_AC ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_templateParameter_AC;
  $self->add_templateParameter_AC(@val);
}


sub set_index_templateParameter_AC ($$$)
{
  my ($self, $i, $val) = @_;

  ;

  my $x = $self->{'templateParameter_AC'} ||= [ ];

  no warnings;
  my $old;
  if ( ($old = $x->[$i]) ne $val) {
    # Recursion lock
        $x->[$i] = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

  
    ;
  }

  $self;
}


sub add_templateParameter_AC ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'templateParameter_AC'} ||= [ ];
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if grep($_ eq $val, @$x);
        $self->__use('UMMF::UML_1_5::Foundation::Core::TemplateParameter')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateParameter_AC");

    # Recursion lock
        push(@{$x}, $val);
        
    # Remove and add associations with other ends.
        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

    }
  
  $self;
}


sub add_index_templateParameter_AC ($$@)
{
  my ($self, $i, @val) = @_;

  
    my $x = $self->{'templateParameter_AC'} ||= [ ];
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if grep($_ eq $val, @$x);
        $self->__use('UMMF::UML_1_5::Foundation::Core::TemplateParameter')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateParameter_AC");

    # Recursion lock
        splice(@{$x}, $i, 0, $val); # Recursion lock
        ++ $i;
    
    # Remove and add associations with other ends.
        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

    }
  
  
  $self;
}


sub remove_templateParameter_AC ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'templateParameter_AC'} ||= [ ];
  
  for my $old ( @val ) {
    # Recursion lock
        my $i; # index of $old in @$x.
    next unless defined($i = __ummf_array_index($x, $old));
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::TemplateParameter')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateParameter_AC");

    # Recursion lock
        splice(@$x, $i, 1);     
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_templateParameter_AC ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'templateParameter_AC'} ||= [ ];
  
  my $val; # Place holder for other MACRO.
  
    $self->{'templateParameter_AC'} = [ ];  # Recursion lock
  for my $old ( @$x ) { # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_template($self) if $old;
    $val->add_template($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'templateParameter_AC'};

    defined $x ? scalar @$x : 0;
  }




#################################################################
# AssociationEnd defaultElement <---> templateParameter_defaultElement
# type = UMMF::UML_1_5::Foundation::Core::TemplateParameter
# multiplicity = 0..*
# ordering = 

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

    my $x = $self->{'templateParameter_defaultElement'};

  # confess("Container for templateParameter_defaultElement $x is not a blessed ref: " . Data::Dumper->new([ $self ], [qw($self)])->Maxdepth(2)->Dump()) if $x && ref($x) !~ /::/;
 
  wantarray ? ($x ? $x->members() : ()) : [ $x ? $x->members() : () ];
  
}


sub set_templateParameter_defaultElement ($@)
{
  my ($self, @val) = @_;
  
  $self->clear_templateParameter_defaultElement;
  $self->add_templateParameter_defaultElement(@val);
}


sub add_templateParameter_defaultElement ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'templateParameter_defaultElement'} ||= Set::Object->new();
    my $old; # Place holder for other MACRO.
  
  for my $val ( @val ) {
    # Recursion lock
        next if $x->includes($val);
        $self->__use('UMMF::UML_1_5::Foundation::Core::TemplateParameter')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateParameter_defaultElement");

    # Recursion lock
        $x->insert($val);
    # weaken?
    
    # Remove and add associations with other ends.
        
    $old->remove_defaultElement($self) if $old;
    $val->add_defaultElement($self)    if $val;

    }
  
  $self;
}


sub remove_templateParameter_defaultElement ($@)
{
  my ($self, @val) = @_;
  
    my $x = $self->{'templateParameter_defaultElement'} ||= Set::Object->new();
  
  for my $old ( @val ) {
    # Recursion lock
        next unless $x->includes($old);
    
    my $val = $old;
      
    $self->__use('UMMF::UML_1_5::Foundation::Core::TemplateParameter')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.templateParameter_defaultElement");

    # Recursion lock
        $x->remove($old);
    
    $val = undef;

    # Remove associations with other ends.

        
    $old->remove_defaultElement($self) if $old;
    $val->add_defaultElement($self)    if $val;

  ;

  }
  
  $self;
}


sub clear_templateParameter_defaultElement ($) 
{
  my ($self) = @_;
  
    my $x = $self->{'templateParameter_defaultElement'} ||= Set::Object->new();
  
  my $val; # Place holder for other MACRO.
  
    $self->{'templateParameter_defaultElement'} = Set::Object->new(); # Recursion lock
  for my $old ( $x->members() ) {     # Recursion lock
  
    # Remove associations with other ends.

        
    $old->remove_defaultElement($self) if $old;
    $val->add_defaultElement($self)    if $val;

  ;

  }
  
  $self;
}


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

  my $x = $self->{'templateParameter_defaultElement'};

    defined $x ? $x->size : 0;
  }




#################################################################
# AssociationEnd templateParameter <---> template_AC
# type = UMMF::UML_1_5::Foundation::Core::TemplateParameter
# multiplicity = 0..1
# ordering = 

sub template_AC ($)
{
  my ($self) = @_;
		  
  $self->{'template_AC'};
}


sub set_template_AC ($$)
{
  my ($self, $val) = @_;
		  
  no warnings; # Use of uninitialized value in string ne at ...
		  
  my $old;
  if ( ($old = $self->{'template_AC'}) ne $val ) { # Recursion lock

    if ( defined $val ) { $self->__use('UMMF::UML_1_5::Foundation::Core::TemplateParameter')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.template_AC") }

    # Recursion lock
        $self->{'template_AC'} = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_templateParameter($self) if $old;
    $val->add_templateParameter($self)    if $val;

    }
		  
  $self;
}


sub add_template_AC ($$)
{
  my ($self, $val) = @_;

  no warnings; # Use of uninitialized value in string ne at ...

  my $old;
  if ( ($old = $self->{'template_AC'}) ne $val ) { # Recursion lock
    $self->__use('UMMF::UML_1_5::Foundation::Core::TemplateParameter')->__typecheck($val, "UMMF::UML_1_5::Foundation::Core::ModelElement.template_AC");
      
    # confess("UMMF::UML_1_5::Foundation::Core::ModelElement::template_AC: too many")
    # if defined $self->{'template_AC'};

    # Recursion lock
        $self->{'template_AC'} = $val
    ;

    # Remove and add associations with other ends.
        
    $old->remove_templateParameter($self) if $old;
    $val->add_templateParameter($self)    if $val;

  
  }

  $self;
}


sub remove_template_AC ($$)
{
  my ($self, $val) = @_;

  no warnings; # Use of uninitialized value in string ne at ...

  my $old;
  if ( ($old = $self->{'template_AC'}) eq $val ) { # Recursion lock
    $val = $self->{'template_AC'} = undef;         # Recursion lock

    # Remove and add associations with other ends.
        
    $old->remove_templateParameter($self) if $old;
    $val->add_templateParameter($self)    if $val;

  
  }
}


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

  my $old;
  if ( defined ($old = $self->{'template_AC'}) ) { # Recursion lock
    my $val = $self->{'template_AC'} = undef;      # Recursion lock

    # Remove and add associations with other ends.
        
    $old->remove_templateParameter($self) if $old;
    $val->add_templateParameter($self)    if $val;

    }

  $self;
}


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

  my $x = $self->{'template_AC'};

  defined $x ? 1 : 0;
}







# End of Class ModelElement


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

1; # is true!

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

### Keep these comments at end of file: kstephens@users.sourceforge.net 2003/04/06 ###
### Local Variables: ###
### mode:perl ###
### perl-indent-level:2 ###
### perl-continued-statement-offset:0 ###
### perl-brace-offset:0 ###
### perl-label-offset:0 ###
### End: ###