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