1------------------------------------------------------------------------------
2--                                                                          --
3--                            Matreshka Project                             --
4--                                                                          --
5--                          Ada Modeling Framework                          --
6--                                                                          --
7--                        Runtime Library Component                         --
8--                                                                          --
9------------------------------------------------------------------------------
10--                                                                          --
11-- Copyright © 2011-2012, Vadim Godunko <vgodunko@gmail.com>                --
12-- All rights reserved.                                                     --
13--                                                                          --
14-- Redistribution and use in source and binary forms, with or without       --
15-- modification, are permitted provided that the following conditions       --
16-- are met:                                                                 --
17--                                                                          --
18--  * Redistributions of source code must retain the above copyright        --
19--    notice, this list of conditions and the following disclaimer.         --
20--                                                                          --
21--  * Redistributions in binary form must reproduce the above copyright     --
22--    notice, this list of conditions and the following disclaimer in the   --
23--    documentation and/or other materials provided with the distribution.  --
24--                                                                          --
25--  * Neither the name of the Vadim Godunko, IE nor the names of its        --
26--    contributors may be used to endorse or promote products derived from  --
27--    this software without specific prior written permission.              --
28--                                                                          --
29-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS      --
30-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT        --
31-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR    --
32-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT     --
33-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,   --
34-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED --
35-- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   --
36-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   --
37-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     --
38-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS       --
39-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.             --
40--                                                                          --
41------------------------------------------------------------------------------
42--  $Revision: 2937 $ $Date: 2012-05-01 21:07:27 +0400 (Tue, 01 May 2012) $
43------------------------------------------------------------------------------
44with AMF.Internals.UML_Named_Elements;
45with AMF.String_Collections;
46with AMF.UML.Behaviors;
47with AMF.UML.Classifiers.Collections;
48with AMF.UML.Connection_Point_References.Collections;
49with AMF.UML.Constraints.Collections;
50with AMF.UML.Dependencies.Collections;
51with AMF.UML.Element_Imports.Collections;
52with AMF.UML.Named_Elements.Collections;
53with AMF.UML.Namespaces;
54with AMF.UML.Package_Imports.Collections;
55with AMF.UML.Packageable_Elements.Collections;
56with AMF.UML.Packages.Collections;
57with AMF.UML.Pseudostates.Collections;
58with AMF.UML.Redefinable_Elements.Collections;
59with AMF.UML.Regions.Collections;
60with AMF.UML.State_Machines;
61with AMF.UML.States;
62with AMF.UML.String_Expressions;
63with AMF.UML.Transitions.Collections;
64with AMF.UML.Triggers.Collections;
65with AMF.Visitors;
66
67package AMF.Internals.UML_States is
68
69   type UML_State_Proxy is
70     limited new AMF.Internals.UML_Named_Elements.UML_Named_Element_Proxy
71       and AMF.UML.States.UML_State with null record;
72
73   overriding function Get_Connection
74    (Self : not null access constant UML_State_Proxy)
75       return AMF.UML.Connection_Point_References.Collections.Set_Of_UML_Connection_Point_Reference;
76   --  Getter of State::connection.
77   --
78   --  The entry and exit connection points used in conjunction with this
79   --  (submachine) state, i.e. as targets and sources, respectively, in the
80   --  region with the submachine state. A connection point reference
81   --  references the corresponding definition of a connection point
82   --  pseudostate in the statemachine referenced by the submachinestate.
83
84   overriding function Get_Connection_Point
85    (Self : not null access constant UML_State_Proxy)
86       return AMF.UML.Pseudostates.Collections.Set_Of_UML_Pseudostate;
87   --  Getter of State::connectionPoint.
88   --
89   --  The entry and exit pseudostates of a composite state. These can only be
90   --  entry or exit Pseudostates, and they must have different names. They
91   --  can only be defined for composite states.
92
93   overriding function Get_Deferrable_Trigger
94    (Self : not null access constant UML_State_Proxy)
95       return AMF.UML.Triggers.Collections.Set_Of_UML_Trigger;
96   --  Getter of State::deferrableTrigger.
97   --
98   --  A list of triggers that are candidates to be retained by the state
99   --  machine if they trigger no transitions out of the state (not consumed).
100   --  A deferred trigger is retained until the state machine reaches a state
101   --  configuration where it is no longer deferred.
102
103   overriding function Get_Do_Activity
104    (Self : not null access constant UML_State_Proxy)
105       return AMF.UML.Behaviors.UML_Behavior_Access;
106   --  Getter of State::doActivity.
107   --
108   --  An optional behavior that is executed while being in the state. The
109   --  execution starts when this state is entered, and stops either by
110   --  itself, or when the state is exited, whichever comes first.
111
112   overriding procedure Set_Do_Activity
113    (Self : not null access UML_State_Proxy;
114     To   : AMF.UML.Behaviors.UML_Behavior_Access);
115   --  Setter of State::doActivity.
116   --
117   --  An optional behavior that is executed while being in the state. The
118   --  execution starts when this state is entered, and stops either by
119   --  itself, or when the state is exited, whichever comes first.
120
121   overriding function Get_Entry
122    (Self : not null access constant UML_State_Proxy)
123       return AMF.UML.Behaviors.UML_Behavior_Access;
124   --  Getter of State::entry.
125   --
126   --  An optional behavior that is executed whenever this state is entered
127   --  regardless of the transition taken to reach the state. If defined,
128   --  entry actions are always executed to completion prior to any internal
129   --  behavior or transitions performed within the state.
130
131   overriding procedure Set_Entry
132    (Self : not null access UML_State_Proxy;
133     To   : AMF.UML.Behaviors.UML_Behavior_Access);
134   --  Setter of State::entry.
135   --
136   --  An optional behavior that is executed whenever this state is entered
137   --  regardless of the transition taken to reach the state. If defined,
138   --  entry actions are always executed to completion prior to any internal
139   --  behavior or transitions performed within the state.
140
141   overriding function Get_Exit
142    (Self : not null access constant UML_State_Proxy)
143       return AMF.UML.Behaviors.UML_Behavior_Access;
144   --  Getter of State::exit.
145   --
146   --  An optional behavior that is executed whenever this state is exited
147   --  regardless of which transition was taken out of the state. If defined,
148   --  exit actions are always executed to completion only after all internal
149   --  activities and transition actions have completed execution.
150
151   overriding procedure Set_Exit
152    (Self : not null access UML_State_Proxy;
153     To   : AMF.UML.Behaviors.UML_Behavior_Access);
154   --  Setter of State::exit.
155   --
156   --  An optional behavior that is executed whenever this state is exited
157   --  regardless of which transition was taken out of the state. If defined,
158   --  exit actions are always executed to completion only after all internal
159   --  activities and transition actions have completed execution.
160
161   overriding function Get_Is_Composite
162    (Self : not null access constant UML_State_Proxy)
163       return Boolean;
164   --  Getter of State::isComposite.
165   --
166   --  A state with isComposite=true is said to be a composite state. A
167   --  composite state is a state that contains at least one region.
168
169   overriding function Get_Is_Orthogonal
170    (Self : not null access constant UML_State_Proxy)
171       return Boolean;
172   --  Getter of State::isOrthogonal.
173   --
174   --  A state with isOrthogonal=true is said to be an orthogonal composite
175   --  state. An orthogonal composite state contains two or more regions.
176
177   overriding function Get_Is_Simple
178    (Self : not null access constant UML_State_Proxy)
179       return Boolean;
180   --  Getter of State::isSimple.
181   --
182   --  A state with isSimple=true is said to be a simple state. A simple state
183   --  does not have any regions and it does not refer to any submachine state
184   --  machine.
185
186   overriding function Get_Is_Submachine_State
187    (Self : not null access constant UML_State_Proxy)
188       return Boolean;
189   --  Getter of State::isSubmachineState.
190   --
191   --  A state with isSubmachineState=true is said to be a submachine state.
192   --  Such a state refers to a state machine (submachine).
193
194   overriding function Get_Redefined_State
195    (Self : not null access constant UML_State_Proxy)
196       return AMF.UML.States.UML_State_Access;
197   --  Getter of State::redefinedState.
198   --
199   --  The state of which this state is a redefinition.
200
201   overriding procedure Set_Redefined_State
202    (Self : not null access UML_State_Proxy;
203     To   : AMF.UML.States.UML_State_Access);
204   --  Setter of State::redefinedState.
205   --
206   --  The state of which this state is a redefinition.
207
208   overriding function Get_Redefinition_Context
209    (Self : not null access constant UML_State_Proxy)
210       return AMF.UML.Classifiers.UML_Classifier_Access;
211   --  Getter of State::redefinitionContext.
212   --
213   --  References the classifier in which context this element may be
214   --  redefined.
215
216   overriding function Get_Region
217    (Self : not null access constant UML_State_Proxy)
218       return AMF.UML.Regions.Collections.Set_Of_UML_Region;
219   --  Getter of State::region.
220   --
221   --  The regions owned directly by the state.
222
223   overriding function Get_State_Invariant
224    (Self : not null access constant UML_State_Proxy)
225       return AMF.UML.Constraints.UML_Constraint_Access;
226   --  Getter of State::stateInvariant.
227   --
228   --  Specifies conditions that are always true when this state is the
229   --  current state. In protocol state machines, state invariants are
230   --  additional conditions to the preconditions of the outgoing transitions,
231   --  and to the postcondition of the incoming transitions.
232
233   overriding procedure Set_State_Invariant
234    (Self : not null access UML_State_Proxy;
235     To   : AMF.UML.Constraints.UML_Constraint_Access);
236   --  Setter of State::stateInvariant.
237   --
238   --  Specifies conditions that are always true when this state is the
239   --  current state. In protocol state machines, state invariants are
240   --  additional conditions to the preconditions of the outgoing transitions,
241   --  and to the postcondition of the incoming transitions.
242
243   overriding function Get_Submachine
244    (Self : not null access constant UML_State_Proxy)
245       return AMF.UML.State_Machines.UML_State_Machine_Access;
246   --  Getter of State::submachine.
247   --
248   --  The state machine that is to be inserted in place of the (submachine)
249   --  state.
250
251   overriding procedure Set_Submachine
252    (Self : not null access UML_State_Proxy;
253     To   : AMF.UML.State_Machines.UML_State_Machine_Access);
254   --  Setter of State::submachine.
255   --
256   --  The state machine that is to be inserted in place of the (submachine)
257   --  state.
258
259   overriding function Get_Is_Leaf
260    (Self : not null access constant UML_State_Proxy)
261       return Boolean;
262   --  Getter of RedefinableElement::isLeaf.
263   --
264   --  Indicates whether it is possible to further redefine a
265   --  RedefinableElement. If the value is true, then it is not possible to
266   --  further redefine the RedefinableElement. Note that this property is
267   --  preserved through package merge operations; that is, the capability to
268   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
269   --  the resulting RedefinableElement of a package merge operation where a
270   --  RedefinableElement with isLeaf=false is merged with a matching
271   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
272   --  will have isLeaf=false. Default value is false.
273
274   overriding procedure Set_Is_Leaf
275    (Self : not null access UML_State_Proxy;
276     To   : Boolean);
277   --  Setter of RedefinableElement::isLeaf.
278   --
279   --  Indicates whether it is possible to further redefine a
280   --  RedefinableElement. If the value is true, then it is not possible to
281   --  further redefine the RedefinableElement. Note that this property is
282   --  preserved through package merge operations; that is, the capability to
283   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
284   --  the resulting RedefinableElement of a package merge operation where a
285   --  RedefinableElement with isLeaf=false is merged with a matching
286   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
287   --  will have isLeaf=false. Default value is false.
288
289   overriding function Get_Redefined_Element
290    (Self : not null access constant UML_State_Proxy)
291       return AMF.UML.Redefinable_Elements.Collections.Set_Of_UML_Redefinable_Element;
292   --  Getter of RedefinableElement::redefinedElement.
293   --
294   --  The redefinable element that is being redefined by this element.
295
296   overriding function Get_Redefinition_Context
297    (Self : not null access constant UML_State_Proxy)
298       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
299   --  Getter of RedefinableElement::redefinitionContext.
300   --
301   --  References the contexts that this element may be redefined from.
302
303   overriding function Get_Client_Dependency
304    (Self : not null access constant UML_State_Proxy)
305       return AMF.UML.Dependencies.Collections.Set_Of_UML_Dependency;
306   --  Getter of NamedElement::clientDependency.
307   --
308   --  Indicates the dependencies that reference the client.
309
310   overriding function Get_Name_Expression
311    (Self : not null access constant UML_State_Proxy)
312       return AMF.UML.String_Expressions.UML_String_Expression_Access;
313   --  Getter of NamedElement::nameExpression.
314   --
315   --  The string expression used to define the name of this named element.
316
317   overriding procedure Set_Name_Expression
318    (Self : not null access UML_State_Proxy;
319     To   : AMF.UML.String_Expressions.UML_String_Expression_Access);
320   --  Setter of NamedElement::nameExpression.
321   --
322   --  The string expression used to define the name of this named element.
323
324   overriding function Get_Namespace
325    (Self : not null access constant UML_State_Proxy)
326       return AMF.UML.Namespaces.UML_Namespace_Access;
327   --  Getter of NamedElement::namespace.
328   --
329   --  Specifies the namespace that owns the NamedElement.
330
331   overriding function Get_Qualified_Name
332    (Self : not null access constant UML_State_Proxy)
333       return AMF.Optional_String;
334   --  Getter of NamedElement::qualifiedName.
335   --
336   --  A name which allows the NamedElement to be identified within a
337   --  hierarchy of nested Namespaces. It is constructed from the names of the
338   --  containing namespaces starting at the root of the hierarchy and ending
339   --  with the name of the NamedElement itself.
340
341   overriding function Get_Element_Import
342    (Self : not null access constant UML_State_Proxy)
343       return AMF.UML.Element_Imports.Collections.Set_Of_UML_Element_Import;
344   --  Getter of Namespace::elementImport.
345   --
346   --  References the ElementImports owned by the Namespace.
347
348   overriding function Get_Imported_Member
349    (Self : not null access constant UML_State_Proxy)
350       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
351   --  Getter of Namespace::importedMember.
352   --
353   --  References the PackageableElements that are members of this Namespace
354   --  as a result of either PackageImports or ElementImports.
355
356   overriding function Get_Member
357    (Self : not null access constant UML_State_Proxy)
358       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
359   --  Getter of Namespace::member.
360   --
361   --  A collection of NamedElements identifiable within the Namespace, either
362   --  by being owned or by being introduced by importing or inheritance.
363
364   overriding function Get_Owned_Member
365    (Self : not null access constant UML_State_Proxy)
366       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
367   --  Getter of Namespace::ownedMember.
368   --
369   --  A collection of NamedElements owned by the Namespace.
370
371   overriding function Get_Owned_Rule
372    (Self : not null access constant UML_State_Proxy)
373       return AMF.UML.Constraints.Collections.Set_Of_UML_Constraint;
374   --  Getter of Namespace::ownedRule.
375   --
376   --  Specifies a set of Constraints owned by this Namespace.
377
378   overriding function Get_Package_Import
379    (Self : not null access constant UML_State_Proxy)
380       return AMF.UML.Package_Imports.Collections.Set_Of_UML_Package_Import;
381   --  Getter of Namespace::packageImport.
382   --
383   --  References the PackageImports owned by the Namespace.
384
385   overriding function Get_Container
386    (Self : not null access constant UML_State_Proxy)
387       return AMF.UML.Regions.UML_Region_Access;
388   --  Getter of Vertex::container.
389   --
390   --  The region that contains this vertex.
391
392   overriding procedure Set_Container
393    (Self : not null access UML_State_Proxy;
394     To   : AMF.UML.Regions.UML_Region_Access);
395   --  Setter of Vertex::container.
396   --
397   --  The region that contains this vertex.
398
399   overriding function Get_Incoming
400    (Self : not null access constant UML_State_Proxy)
401       return AMF.UML.Transitions.Collections.Set_Of_UML_Transition;
402   --  Getter of Vertex::incoming.
403   --
404   --  Specifies the transitions entering this vertex.
405
406   overriding function Get_Outgoing
407    (Self : not null access constant UML_State_Proxy)
408       return AMF.UML.Transitions.Collections.Set_Of_UML_Transition;
409   --  Getter of Vertex::outgoing.
410   --
411   --  Specifies the transitions departing from this vertex.
412
413   overriding function Containing_State_Machine
414    (Self : not null access constant UML_State_Proxy)
415       return AMF.UML.State_Machines.UML_State_Machine_Access;
416   --  Operation State::containingStateMachine.
417   --
418   --  The query containingStateMachine() returns the state machine that
419   --  contains the state either directly or transitively.
420
421   overriding function Is_Composite
422    (Self : not null access constant UML_State_Proxy)
423       return Boolean;
424   --  Operation State::isComposite.
425   --
426   --  A composite state is a state with at least one region.
427
428   overriding function Is_Consistent_With
429    (Self : not null access constant UML_State_Proxy;
430     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
431       return Boolean;
432   --  Operation State::isConsistentWith.
433   --
434   --  The query isConsistentWith() specifies that a redefining state is
435   --  consistent with a redefined state provided that the redefining state is
436   --  an extension of the redefined state: A simple state can be redefined
437   --  (extended) to become a composite state (by adding a region) and a
438   --  composite state can be redefined (extended) by adding regions and by
439   --  adding vertices, states, and transitions to inherited regions. All
440   --  states may add or replace entry, exit, and 'doActivity' actions.
441
442   overriding function Is_Orthogonal
443    (Self : not null access constant UML_State_Proxy)
444       return Boolean;
445   --  Operation State::isOrthogonal.
446   --
447   --  An orthogonal state is a composite state with at least 2 regions
448
449   overriding function Is_Redefinition_Context_Valid
450    (Self : not null access constant UML_State_Proxy;
451     Redefined : AMF.UML.States.UML_State_Access)
452       return Boolean;
453   --  Operation State::isRedefinitionContextValid.
454   --
455   --  The query isRedefinitionContextValid() specifies whether the
456   --  redefinition contexts of a state are properly related to the
457   --  redefinition contexts of the specified state to allow this element to
458   --  redefine the other. The containing region of a redefining state must
459   --  redefine the containing region of the redefined state.
460
461   overriding function Is_Simple
462    (Self : not null access constant UML_State_Proxy)
463       return Boolean;
464   --  Operation State::isSimple.
465   --
466   --  A simple state is a state without any regions.
467
468   overriding function Is_Submachine_State
469    (Self : not null access constant UML_State_Proxy)
470       return Boolean;
471   --  Operation State::isSubmachineState.
472   --
473   --  Only submachine states can have a reference statemachine.
474
475   overriding function Redefinition_Context
476    (Self : not null access constant UML_State_Proxy)
477       return AMF.UML.Classifiers.UML_Classifier_Access;
478   --  Operation State::redefinitionContext.
479   --
480   --  The redefinition context of a state is the nearest containing
481   --  statemachine.
482
483   overriding function Is_Redefinition_Context_Valid
484    (Self : not null access constant UML_State_Proxy;
485     Redefined : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
486       return Boolean;
487   --  Operation RedefinableElement::isRedefinitionContextValid.
488   --
489   --  The query isRedefinitionContextValid() specifies whether the
490   --  redefinition contexts of this RedefinableElement are properly related
491   --  to the redefinition contexts of the specified RedefinableElement to
492   --  allow this element to redefine the other. By default at least one of
493   --  the redefinition contexts of this element must be a specialization of
494   --  at least one of the redefinition contexts of the specified element.
495
496   overriding function All_Owning_Packages
497    (Self : not null access constant UML_State_Proxy)
498       return AMF.UML.Packages.Collections.Set_Of_UML_Package;
499   --  Operation NamedElement::allOwningPackages.
500   --
501   --  The query allOwningPackages() returns all the directly or indirectly
502   --  owning packages.
503
504   overriding function Is_Distinguishable_From
505    (Self : not null access constant UML_State_Proxy;
506     N : AMF.UML.Named_Elements.UML_Named_Element_Access;
507     Ns : AMF.UML.Namespaces.UML_Namespace_Access)
508       return Boolean;
509   --  Operation NamedElement::isDistinguishableFrom.
510   --
511   --  The query isDistinguishableFrom() determines whether two NamedElements
512   --  may logically co-exist within a Namespace. By default, two named
513   --  elements are distinguishable if (a) they have unrelated types or (b)
514   --  they have related types but different names.
515
516   overriding function Namespace
517    (Self : not null access constant UML_State_Proxy)
518       return AMF.UML.Namespaces.UML_Namespace_Access;
519   --  Operation NamedElement::namespace.
520   --
521   --  Missing derivation for NamedElement::/namespace : Namespace
522
523   overriding function Exclude_Collisions
524    (Self : not null access constant UML_State_Proxy;
525     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
526       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
527   --  Operation Namespace::excludeCollisions.
528   --
529   --  The query excludeCollisions() excludes from a set of
530   --  PackageableElements any that would not be distinguishable from each
531   --  other in this namespace.
532
533   overriding function Get_Names_Of_Member
534    (Self : not null access constant UML_State_Proxy;
535     Element : AMF.UML.Named_Elements.UML_Named_Element_Access)
536       return AMF.String_Collections.Set_Of_String;
537   --  Operation Namespace::getNamesOfMember.
538   --
539   --  The query getNamesOfMember() takes importing into account. It gives
540   --  back the set of names that an element would have in an importing
541   --  namespace, either because it is owned, or if not owned then imported
542   --  individually, or if not individually then from a package.
543   --  The query getNamesOfMember() gives a set of all of the names that a
544   --  member would have in a Namespace. In general a member can have multiple
545   --  names in a Namespace if it is imported more than once with different
546   --  aliases. The query takes account of importing. It gives back the set of
547   --  names that an element would have in an importing namespace, either
548   --  because it is owned, or if not owned then imported individually, or if
549   --  not individually then from a package.
550
551   overriding function Import_Members
552    (Self : not null access constant UML_State_Proxy;
553     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
554       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
555   --  Operation Namespace::importMembers.
556   --
557   --  The query importMembers() defines which of a set of PackageableElements
558   --  are actually imported into the namespace. This excludes hidden ones,
559   --  i.e., those which have names that conflict with names of owned members,
560   --  and also excludes elements which would have the same name when imported.
561
562   overriding function Imported_Member
563    (Self : not null access constant UML_State_Proxy)
564       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
565   --  Operation Namespace::importedMember.
566   --
567   --  The importedMember property is derived from the ElementImports and the
568   --  PackageImports. References the PackageableElements that are members of
569   --  this Namespace as a result of either PackageImports or ElementImports.
570
571   overriding function Members_Are_Distinguishable
572    (Self : not null access constant UML_State_Proxy)
573       return Boolean;
574   --  Operation Namespace::membersAreDistinguishable.
575   --
576   --  The Boolean query membersAreDistinguishable() determines whether all of
577   --  the namespace's members are distinguishable within it.
578
579   overriding function Owned_Member
580    (Self : not null access constant UML_State_Proxy)
581       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
582   --  Operation Namespace::ownedMember.
583   --
584   --  Missing derivation for Namespace::/ownedMember : NamedElement
585
586   overriding function Incoming
587    (Self : not null access constant UML_State_Proxy)
588       return AMF.UML.Transitions.Collections.Set_Of_UML_Transition;
589   --  Operation Vertex::incoming.
590   --
591   --  Missing derivation for Vertex::/incoming : Transition
592
593   overriding function Outgoing
594    (Self : not null access constant UML_State_Proxy)
595       return AMF.UML.Transitions.Collections.Set_Of_UML_Transition;
596   --  Operation Vertex::outgoing.
597   --
598   --  Missing derivation for Vertex::/outgoing : Transition
599
600   overriding procedure Enter_Element
601    (Self    : not null access constant UML_State_Proxy;
602     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
603     Control : in out AMF.Visitors.Traverse_Control);
604   --  Dispatch call to corresponding subprogram of visitor interface.
605
606   overriding procedure Leave_Element
607    (Self    : not null access constant UML_State_Proxy;
608     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
609     Control : in out AMF.Visitors.Traverse_Control);
610   --  Dispatch call to corresponding subprogram of visitor interface.
611
612   overriding procedure Visit_Element
613    (Self     : not null access constant UML_State_Proxy;
614     Iterator : in out AMF.Visitors.Abstract_Iterator'Class;
615     Visitor  : in out AMF.Visitors.Abstract_Visitor'Class;
616     Control  : in out AMF.Visitors.Traverse_Control);
617   --  Dispatch call to corresponding subprogram of iterator interface.
618
619end AMF.Internals.UML_States;
620