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: 2911 $ $Date: 2012-04-26 11:20:01 +0400 (Thu, 26 Apr 2012) $
43------------------------------------------------------------------------------
44--  Containment iterator for elements of UML metamodel. It should be used with
45--  metamodel independent containment iterator (and others metamodel specific
46--  containment iterators when necessary) to construct concrete usabe iterator.
47------------------------------------------------------------------------------
48with AMF.UML.Abstractions;
49with AMF.UML.Accept_Call_Actions;
50with AMF.UML.Accept_Event_Actions;
51with AMF.UML.Action_Execution_Specifications;
52with AMF.UML.Action_Input_Pins;
53with AMF.UML.Activities;
54with AMF.UML.Activity_Final_Nodes;
55with AMF.UML.Activity_Parameter_Nodes;
56with AMF.UML.Activity_Partitions;
57with AMF.UML.Actors;
58with AMF.UML.Add_Structural_Feature_Value_Actions;
59with AMF.UML.Add_Variable_Value_Actions;
60with AMF.UML.Any_Receive_Events;
61with AMF.UML.Artifacts;
62with AMF.UML.Associations;
63with AMF.UML.Association_Classes;
64with AMF.UML.Behavior_Execution_Specifications;
65with AMF.UML.Broadcast_Signal_Actions;
66with AMF.UML.Call_Behavior_Actions;
67with AMF.UML.Call_Events;
68with AMF.UML.Call_Operation_Actions;
69with AMF.UML.Central_Buffer_Nodes;
70with AMF.UML.Change_Events;
71with AMF.UML.Classes;
72with AMF.UML.Classifier_Template_Parameters;
73with AMF.UML.Clauses;
74with AMF.UML.Clear_Association_Actions;
75with AMF.UML.Clear_Structural_Feature_Actions;
76with AMF.UML.Clear_Variable_Actions;
77with AMF.UML.Collaborations;
78with AMF.UML.Collaboration_Uses;
79with AMF.UML.Combined_Fragments;
80with AMF.UML.Comments;
81with AMF.UML.Communication_Paths;
82with AMF.UML.Components;
83with AMF.UML.Component_Realizations;
84with AMF.UML.Conditional_Nodes;
85with AMF.UML.Connectable_Element_Template_Parameters;
86with AMF.UML.Connection_Point_References;
87with AMF.UML.Connectors;
88with AMF.UML.Connector_Ends;
89with AMF.UML.Consider_Ignore_Fragments;
90with AMF.UML.Constraints;
91with AMF.UML.Continuations;
92with AMF.UML.Control_Flows;
93with AMF.UML.Create_Link_Actions;
94with AMF.UML.Create_Link_Object_Actions;
95with AMF.UML.Create_Object_Actions;
96with AMF.UML.Data_Store_Nodes;
97with AMF.UML.Data_Types;
98with AMF.UML.Decision_Nodes;
99with AMF.UML.Dependencies;
100with AMF.UML.Deployments;
101with AMF.UML.Deployment_Specifications;
102with AMF.UML.Destroy_Link_Actions;
103with AMF.UML.Destroy_Object_Actions;
104with AMF.UML.Destruction_Occurrence_Specifications;
105with AMF.UML.Devices;
106with AMF.UML.Durations;
107with AMF.UML.Duration_Constraints;
108with AMF.UML.Duration_Intervals;
109with AMF.UML.Duration_Observations;
110with AMF.UML.Element_Imports;
111with AMF.UML.Enumerations;
112with AMF.UML.Enumeration_Literals;
113with AMF.UML.Exception_Handlers;
114with AMF.UML.Execution_Environments;
115with AMF.UML.Execution_Occurrence_Specifications;
116with AMF.UML.Expansion_Nodes;
117with AMF.UML.Expansion_Regions;
118with AMF.UML.Expressions;
119with AMF.UML.Extends;
120with AMF.UML.Extensions;
121with AMF.UML.Extension_Ends;
122with AMF.UML.Extension_Points;
123with AMF.UML.Final_States;
124with AMF.UML.Flow_Final_Nodes;
125with AMF.UML.Fork_Nodes;
126with AMF.UML.Function_Behaviors;
127with AMF.UML.Gates;
128with AMF.UML.General_Orderings;
129with AMF.UML.Generalizations;
130with AMF.UML.Generalization_Sets;
131with AMF.UML.Images;
132with AMF.UML.Includes;
133with AMF.UML.Information_Flows;
134with AMF.UML.Information_Items;
135with AMF.UML.Initial_Nodes;
136with AMF.UML.Input_Pins;
137with AMF.UML.Instance_Specifications;
138with AMF.UML.Instance_Values;
139with AMF.UML.Interactions;
140with AMF.UML.Interaction_Constraints;
141with AMF.UML.Interaction_Operands;
142with AMF.UML.Interaction_Uses;
143with AMF.UML.Interfaces;
144with AMF.UML.Interface_Realizations;
145with AMF.UML.Interruptible_Activity_Regions;
146with AMF.UML.Intervals;
147with AMF.UML.Interval_Constraints;
148with AMF.UML.Join_Nodes;
149with AMF.UML.Lifelines;
150with AMF.UML.Link_End_Creation_Datas;
151with AMF.UML.Link_End_Datas;
152with AMF.UML.Link_End_Destruction_Datas;
153with AMF.UML.Literal_Booleans;
154with AMF.UML.Literal_Integers;
155with AMF.UML.Literal_Nulls;
156with AMF.UML.Literal_Reals;
157with AMF.UML.Literal_Strings;
158with AMF.UML.Literal_Unlimited_Naturals;
159with AMF.UML.Loop_Nodes;
160with AMF.UML.Manifestations;
161with AMF.UML.Merge_Nodes;
162with AMF.UML.Messages;
163with AMF.UML.Message_Occurrence_Specifications;
164with AMF.UML.Models;
165with AMF.UML.Nodes;
166with AMF.UML.Object_Flows;
167with AMF.UML.Occurrence_Specifications;
168with AMF.UML.Opaque_Actions;
169with AMF.UML.Opaque_Behaviors;
170with AMF.UML.Opaque_Expressions;
171with AMF.UML.Operations;
172with AMF.UML.Operation_Template_Parameters;
173with AMF.UML.Output_Pins;
174with AMF.UML.Packages;
175with AMF.UML.Package_Imports;
176with AMF.UML.Package_Merges;
177with AMF.UML.Parameters;
178with AMF.UML.Parameter_Sets;
179with AMF.UML.Part_Decompositions;
180with AMF.UML.Ports;
181with AMF.UML.Primitive_Types;
182with AMF.UML.Profiles;
183with AMF.UML.Profile_Applications;
184with AMF.UML.Properties;
185with AMF.UML.Protocol_Conformances;
186with AMF.UML.Protocol_State_Machines;
187with AMF.UML.Protocol_Transitions;
188with AMF.UML.Pseudostates;
189with AMF.UML.Qualifier_Values;
190with AMF.UML.Raise_Exception_Actions;
191with AMF.UML.Read_Extent_Actions;
192with AMF.UML.Read_Is_Classified_Object_Actions;
193with AMF.UML.Read_Link_Actions;
194with AMF.UML.Read_Link_Object_End_Actions;
195with AMF.UML.Read_Link_Object_End_Qualifier_Actions;
196with AMF.UML.Read_Self_Actions;
197with AMF.UML.Read_Structural_Feature_Actions;
198with AMF.UML.Read_Variable_Actions;
199with AMF.UML.Realizations;
200with AMF.UML.Receptions;
201with AMF.UML.Reclassify_Object_Actions;
202with AMF.UML.Redefinable_Template_Signatures;
203with AMF.UML.Reduce_Actions;
204with AMF.UML.Regions;
205with AMF.UML.Remove_Structural_Feature_Value_Actions;
206with AMF.UML.Remove_Variable_Value_Actions;
207with AMF.UML.Reply_Actions;
208with AMF.UML.Send_Object_Actions;
209with AMF.UML.Send_Signal_Actions;
210with AMF.UML.Sequence_Nodes;
211with AMF.UML.Signals;
212with AMF.UML.Signal_Events;
213with AMF.UML.Slots;
214with AMF.UML.Start_Classifier_Behavior_Actions;
215with AMF.UML.Start_Object_Behavior_Actions;
216with AMF.UML.States;
217with AMF.UML.State_Invariants;
218with AMF.UML.State_Machines;
219with AMF.UML.Stereotypes;
220with AMF.UML.String_Expressions;
221with AMF.UML.Structured_Activity_Nodes;
222with AMF.UML.Substitutions;
223with AMF.UML.Template_Bindings;
224with AMF.UML.Template_Parameters;
225with AMF.UML.Template_Parameter_Substitutions;
226with AMF.UML.Template_Signatures;
227with AMF.UML.Test_Identity_Actions;
228with AMF.UML.Time_Constraints;
229with AMF.UML.Time_Events;
230with AMF.UML.Time_Expressions;
231with AMF.UML.Time_Intervals;
232with AMF.UML.Time_Observations;
233with AMF.UML.Transitions;
234with AMF.UML.Triggers;
235with AMF.UML.Unmarshall_Actions;
236with AMF.UML.Usages;
237with AMF.UML.Use_Cases;
238with AMF.UML.Value_Pins;
239with AMF.UML.Value_Specification_Actions;
240with AMF.UML.Variables;
241with AMF.Visitors.UML_Iterators;
242
243generic
244   type Base_Iterator is abstract tagged limited private;
245
246package AMF.Visitors.Generic_UML_Containment is
247
248   type UML_Containment_Iterator is
249     limited new Base_Iterator
250       and AMF.Visitors.UML_Iterators.UML_Iterator
251         with private;
252
253   overriding procedure Visit_Abstraction
254    (Self    : in out UML_Containment_Iterator;
255     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
256     Element : not null AMF.UML.Abstractions.UML_Abstraction_Access;
257     Control : in out Traverse_Control);
258
259   overriding procedure Visit_Accept_Call_Action
260    (Self    : in out UML_Containment_Iterator;
261     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
262     Element : not null AMF.UML.Accept_Call_Actions.UML_Accept_Call_Action_Access;
263     Control : in out Traverse_Control);
264
265   overriding procedure Visit_Accept_Event_Action
266    (Self    : in out UML_Containment_Iterator;
267     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
268     Element : not null AMF.UML.Accept_Event_Actions.UML_Accept_Event_Action_Access;
269     Control : in out Traverse_Control);
270
271   overriding procedure Visit_Action_Execution_Specification
272    (Self    : in out UML_Containment_Iterator;
273     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
274     Element : not null AMF.UML.Action_Execution_Specifications.UML_Action_Execution_Specification_Access;
275     Control : in out Traverse_Control);
276
277   overriding procedure Visit_Action_Input_Pin
278    (Self    : in out UML_Containment_Iterator;
279     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
280     Element : not null AMF.UML.Action_Input_Pins.UML_Action_Input_Pin_Access;
281     Control : in out Traverse_Control);
282
283   overriding procedure Visit_Activity
284    (Self    : in out UML_Containment_Iterator;
285     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
286     Element : not null AMF.UML.Activities.UML_Activity_Access;
287     Control : in out Traverse_Control);
288
289   overriding procedure Visit_Activity_Final_Node
290    (Self    : in out UML_Containment_Iterator;
291     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
292     Element : not null AMF.UML.Activity_Final_Nodes.UML_Activity_Final_Node_Access;
293     Control : in out Traverse_Control);
294
295   overriding procedure Visit_Activity_Parameter_Node
296    (Self    : in out UML_Containment_Iterator;
297     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
298     Element : not null AMF.UML.Activity_Parameter_Nodes.UML_Activity_Parameter_Node_Access;
299     Control : in out Traverse_Control);
300
301   overriding procedure Visit_Activity_Partition
302    (Self    : in out UML_Containment_Iterator;
303     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
304     Element : not null AMF.UML.Activity_Partitions.UML_Activity_Partition_Access;
305     Control : in out Traverse_Control);
306
307   overriding procedure Visit_Actor
308    (Self    : in out UML_Containment_Iterator;
309     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
310     Element : not null AMF.UML.Actors.UML_Actor_Access;
311     Control : in out Traverse_Control);
312
313   overriding procedure Visit_Add_Structural_Feature_Value_Action
314    (Self    : in out UML_Containment_Iterator;
315     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
316     Element : not null AMF.UML.Add_Structural_Feature_Value_Actions.UML_Add_Structural_Feature_Value_Action_Access;
317     Control : in out Traverse_Control);
318
319   overriding procedure Visit_Add_Variable_Value_Action
320    (Self    : in out UML_Containment_Iterator;
321     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
322     Element : not null AMF.UML.Add_Variable_Value_Actions.UML_Add_Variable_Value_Action_Access;
323     Control : in out Traverse_Control);
324
325   overriding procedure Visit_Any_Receive_Event
326    (Self    : in out UML_Containment_Iterator;
327     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
328     Element : not null AMF.UML.Any_Receive_Events.UML_Any_Receive_Event_Access;
329     Control : in out Traverse_Control);
330
331   overriding procedure Visit_Artifact
332    (Self    : in out UML_Containment_Iterator;
333     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
334     Element : not null AMF.UML.Artifacts.UML_Artifact_Access;
335     Control : in out Traverse_Control);
336
337   overriding procedure Visit_Association
338    (Self    : in out UML_Containment_Iterator;
339     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
340     Element : not null AMF.UML.Associations.UML_Association_Access;
341     Control : in out Traverse_Control);
342
343   overriding procedure Visit_Association_Class
344    (Self    : in out UML_Containment_Iterator;
345     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
346     Element : not null AMF.UML.Association_Classes.UML_Association_Class_Access;
347     Control : in out Traverse_Control);
348
349   overriding procedure Visit_Behavior_Execution_Specification
350    (Self    : in out UML_Containment_Iterator;
351     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
352     Element : not null AMF.UML.Behavior_Execution_Specifications.UML_Behavior_Execution_Specification_Access;
353     Control : in out Traverse_Control);
354
355   overriding procedure Visit_Broadcast_Signal_Action
356    (Self    : in out UML_Containment_Iterator;
357     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
358     Element : not null AMF.UML.Broadcast_Signal_Actions.UML_Broadcast_Signal_Action_Access;
359     Control : in out Traverse_Control);
360
361   overriding procedure Visit_Call_Behavior_Action
362    (Self    : in out UML_Containment_Iterator;
363     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
364     Element : not null AMF.UML.Call_Behavior_Actions.UML_Call_Behavior_Action_Access;
365     Control : in out Traverse_Control);
366
367   overriding procedure Visit_Call_Event
368    (Self    : in out UML_Containment_Iterator;
369     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
370     Element : not null AMF.UML.Call_Events.UML_Call_Event_Access;
371     Control : in out Traverse_Control);
372
373   overriding procedure Visit_Call_Operation_Action
374    (Self    : in out UML_Containment_Iterator;
375     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
376     Element : not null AMF.UML.Call_Operation_Actions.UML_Call_Operation_Action_Access;
377     Control : in out Traverse_Control);
378
379   overriding procedure Visit_Central_Buffer_Node
380    (Self    : in out UML_Containment_Iterator;
381     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
382     Element : not null AMF.UML.Central_Buffer_Nodes.UML_Central_Buffer_Node_Access;
383     Control : in out Traverse_Control);
384
385   overriding procedure Visit_Change_Event
386    (Self    : in out UML_Containment_Iterator;
387     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
388     Element : not null AMF.UML.Change_Events.UML_Change_Event_Access;
389     Control : in out Traverse_Control);
390
391   overriding procedure Visit_Class
392    (Self    : in out UML_Containment_Iterator;
393     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
394     Element : not null AMF.UML.Classes.UML_Class_Access;
395     Control : in out Traverse_Control);
396
397   overriding procedure Visit_Classifier_Template_Parameter
398    (Self    : in out UML_Containment_Iterator;
399     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
400     Element : not null AMF.UML.Classifier_Template_Parameters.UML_Classifier_Template_Parameter_Access;
401     Control : in out Traverse_Control);
402
403   overriding procedure Visit_Clause
404    (Self    : in out UML_Containment_Iterator;
405     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
406     Element : not null AMF.UML.Clauses.UML_Clause_Access;
407     Control : in out Traverse_Control);
408
409   overriding procedure Visit_Clear_Association_Action
410    (Self    : in out UML_Containment_Iterator;
411     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
412     Element : not null AMF.UML.Clear_Association_Actions.UML_Clear_Association_Action_Access;
413     Control : in out Traverse_Control);
414
415   overriding procedure Visit_Clear_Structural_Feature_Action
416    (Self    : in out UML_Containment_Iterator;
417     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
418     Element : not null AMF.UML.Clear_Structural_Feature_Actions.UML_Clear_Structural_Feature_Action_Access;
419     Control : in out Traverse_Control);
420
421   overriding procedure Visit_Clear_Variable_Action
422    (Self    : in out UML_Containment_Iterator;
423     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
424     Element : not null AMF.UML.Clear_Variable_Actions.UML_Clear_Variable_Action_Access;
425     Control : in out Traverse_Control);
426
427   overriding procedure Visit_Collaboration
428    (Self    : in out UML_Containment_Iterator;
429     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
430     Element : not null AMF.UML.Collaborations.UML_Collaboration_Access;
431     Control : in out Traverse_Control);
432
433   overriding procedure Visit_Collaboration_Use
434    (Self    : in out UML_Containment_Iterator;
435     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
436     Element : not null AMF.UML.Collaboration_Uses.UML_Collaboration_Use_Access;
437     Control : in out Traverse_Control);
438
439   overriding procedure Visit_Combined_Fragment
440    (Self    : in out UML_Containment_Iterator;
441     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
442     Element : not null AMF.UML.Combined_Fragments.UML_Combined_Fragment_Access;
443     Control : in out Traverse_Control);
444
445   overriding procedure Visit_Comment
446    (Self    : in out UML_Containment_Iterator;
447     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
448     Element : not null AMF.UML.Comments.UML_Comment_Access;
449     Control : in out Traverse_Control);
450
451   overriding procedure Visit_Communication_Path
452    (Self    : in out UML_Containment_Iterator;
453     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
454     Element : not null AMF.UML.Communication_Paths.UML_Communication_Path_Access;
455     Control : in out Traverse_Control);
456
457   overriding procedure Visit_Component
458    (Self    : in out UML_Containment_Iterator;
459     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
460     Element : not null AMF.UML.Components.UML_Component_Access;
461     Control : in out Traverse_Control);
462
463   overriding procedure Visit_Component_Realization
464    (Self    : in out UML_Containment_Iterator;
465     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
466     Element : not null AMF.UML.Component_Realizations.UML_Component_Realization_Access;
467     Control : in out Traverse_Control);
468
469   overriding procedure Visit_Conditional_Node
470    (Self    : in out UML_Containment_Iterator;
471     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
472     Element : not null AMF.UML.Conditional_Nodes.UML_Conditional_Node_Access;
473     Control : in out Traverse_Control);
474
475   overriding procedure Visit_Connectable_Element_Template_Parameter
476    (Self    : in out UML_Containment_Iterator;
477     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
478     Element : not null AMF.UML.Connectable_Element_Template_Parameters.UML_Connectable_Element_Template_Parameter_Access;
479     Control : in out Traverse_Control);
480
481   overriding procedure Visit_Connection_Point_Reference
482    (Self    : in out UML_Containment_Iterator;
483     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
484     Element : not null AMF.UML.Connection_Point_References.UML_Connection_Point_Reference_Access;
485     Control : in out Traverse_Control);
486
487   overriding procedure Visit_Connector
488    (Self    : in out UML_Containment_Iterator;
489     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
490     Element : not null AMF.UML.Connectors.UML_Connector_Access;
491     Control : in out Traverse_Control);
492
493   overriding procedure Visit_Connector_End
494    (Self    : in out UML_Containment_Iterator;
495     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
496     Element : not null AMF.UML.Connector_Ends.UML_Connector_End_Access;
497     Control : in out Traverse_Control);
498
499   overriding procedure Visit_Consider_Ignore_Fragment
500    (Self    : in out UML_Containment_Iterator;
501     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
502     Element : not null AMF.UML.Consider_Ignore_Fragments.UML_Consider_Ignore_Fragment_Access;
503     Control : in out Traverse_Control);
504
505   overriding procedure Visit_Constraint
506    (Self    : in out UML_Containment_Iterator;
507     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
508     Element : not null AMF.UML.Constraints.UML_Constraint_Access;
509     Control : in out Traverse_Control);
510
511   overriding procedure Visit_Continuation
512    (Self    : in out UML_Containment_Iterator;
513     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
514     Element : not null AMF.UML.Continuations.UML_Continuation_Access;
515     Control : in out Traverse_Control);
516
517   overriding procedure Visit_Control_Flow
518    (Self    : in out UML_Containment_Iterator;
519     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
520     Element : not null AMF.UML.Control_Flows.UML_Control_Flow_Access;
521     Control : in out Traverse_Control);
522
523   overriding procedure Visit_Create_Link_Action
524    (Self    : in out UML_Containment_Iterator;
525     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
526     Element : not null AMF.UML.Create_Link_Actions.UML_Create_Link_Action_Access;
527     Control : in out Traverse_Control);
528
529   overriding procedure Visit_Create_Link_Object_Action
530    (Self    : in out UML_Containment_Iterator;
531     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
532     Element : not null AMF.UML.Create_Link_Object_Actions.UML_Create_Link_Object_Action_Access;
533     Control : in out Traverse_Control);
534
535   overriding procedure Visit_Create_Object_Action
536    (Self    : in out UML_Containment_Iterator;
537     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
538     Element : not null AMF.UML.Create_Object_Actions.UML_Create_Object_Action_Access;
539     Control : in out Traverse_Control);
540
541   overriding procedure Visit_Data_Store_Node
542    (Self    : in out UML_Containment_Iterator;
543     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
544     Element : not null AMF.UML.Data_Store_Nodes.UML_Data_Store_Node_Access;
545     Control : in out Traverse_Control);
546
547   overriding procedure Visit_Data_Type
548    (Self    : in out UML_Containment_Iterator;
549     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
550     Element : not null AMF.UML.Data_Types.UML_Data_Type_Access;
551     Control : in out Traverse_Control);
552
553   overriding procedure Visit_Decision_Node
554    (Self    : in out UML_Containment_Iterator;
555     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
556     Element : not null AMF.UML.Decision_Nodes.UML_Decision_Node_Access;
557     Control : in out Traverse_Control);
558
559   overriding procedure Visit_Dependency
560    (Self    : in out UML_Containment_Iterator;
561     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
562     Element : not null AMF.UML.Dependencies.UML_Dependency_Access;
563     Control : in out Traverse_Control);
564
565   overriding procedure Visit_Deployment
566    (Self    : in out UML_Containment_Iterator;
567     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
568     Element : not null AMF.UML.Deployments.UML_Deployment_Access;
569     Control : in out Traverse_Control);
570
571   overriding procedure Visit_Deployment_Specification
572    (Self    : in out UML_Containment_Iterator;
573     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
574     Element : not null AMF.UML.Deployment_Specifications.UML_Deployment_Specification_Access;
575     Control : in out Traverse_Control);
576
577   overriding procedure Visit_Destroy_Link_Action
578    (Self    : in out UML_Containment_Iterator;
579     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
580     Element : not null AMF.UML.Destroy_Link_Actions.UML_Destroy_Link_Action_Access;
581     Control : in out Traverse_Control);
582
583   overriding procedure Visit_Destroy_Object_Action
584    (Self    : in out UML_Containment_Iterator;
585     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
586     Element : not null AMF.UML.Destroy_Object_Actions.UML_Destroy_Object_Action_Access;
587     Control : in out Traverse_Control);
588
589   overriding procedure Visit_Destruction_Occurrence_Specification
590    (Self    : in out UML_Containment_Iterator;
591     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
592     Element : not null AMF.UML.Destruction_Occurrence_Specifications.UML_Destruction_Occurrence_Specification_Access;
593     Control : in out Traverse_Control);
594
595   overriding procedure Visit_Device
596    (Self    : in out UML_Containment_Iterator;
597     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
598     Element : not null AMF.UML.Devices.UML_Device_Access;
599     Control : in out Traverse_Control);
600
601   overriding procedure Visit_Duration
602    (Self    : in out UML_Containment_Iterator;
603     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
604     Element : not null AMF.UML.Durations.UML_Duration_Access;
605     Control : in out Traverse_Control);
606
607   overriding procedure Visit_Duration_Constraint
608    (Self    : in out UML_Containment_Iterator;
609     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
610     Element : not null AMF.UML.Duration_Constraints.UML_Duration_Constraint_Access;
611     Control : in out Traverse_Control);
612
613   overriding procedure Visit_Duration_Interval
614    (Self    : in out UML_Containment_Iterator;
615     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
616     Element : not null AMF.UML.Duration_Intervals.UML_Duration_Interval_Access;
617     Control : in out Traverse_Control);
618
619   overriding procedure Visit_Duration_Observation
620    (Self    : in out UML_Containment_Iterator;
621     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
622     Element : not null AMF.UML.Duration_Observations.UML_Duration_Observation_Access;
623     Control : in out Traverse_Control);
624
625   overriding procedure Visit_Element_Import
626    (Self    : in out UML_Containment_Iterator;
627     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
628     Element : not null AMF.UML.Element_Imports.UML_Element_Import_Access;
629     Control : in out Traverse_Control);
630
631   overriding procedure Visit_Enumeration
632    (Self    : in out UML_Containment_Iterator;
633     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
634     Element : not null AMF.UML.Enumerations.UML_Enumeration_Access;
635     Control : in out Traverse_Control);
636
637   overriding procedure Visit_Enumeration_Literal
638    (Self    : in out UML_Containment_Iterator;
639     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
640     Element : not null AMF.UML.Enumeration_Literals.UML_Enumeration_Literal_Access;
641     Control : in out Traverse_Control);
642
643   overriding procedure Visit_Exception_Handler
644    (Self    : in out UML_Containment_Iterator;
645     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
646     Element : not null AMF.UML.Exception_Handlers.UML_Exception_Handler_Access;
647     Control : in out Traverse_Control);
648
649   overriding procedure Visit_Execution_Environment
650    (Self    : in out UML_Containment_Iterator;
651     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
652     Element : not null AMF.UML.Execution_Environments.UML_Execution_Environment_Access;
653     Control : in out Traverse_Control);
654
655   overriding procedure Visit_Execution_Occurrence_Specification
656    (Self    : in out UML_Containment_Iterator;
657     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
658     Element : not null AMF.UML.Execution_Occurrence_Specifications.UML_Execution_Occurrence_Specification_Access;
659     Control : in out Traverse_Control);
660
661   overriding procedure Visit_Expansion_Node
662    (Self    : in out UML_Containment_Iterator;
663     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
664     Element : not null AMF.UML.Expansion_Nodes.UML_Expansion_Node_Access;
665     Control : in out Traverse_Control);
666
667   overriding procedure Visit_Expansion_Region
668    (Self    : in out UML_Containment_Iterator;
669     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
670     Element : not null AMF.UML.Expansion_Regions.UML_Expansion_Region_Access;
671     Control : in out Traverse_Control);
672
673   overriding procedure Visit_Expression
674    (Self    : in out UML_Containment_Iterator;
675     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
676     Element : not null AMF.UML.Expressions.UML_Expression_Access;
677     Control : in out Traverse_Control);
678
679   overriding procedure Visit_Extend
680    (Self    : in out UML_Containment_Iterator;
681     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
682     Element : not null AMF.UML.Extends.UML_Extend_Access;
683     Control : in out Traverse_Control);
684
685   overriding procedure Visit_Extension
686    (Self    : in out UML_Containment_Iterator;
687     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
688     Element : not null AMF.UML.Extensions.UML_Extension_Access;
689     Control : in out Traverse_Control);
690
691   overriding procedure Visit_Extension_End
692    (Self    : in out UML_Containment_Iterator;
693     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
694     Element : not null AMF.UML.Extension_Ends.UML_Extension_End_Access;
695     Control : in out Traverse_Control);
696
697   overriding procedure Visit_Extension_Point
698    (Self    : in out UML_Containment_Iterator;
699     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
700     Element : not null AMF.UML.Extension_Points.UML_Extension_Point_Access;
701     Control : in out Traverse_Control);
702
703   overriding procedure Visit_Final_State
704    (Self    : in out UML_Containment_Iterator;
705     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
706     Element : not null AMF.UML.Final_States.UML_Final_State_Access;
707     Control : in out Traverse_Control);
708
709   overriding procedure Visit_Flow_Final_Node
710    (Self    : in out UML_Containment_Iterator;
711     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
712     Element : not null AMF.UML.Flow_Final_Nodes.UML_Flow_Final_Node_Access;
713     Control : in out Traverse_Control);
714
715   overriding procedure Visit_Fork_Node
716    (Self    : in out UML_Containment_Iterator;
717     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
718     Element : not null AMF.UML.Fork_Nodes.UML_Fork_Node_Access;
719     Control : in out Traverse_Control);
720
721   overriding procedure Visit_Function_Behavior
722    (Self    : in out UML_Containment_Iterator;
723     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
724     Element : not null AMF.UML.Function_Behaviors.UML_Function_Behavior_Access;
725     Control : in out Traverse_Control);
726
727   overriding procedure Visit_Gate
728    (Self    : in out UML_Containment_Iterator;
729     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
730     Element : not null AMF.UML.Gates.UML_Gate_Access;
731     Control : in out Traverse_Control);
732
733   overriding procedure Visit_General_Ordering
734    (Self    : in out UML_Containment_Iterator;
735     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
736     Element : not null AMF.UML.General_Orderings.UML_General_Ordering_Access;
737     Control : in out Traverse_Control);
738
739   overriding procedure Visit_Generalization
740    (Self    : in out UML_Containment_Iterator;
741     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
742     Element : not null AMF.UML.Generalizations.UML_Generalization_Access;
743     Control : in out Traverse_Control);
744
745   overriding procedure Visit_Generalization_Set
746    (Self    : in out UML_Containment_Iterator;
747     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
748     Element : not null AMF.UML.Generalization_Sets.UML_Generalization_Set_Access;
749     Control : in out Traverse_Control);
750
751   overriding procedure Visit_Image
752    (Self    : in out UML_Containment_Iterator;
753     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
754     Element : not null AMF.UML.Images.UML_Image_Access;
755     Control : in out Traverse_Control);
756
757   overriding procedure Visit_Include
758    (Self    : in out UML_Containment_Iterator;
759     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
760     Element : not null AMF.UML.Includes.UML_Include_Access;
761     Control : in out Traverse_Control);
762
763   overriding procedure Visit_Information_Flow
764    (Self    : in out UML_Containment_Iterator;
765     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
766     Element : not null AMF.UML.Information_Flows.UML_Information_Flow_Access;
767     Control : in out Traverse_Control);
768
769   overriding procedure Visit_Information_Item
770    (Self    : in out UML_Containment_Iterator;
771     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
772     Element : not null AMF.UML.Information_Items.UML_Information_Item_Access;
773     Control : in out Traverse_Control);
774
775   overriding procedure Visit_Initial_Node
776    (Self    : in out UML_Containment_Iterator;
777     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
778     Element : not null AMF.UML.Initial_Nodes.UML_Initial_Node_Access;
779     Control : in out Traverse_Control);
780
781   overriding procedure Visit_Input_Pin
782    (Self    : in out UML_Containment_Iterator;
783     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
784     Element : not null AMF.UML.Input_Pins.UML_Input_Pin_Access;
785     Control : in out Traverse_Control);
786
787   overriding procedure Visit_Instance_Specification
788    (Self    : in out UML_Containment_Iterator;
789     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
790     Element : not null AMF.UML.Instance_Specifications.UML_Instance_Specification_Access;
791     Control : in out Traverse_Control);
792
793   overriding procedure Visit_Instance_Value
794    (Self    : in out UML_Containment_Iterator;
795     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
796     Element : not null AMF.UML.Instance_Values.UML_Instance_Value_Access;
797     Control : in out Traverse_Control);
798
799   overriding procedure Visit_Interaction
800    (Self    : in out UML_Containment_Iterator;
801     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
802     Element : not null AMF.UML.Interactions.UML_Interaction_Access;
803     Control : in out Traverse_Control);
804
805   overriding procedure Visit_Interaction_Constraint
806    (Self    : in out UML_Containment_Iterator;
807     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
808     Element : not null AMF.UML.Interaction_Constraints.UML_Interaction_Constraint_Access;
809     Control : in out Traverse_Control);
810
811   overriding procedure Visit_Interaction_Operand
812    (Self    : in out UML_Containment_Iterator;
813     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
814     Element : not null AMF.UML.Interaction_Operands.UML_Interaction_Operand_Access;
815     Control : in out Traverse_Control);
816
817   overriding procedure Visit_Interaction_Use
818    (Self    : in out UML_Containment_Iterator;
819     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
820     Element : not null AMF.UML.Interaction_Uses.UML_Interaction_Use_Access;
821     Control : in out Traverse_Control);
822
823   overriding procedure Visit_Interface
824    (Self    : in out UML_Containment_Iterator;
825     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
826     Element : not null AMF.UML.Interfaces.UML_Interface_Access;
827     Control : in out Traverse_Control);
828
829   overriding procedure Visit_Interface_Realization
830    (Self    : in out UML_Containment_Iterator;
831     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
832     Element : not null AMF.UML.Interface_Realizations.UML_Interface_Realization_Access;
833     Control : in out Traverse_Control);
834
835   overriding procedure Visit_Interruptible_Activity_Region
836    (Self    : in out UML_Containment_Iterator;
837     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
838     Element : not null AMF.UML.Interruptible_Activity_Regions.UML_Interruptible_Activity_Region_Access;
839     Control : in out Traverse_Control);
840
841   overriding procedure Visit_Interval
842    (Self    : in out UML_Containment_Iterator;
843     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
844     Element : not null AMF.UML.Intervals.UML_Interval_Access;
845     Control : in out Traverse_Control);
846
847   overriding procedure Visit_Interval_Constraint
848    (Self    : in out UML_Containment_Iterator;
849     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
850     Element : not null AMF.UML.Interval_Constraints.UML_Interval_Constraint_Access;
851     Control : in out Traverse_Control);
852
853   overriding procedure Visit_Join_Node
854    (Self    : in out UML_Containment_Iterator;
855     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
856     Element : not null AMF.UML.Join_Nodes.UML_Join_Node_Access;
857     Control : in out Traverse_Control);
858
859   overriding procedure Visit_Lifeline
860    (Self    : in out UML_Containment_Iterator;
861     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
862     Element : not null AMF.UML.Lifelines.UML_Lifeline_Access;
863     Control : in out Traverse_Control);
864
865   overriding procedure Visit_Link_End_Creation_Data
866    (Self    : in out UML_Containment_Iterator;
867     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
868     Element : not null AMF.UML.Link_End_Creation_Datas.UML_Link_End_Creation_Data_Access;
869     Control : in out Traverse_Control);
870
871   overriding procedure Visit_Link_End_Data
872    (Self    : in out UML_Containment_Iterator;
873     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
874     Element : not null AMF.UML.Link_End_Datas.UML_Link_End_Data_Access;
875     Control : in out Traverse_Control);
876
877   overriding procedure Visit_Link_End_Destruction_Data
878    (Self    : in out UML_Containment_Iterator;
879     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
880     Element : not null AMF.UML.Link_End_Destruction_Datas.UML_Link_End_Destruction_Data_Access;
881     Control : in out Traverse_Control);
882
883   overriding procedure Visit_Literal_Boolean
884    (Self    : in out UML_Containment_Iterator;
885     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
886     Element : not null AMF.UML.Literal_Booleans.UML_Literal_Boolean_Access;
887     Control : in out Traverse_Control);
888
889   overriding procedure Visit_Literal_Integer
890    (Self    : in out UML_Containment_Iterator;
891     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
892     Element : not null AMF.UML.Literal_Integers.UML_Literal_Integer_Access;
893     Control : in out Traverse_Control);
894
895   overriding procedure Visit_Literal_Null
896    (Self    : in out UML_Containment_Iterator;
897     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
898     Element : not null AMF.UML.Literal_Nulls.UML_Literal_Null_Access;
899     Control : in out Traverse_Control);
900
901   overriding procedure Visit_Literal_Real
902    (Self    : in out UML_Containment_Iterator;
903     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
904     Element : not null AMF.UML.Literal_Reals.UML_Literal_Real_Access;
905     Control : in out Traverse_Control);
906
907   overriding procedure Visit_Literal_String
908    (Self    : in out UML_Containment_Iterator;
909     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
910     Element : not null AMF.UML.Literal_Strings.UML_Literal_String_Access;
911     Control : in out Traverse_Control);
912
913   overriding procedure Visit_Literal_Unlimited_Natural
914    (Self    : in out UML_Containment_Iterator;
915     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
916     Element : not null AMF.UML.Literal_Unlimited_Naturals.UML_Literal_Unlimited_Natural_Access;
917     Control : in out Traverse_Control);
918
919   overriding procedure Visit_Loop_Node
920    (Self    : in out UML_Containment_Iterator;
921     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
922     Element : not null AMF.UML.Loop_Nodes.UML_Loop_Node_Access;
923     Control : in out Traverse_Control);
924
925   overriding procedure Visit_Manifestation
926    (Self    : in out UML_Containment_Iterator;
927     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
928     Element : not null AMF.UML.Manifestations.UML_Manifestation_Access;
929     Control : in out Traverse_Control);
930
931   overriding procedure Visit_Merge_Node
932    (Self    : in out UML_Containment_Iterator;
933     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
934     Element : not null AMF.UML.Merge_Nodes.UML_Merge_Node_Access;
935     Control : in out Traverse_Control);
936
937   overriding procedure Visit_Message
938    (Self    : in out UML_Containment_Iterator;
939     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
940     Element : not null AMF.UML.Messages.UML_Message_Access;
941     Control : in out Traverse_Control);
942
943   overriding procedure Visit_Message_Occurrence_Specification
944    (Self    : in out UML_Containment_Iterator;
945     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
946     Element : not null AMF.UML.Message_Occurrence_Specifications.UML_Message_Occurrence_Specification_Access;
947     Control : in out Traverse_Control);
948
949   overriding procedure Visit_Model
950    (Self    : in out UML_Containment_Iterator;
951     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
952     Element : not null AMF.UML.Models.UML_Model_Access;
953     Control : in out Traverse_Control);
954
955   overriding procedure Visit_Node
956    (Self    : in out UML_Containment_Iterator;
957     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
958     Element : not null AMF.UML.Nodes.UML_Node_Access;
959     Control : in out Traverse_Control);
960
961   overriding procedure Visit_Object_Flow
962    (Self    : in out UML_Containment_Iterator;
963     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
964     Element : not null AMF.UML.Object_Flows.UML_Object_Flow_Access;
965     Control : in out Traverse_Control);
966
967   overriding procedure Visit_Occurrence_Specification
968    (Self    : in out UML_Containment_Iterator;
969     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
970     Element : not null AMF.UML.Occurrence_Specifications.UML_Occurrence_Specification_Access;
971     Control : in out Traverse_Control);
972
973   overriding procedure Visit_Opaque_Action
974    (Self    : in out UML_Containment_Iterator;
975     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
976     Element : not null AMF.UML.Opaque_Actions.UML_Opaque_Action_Access;
977     Control : in out Traverse_Control);
978
979   overriding procedure Visit_Opaque_Behavior
980    (Self    : in out UML_Containment_Iterator;
981     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
982     Element : not null AMF.UML.Opaque_Behaviors.UML_Opaque_Behavior_Access;
983     Control : in out Traverse_Control);
984
985   overriding procedure Visit_Opaque_Expression
986    (Self    : in out UML_Containment_Iterator;
987     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
988     Element : not null AMF.UML.Opaque_Expressions.UML_Opaque_Expression_Access;
989     Control : in out Traverse_Control);
990
991   overriding procedure Visit_Operation
992    (Self    : in out UML_Containment_Iterator;
993     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
994     Element : not null AMF.UML.Operations.UML_Operation_Access;
995     Control : in out Traverse_Control);
996
997   overriding procedure Visit_Operation_Template_Parameter
998    (Self    : in out UML_Containment_Iterator;
999     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1000     Element : not null AMF.UML.Operation_Template_Parameters.UML_Operation_Template_Parameter_Access;
1001     Control : in out Traverse_Control);
1002
1003   overriding procedure Visit_Output_Pin
1004    (Self    : in out UML_Containment_Iterator;
1005     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1006     Element : not null AMF.UML.Output_Pins.UML_Output_Pin_Access;
1007     Control : in out Traverse_Control);
1008
1009   overriding procedure Visit_Package
1010    (Self    : in out UML_Containment_Iterator;
1011     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1012     Element : not null AMF.UML.Packages.UML_Package_Access;
1013     Control : in out Traverse_Control);
1014
1015   overriding procedure Visit_Package_Import
1016    (Self    : in out UML_Containment_Iterator;
1017     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1018     Element : not null AMF.UML.Package_Imports.UML_Package_Import_Access;
1019     Control : in out Traverse_Control);
1020
1021   overriding procedure Visit_Package_Merge
1022    (Self    : in out UML_Containment_Iterator;
1023     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1024     Element : not null AMF.UML.Package_Merges.UML_Package_Merge_Access;
1025     Control : in out Traverse_Control);
1026
1027   overriding procedure Visit_Parameter
1028    (Self    : in out UML_Containment_Iterator;
1029     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1030     Element : not null AMF.UML.Parameters.UML_Parameter_Access;
1031     Control : in out Traverse_Control);
1032
1033   overriding procedure Visit_Parameter_Set
1034    (Self    : in out UML_Containment_Iterator;
1035     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1036     Element : not null AMF.UML.Parameter_Sets.UML_Parameter_Set_Access;
1037     Control : in out Traverse_Control);
1038
1039   overriding procedure Visit_Part_Decomposition
1040    (Self    : in out UML_Containment_Iterator;
1041     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1042     Element : not null AMF.UML.Part_Decompositions.UML_Part_Decomposition_Access;
1043     Control : in out Traverse_Control);
1044
1045   overriding procedure Visit_Port
1046    (Self    : in out UML_Containment_Iterator;
1047     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1048     Element : not null AMF.UML.Ports.UML_Port_Access;
1049     Control : in out Traverse_Control);
1050
1051   overriding procedure Visit_Primitive_Type
1052    (Self    : in out UML_Containment_Iterator;
1053     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1054     Element : not null AMF.UML.Primitive_Types.UML_Primitive_Type_Access;
1055     Control : in out Traverse_Control);
1056
1057   overriding procedure Visit_Profile
1058    (Self    : in out UML_Containment_Iterator;
1059     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1060     Element : not null AMF.UML.Profiles.UML_Profile_Access;
1061     Control : in out Traverse_Control);
1062
1063   overriding procedure Visit_Profile_Application
1064    (Self    : in out UML_Containment_Iterator;
1065     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1066     Element : not null AMF.UML.Profile_Applications.UML_Profile_Application_Access;
1067     Control : in out Traverse_Control);
1068
1069   overriding procedure Visit_Property
1070    (Self    : in out UML_Containment_Iterator;
1071     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1072     Element : not null AMF.UML.Properties.UML_Property_Access;
1073     Control : in out Traverse_Control);
1074
1075   overriding procedure Visit_Protocol_Conformance
1076    (Self    : in out UML_Containment_Iterator;
1077     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1078     Element : not null AMF.UML.Protocol_Conformances.UML_Protocol_Conformance_Access;
1079     Control : in out Traverse_Control);
1080
1081   overriding procedure Visit_Protocol_State_Machine
1082    (Self    : in out UML_Containment_Iterator;
1083     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1084     Element : not null AMF.UML.Protocol_State_Machines.UML_Protocol_State_Machine_Access;
1085     Control : in out Traverse_Control);
1086
1087   overriding procedure Visit_Protocol_Transition
1088    (Self    : in out UML_Containment_Iterator;
1089     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1090     Element : not null AMF.UML.Protocol_Transitions.UML_Protocol_Transition_Access;
1091     Control : in out Traverse_Control);
1092
1093   overriding procedure Visit_Pseudostate
1094    (Self    : in out UML_Containment_Iterator;
1095     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1096     Element : not null AMF.UML.Pseudostates.UML_Pseudostate_Access;
1097     Control : in out Traverse_Control);
1098
1099   overriding procedure Visit_Qualifier_Value
1100    (Self    : in out UML_Containment_Iterator;
1101     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1102     Element : not null AMF.UML.Qualifier_Values.UML_Qualifier_Value_Access;
1103     Control : in out Traverse_Control);
1104
1105   overriding procedure Visit_Raise_Exception_Action
1106    (Self    : in out UML_Containment_Iterator;
1107     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1108     Element : not null AMF.UML.Raise_Exception_Actions.UML_Raise_Exception_Action_Access;
1109     Control : in out Traverse_Control);
1110
1111   overriding procedure Visit_Read_Extent_Action
1112    (Self    : in out UML_Containment_Iterator;
1113     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1114     Element : not null AMF.UML.Read_Extent_Actions.UML_Read_Extent_Action_Access;
1115     Control : in out Traverse_Control);
1116
1117   overriding procedure Visit_Read_Is_Classified_Object_Action
1118    (Self    : in out UML_Containment_Iterator;
1119     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1120     Element : not null AMF.UML.Read_Is_Classified_Object_Actions.UML_Read_Is_Classified_Object_Action_Access;
1121     Control : in out Traverse_Control);
1122
1123   overriding procedure Visit_Read_Link_Action
1124    (Self    : in out UML_Containment_Iterator;
1125     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1126     Element : not null AMF.UML.Read_Link_Actions.UML_Read_Link_Action_Access;
1127     Control : in out Traverse_Control);
1128
1129   overriding procedure Visit_Read_Link_Object_End_Action
1130    (Self    : in out UML_Containment_Iterator;
1131     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1132     Element : not null AMF.UML.Read_Link_Object_End_Actions.UML_Read_Link_Object_End_Action_Access;
1133     Control : in out Traverse_Control);
1134
1135   overriding procedure Visit_Read_Link_Object_End_Qualifier_Action
1136    (Self    : in out UML_Containment_Iterator;
1137     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1138     Element : not null AMF.UML.Read_Link_Object_End_Qualifier_Actions.UML_Read_Link_Object_End_Qualifier_Action_Access;
1139     Control : in out Traverse_Control);
1140
1141   overriding procedure Visit_Read_Self_Action
1142    (Self    : in out UML_Containment_Iterator;
1143     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1144     Element : not null AMF.UML.Read_Self_Actions.UML_Read_Self_Action_Access;
1145     Control : in out Traverse_Control);
1146
1147   overriding procedure Visit_Read_Structural_Feature_Action
1148    (Self    : in out UML_Containment_Iterator;
1149     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1150     Element : not null AMF.UML.Read_Structural_Feature_Actions.UML_Read_Structural_Feature_Action_Access;
1151     Control : in out Traverse_Control);
1152
1153   overriding procedure Visit_Read_Variable_Action
1154    (Self    : in out UML_Containment_Iterator;
1155     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1156     Element : not null AMF.UML.Read_Variable_Actions.UML_Read_Variable_Action_Access;
1157     Control : in out Traverse_Control);
1158
1159   overriding procedure Visit_Realization
1160    (Self    : in out UML_Containment_Iterator;
1161     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1162     Element : not null AMF.UML.Realizations.UML_Realization_Access;
1163     Control : in out Traverse_Control);
1164
1165   overriding procedure Visit_Reception
1166    (Self    : in out UML_Containment_Iterator;
1167     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1168     Element : not null AMF.UML.Receptions.UML_Reception_Access;
1169     Control : in out Traverse_Control);
1170
1171   overriding procedure Visit_Reclassify_Object_Action
1172    (Self    : in out UML_Containment_Iterator;
1173     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1174     Element : not null AMF.UML.Reclassify_Object_Actions.UML_Reclassify_Object_Action_Access;
1175     Control : in out Traverse_Control);
1176
1177   overriding procedure Visit_Redefinable_Template_Signature
1178    (Self    : in out UML_Containment_Iterator;
1179     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1180     Element : not null AMF.UML.Redefinable_Template_Signatures.UML_Redefinable_Template_Signature_Access;
1181     Control : in out Traverse_Control);
1182
1183   overriding procedure Visit_Reduce_Action
1184    (Self    : in out UML_Containment_Iterator;
1185     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1186     Element : not null AMF.UML.Reduce_Actions.UML_Reduce_Action_Access;
1187     Control : in out Traverse_Control);
1188
1189   overriding procedure Visit_Region
1190    (Self    : in out UML_Containment_Iterator;
1191     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1192     Element : not null AMF.UML.Regions.UML_Region_Access;
1193     Control : in out Traverse_Control);
1194
1195   overriding procedure Visit_Remove_Structural_Feature_Value_Action
1196    (Self    : in out UML_Containment_Iterator;
1197     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1198     Element : not null AMF.UML.Remove_Structural_Feature_Value_Actions.UML_Remove_Structural_Feature_Value_Action_Access;
1199     Control : in out Traverse_Control);
1200
1201   overriding procedure Visit_Remove_Variable_Value_Action
1202    (Self    : in out UML_Containment_Iterator;
1203     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1204     Element : not null AMF.UML.Remove_Variable_Value_Actions.UML_Remove_Variable_Value_Action_Access;
1205     Control : in out Traverse_Control);
1206
1207   overriding procedure Visit_Reply_Action
1208    (Self    : in out UML_Containment_Iterator;
1209     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1210     Element : not null AMF.UML.Reply_Actions.UML_Reply_Action_Access;
1211     Control : in out Traverse_Control);
1212
1213   overriding procedure Visit_Send_Object_Action
1214    (Self    : in out UML_Containment_Iterator;
1215     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1216     Element : not null AMF.UML.Send_Object_Actions.UML_Send_Object_Action_Access;
1217     Control : in out Traverse_Control);
1218
1219   overriding procedure Visit_Send_Signal_Action
1220    (Self    : in out UML_Containment_Iterator;
1221     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1222     Element : not null AMF.UML.Send_Signal_Actions.UML_Send_Signal_Action_Access;
1223     Control : in out Traverse_Control);
1224
1225   overriding procedure Visit_Sequence_Node
1226    (Self    : in out UML_Containment_Iterator;
1227     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1228     Element : not null AMF.UML.Sequence_Nodes.UML_Sequence_Node_Access;
1229     Control : in out Traverse_Control);
1230
1231   overriding procedure Visit_Signal
1232    (Self    : in out UML_Containment_Iterator;
1233     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1234     Element : not null AMF.UML.Signals.UML_Signal_Access;
1235     Control : in out Traverse_Control);
1236
1237   overriding procedure Visit_Signal_Event
1238    (Self    : in out UML_Containment_Iterator;
1239     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1240     Element : not null AMF.UML.Signal_Events.UML_Signal_Event_Access;
1241     Control : in out Traverse_Control);
1242
1243   overriding procedure Visit_Slot
1244    (Self    : in out UML_Containment_Iterator;
1245     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1246     Element : not null AMF.UML.Slots.UML_Slot_Access;
1247     Control : in out Traverse_Control);
1248
1249   overriding procedure Visit_Start_Classifier_Behavior_Action
1250    (Self    : in out UML_Containment_Iterator;
1251     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1252     Element : not null AMF.UML.Start_Classifier_Behavior_Actions.UML_Start_Classifier_Behavior_Action_Access;
1253     Control : in out Traverse_Control);
1254
1255   overriding procedure Visit_Start_Object_Behavior_Action
1256    (Self    : in out UML_Containment_Iterator;
1257     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1258     Element : not null AMF.UML.Start_Object_Behavior_Actions.UML_Start_Object_Behavior_Action_Access;
1259     Control : in out Traverse_Control);
1260
1261   overriding procedure Visit_State
1262    (Self    : in out UML_Containment_Iterator;
1263     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1264     Element : not null AMF.UML.States.UML_State_Access;
1265     Control : in out Traverse_Control);
1266
1267   overriding procedure Visit_State_Invariant
1268    (Self    : in out UML_Containment_Iterator;
1269     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1270     Element : not null AMF.UML.State_Invariants.UML_State_Invariant_Access;
1271     Control : in out Traverse_Control);
1272
1273   overriding procedure Visit_State_Machine
1274    (Self    : in out UML_Containment_Iterator;
1275     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1276     Element : not null AMF.UML.State_Machines.UML_State_Machine_Access;
1277     Control : in out Traverse_Control);
1278
1279   overriding procedure Visit_Stereotype
1280    (Self    : in out UML_Containment_Iterator;
1281     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1282     Element : not null AMF.UML.Stereotypes.UML_Stereotype_Access;
1283     Control : in out Traverse_Control);
1284
1285   overriding procedure Visit_String_Expression
1286    (Self    : in out UML_Containment_Iterator;
1287     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1288     Element : not null AMF.UML.String_Expressions.UML_String_Expression_Access;
1289     Control : in out Traverse_Control);
1290
1291   overriding procedure Visit_Structured_Activity_Node
1292    (Self    : in out UML_Containment_Iterator;
1293     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1294     Element : not null AMF.UML.Structured_Activity_Nodes.UML_Structured_Activity_Node_Access;
1295     Control : in out Traverse_Control);
1296
1297   overriding procedure Visit_Substitution
1298    (Self    : in out UML_Containment_Iterator;
1299     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1300     Element : not null AMF.UML.Substitutions.UML_Substitution_Access;
1301     Control : in out Traverse_Control);
1302
1303   overriding procedure Visit_Template_Binding
1304    (Self    : in out UML_Containment_Iterator;
1305     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1306     Element : not null AMF.UML.Template_Bindings.UML_Template_Binding_Access;
1307     Control : in out Traverse_Control);
1308
1309   overriding procedure Visit_Template_Parameter
1310    (Self    : in out UML_Containment_Iterator;
1311     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1312     Element : not null AMF.UML.Template_Parameters.UML_Template_Parameter_Access;
1313     Control : in out Traverse_Control);
1314
1315   overriding procedure Visit_Template_Parameter_Substitution
1316    (Self    : in out UML_Containment_Iterator;
1317     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1318     Element : not null AMF.UML.Template_Parameter_Substitutions.UML_Template_Parameter_Substitution_Access;
1319     Control : in out Traverse_Control);
1320
1321   overriding procedure Visit_Template_Signature
1322    (Self    : in out UML_Containment_Iterator;
1323     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1324     Element : not null AMF.UML.Template_Signatures.UML_Template_Signature_Access;
1325     Control : in out Traverse_Control);
1326
1327   overriding procedure Visit_Test_Identity_Action
1328    (Self    : in out UML_Containment_Iterator;
1329     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1330     Element : not null AMF.UML.Test_Identity_Actions.UML_Test_Identity_Action_Access;
1331     Control : in out Traverse_Control);
1332
1333   overriding procedure Visit_Time_Constraint
1334    (Self    : in out UML_Containment_Iterator;
1335     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1336     Element : not null AMF.UML.Time_Constraints.UML_Time_Constraint_Access;
1337     Control : in out Traverse_Control);
1338
1339   overriding procedure Visit_Time_Event
1340    (Self    : in out UML_Containment_Iterator;
1341     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1342     Element : not null AMF.UML.Time_Events.UML_Time_Event_Access;
1343     Control : in out Traverse_Control);
1344
1345   overriding procedure Visit_Time_Expression
1346    (Self    : in out UML_Containment_Iterator;
1347     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1348     Element : not null AMF.UML.Time_Expressions.UML_Time_Expression_Access;
1349     Control : in out Traverse_Control);
1350
1351   overriding procedure Visit_Time_Interval
1352    (Self    : in out UML_Containment_Iterator;
1353     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1354     Element : not null AMF.UML.Time_Intervals.UML_Time_Interval_Access;
1355     Control : in out Traverse_Control);
1356
1357   overriding procedure Visit_Time_Observation
1358    (Self    : in out UML_Containment_Iterator;
1359     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1360     Element : not null AMF.UML.Time_Observations.UML_Time_Observation_Access;
1361     Control : in out Traverse_Control);
1362
1363   overriding procedure Visit_Transition
1364    (Self    : in out UML_Containment_Iterator;
1365     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1366     Element : not null AMF.UML.Transitions.UML_Transition_Access;
1367     Control : in out Traverse_Control);
1368
1369   overriding procedure Visit_Trigger
1370    (Self    : in out UML_Containment_Iterator;
1371     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1372     Element : not null AMF.UML.Triggers.UML_Trigger_Access;
1373     Control : in out Traverse_Control);
1374
1375   overriding procedure Visit_Unmarshall_Action
1376    (Self    : in out UML_Containment_Iterator;
1377     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1378     Element : not null AMF.UML.Unmarshall_Actions.UML_Unmarshall_Action_Access;
1379     Control : in out Traverse_Control);
1380
1381   overriding procedure Visit_Usage
1382    (Self    : in out UML_Containment_Iterator;
1383     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1384     Element : not null AMF.UML.Usages.UML_Usage_Access;
1385     Control : in out Traverse_Control);
1386
1387   overriding procedure Visit_Use_Case
1388    (Self    : in out UML_Containment_Iterator;
1389     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1390     Element : not null AMF.UML.Use_Cases.UML_Use_Case_Access;
1391     Control : in out Traverse_Control);
1392
1393   overriding procedure Visit_Value_Pin
1394    (Self    : in out UML_Containment_Iterator;
1395     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1396     Element : not null AMF.UML.Value_Pins.UML_Value_Pin_Access;
1397     Control : in out Traverse_Control);
1398
1399   overriding procedure Visit_Value_Specification_Action
1400    (Self    : in out UML_Containment_Iterator;
1401     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1402     Element : not null AMF.UML.Value_Specification_Actions.UML_Value_Specification_Action_Access;
1403     Control : in out Traverse_Control);
1404
1405   overriding procedure Visit_Variable
1406    (Self    : in out UML_Containment_Iterator;
1407     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
1408     Element : not null AMF.UML.Variables.UML_Variable_Access;
1409     Control : in out Traverse_Control);
1410
1411private
1412
1413   type UML_Containment_Iterator is
1414     limited new Base_Iterator
1415       and AMF.Visitors.UML_Iterators.UML_Iterator
1416         with null record;
1417
1418end AMF.Visitors.Generic_UML_Containment;
1419