<?xml version="1.0" encoding="UTF-8"?>
<contexts>
   <context id="SequenceDDiagram">
     <description>
       
       
         
   <!-- Start of user code SequenceDDiagram description -->
   
   <!-- End of user code SequenceDDiagram description -->
   
      </description>
   </context>
   <context id="SequenceDiagramDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - titleExpression: a string.

          - preconditionExpression: a boolean.

          - rootExpression: an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.

          - endsOrdering: a Collection&lt;EObject> or an EObject.
                . eventEnds: a List<EObject> containing the semantic event ends.

          - instanceRolesOrdering: a Collection&lt;EObject> or an EObject.


         
   <!-- Start of user code SequenceDiagramDescription description -->
   
   <!-- End of user code SequenceDiagramDescription description -->
   
      </description>
   </context>
   <context id="InstanceRoleMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.


         
   <!-- Start of user code InstanceRoleMapping description -->
   
   <!-- End of user code InstanceRoleMapping description -->
   
      </description>
   </context>
   <context id="EventMapping">
     <description>
       
       
         
   <!-- Start of user code EventMapping description -->
   
   <!-- End of user code EventMapping description -->
   
      </description>
   </context>
   <context id="DelimitedEventMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - startingEndFinderExpression: an EObject.

          - finishingEndFinderExpression: an EObject.


         
   <!-- Start of user code DelimitedEventMapping description -->
       The starting and finishing ends must not be the same semantic object except for StateMapping.
       
       StateMapping allows to have the same semantic element as starting and finishing end. It can be used to represent punctual/instantaneous elements. 
       It will count for a single event end in semantic and graphical orderings and will be considered for feedback during resize and move as the center of the figure repsenting the State.
       
   <!-- End of user code DelimitedEventMapping description -->
   
      </description>
   </context>
   <context id="ExecutionMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - startingEndFinderExpression: an EObject.

          - finishingEndFinderExpression: an EObject.


         
   <!-- Start of user code ExecutionMapping description -->
   
   <!-- End of user code ExecutionMapping description -->
   
      </description>
   </context>
   <context id="StateMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - startingEndFinderExpression: an EObject.

          - finishingEndFinderExpression: an EObject.


         
   <!-- Start of user code StateMapping description -->
       StateMapping allows to have the same semantic element as starting and finishing end. It can be used to represent punctual/instantaneous elements. 
       It will count for a single event end in semantic and graphical orderings and will be considered for feedback during resize and move as the center of the figure repsenting the State.
       
   <!-- End of user code StateMapping description -->
   
      </description>
   </context>
   <context id="EndOfLifeMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.


         
   <!-- Start of user code EndOfLifeMapping description -->
   
   <!-- End of user code EndOfLifeMapping description -->
   
      </description>
   </context>
   <context id="MessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - targetFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sourceFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - targetExpression: an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - pathExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . element: the semantic element  of the current edge.
                . source: the semantic target of the current source node.
                . target: the semantic element of the current target node.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.


         
   <!-- Start of user code MessageMapping description -->
   
   <!-- End of user code MessageMapping description -->
   
      </description>
   </context>
   <context id="BasicMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - targetFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sourceFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - targetExpression: an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - pathExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . element: the semantic element  of the current edge.
                . source: the semantic target of the current source node.
                . target: the semantic element of the current target node.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.


         
   <!-- Start of user code BasicMessageMapping description -->
   
   <!-- End of user code BasicMessageMapping description -->
   
      </description>
   </context>
   <context id="ReturnMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - targetFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sourceFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - targetExpression: an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - pathExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . element: the semantic element  of the current edge.
                . source: the semantic target of the current source node.
                . target: the semantic element of the current target node.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.

          - invocationMessageFinderExpression: an EObject.


         
   <!-- Start of user code ReturnMessageMapping description -->
   
   <!-- End of user code ReturnMessageMapping description -->
   
      </description>
   </context>
   <context id="CreationMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - targetFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sourceFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - targetExpression: an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - pathExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . element: the semantic element  of the current edge.
                . source: the semantic target of the current source node.
                . target: the semantic element of the current target node.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.


         
   <!-- Start of user code CreationMessageMapping description -->
   
   <!-- End of user code CreationMessageMapping description -->
   
      </description>
   </context>
   <context id="DestructionMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - targetFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sourceFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - targetExpression: an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - pathExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . element: the semantic element  of the current edge.
                . source: the semantic target of the current source node.
                . target: the semantic element of the current target node.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.


         
   <!-- Start of user code DestructionMessageMapping description -->
   
   <!-- End of user code DestructionMessageMapping description -->
   
      </description>
   </context>
   <context id="MessageEndVariable">
     <description>
       
       
         
   <!-- Start of user code MessageEndVariable description -->
   
   <!-- End of user code MessageEndVariable description -->
   
      </description>
   </context>
   <context id="CoveredLifelinesVariable">
     <description>
       
       
         
   <!-- Start of user code CoveredLifelinesVariable description -->
   
   <!-- End of user code CoveredLifelinesVariable description -->
   
      </description>
   </context>
   <context id="FrameMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - startingEndFinderExpression: an EObject.

          - finishingEndFinderExpression: an EObject.

          - coveredLifelinesExpression: the list of semantic EObjects representing the lifelines which are semantically covered by the frame.

          - centerLabelExpression: the text to show in the center of the IU


         
   <!-- Start of user code FrameMapping description -->
   
   <!-- End of user code FrameMapping description -->
   
      </description>
   </context>
   <context id="InteractionUseMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - startingEndFinderExpression: an EObject.

          - finishingEndFinderExpression: an EObject.

          - coveredLifelinesExpression: the list of semantic EObjects representing the lifelines which are semantically covered by the frame.

          - centerLabelExpression: the text to show in the center of the IU


         
   <!-- Start of user code InteractionUseMapping description -->
   
   <!-- End of user code InteractionUseMapping description -->
   
      </description>
   </context>
   <context id="CombinedFragmentMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - startingEndFinderExpression: an EObject.

          - finishingEndFinderExpression: an EObject.

          - coveredLifelinesExpression: the list of semantic EObjects representing the lifelines which are semantically covered by the frame.

          - centerLabelExpression: the text to show in the center of the IU


         
   <!-- Start of user code CombinedFragmentMapping description -->
   
   <!-- End of user code CombinedFragmentMapping description -->
   
      </description>
   </context>
   <context id="OperandMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.

          - startingEndFinderExpression: an EObject.

          - finishingEndFinderExpression: an EObject.


         
   <!-- Start of user code OperandMapping description -->
   
   <!-- End of user code OperandMapping description -->
   
      </description>
   </context>
   <context id="ObservationPointMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.
                . sourceView: (edge only) the source view of the current potential edge.
                . source: (edge only) the semantic element of sourceView.
                . targetView: (edge only) the target view of the current potential edge.
                . target: (edge only) the semantic element of targetView.

          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - semanticElements: a Collection&lt;EObject> or an EObject.
                . diagram: the current DSemanticDiagram.
                . view: the current view created from the current mapping.
                . viewpoint: (deprecated) the current DSemanticDiagram.


         
   <!-- Start of user code ObservationPointMapping description -->
   
   <!-- End of user code ObservationPointMapping description -->
   
      </description>
   </context>
   <context id="SequenceDiagramToolDescription">
     <description>
       
       
         
   <!-- Start of user code SequenceDiagramToolDescription description -->
   
   <!-- End of user code SequenceDiagramToolDescription description -->
   
      </description>
   </context>
   <context id="OrderedElementCreationTool">
     <description>
       
       
         
   <!-- Start of user code OrderedElementCreationTool description -->
   
   <!-- End of user code OrderedElementCreationTool description -->
   
      </description>
   </context>
   <context id="CoveringElementCreationTool">
     <description>
       
       
         
   <!-- Start of user code CoveringElementCreationTool description -->
   
   <!-- End of user code CoveringElementCreationTool description -->
   
      </description>
   </context>
   <context id="InstanceRoleCreationTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - predecessor: 
            - container: The variable container that represents the semantic element of the clicked view.
            - containerView: The variable containerView that represents the clickedView (instance of ViewPoint or ViewPointElement).
  
   <!-- Start of user code InstanceRoleCreationTool description -->
   
   <!-- End of user code InstanceRoleCreationTool description -->
   
      </description>
   </context>
   <context id="LifelineCreationTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - container: The semantic element of the cicked view.
            - containerView: The clicked view (instance of ViewPoint or ViewNodeContainer).
  
   <!-- Start of user code LifelineCreationTool description -->
   
   <!-- End of user code LifelineCreationTool description -->
   
      </description>
   </context>
   <context id="MessageCreationTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.

          - connectionStartPrecondition: a boolean.
                . container: the semantic element of diagram.
                . preSourceView: (edge only) the source view of the current potential edge.
                . preSource: (edge only) the semantic element of $preSourceView.
                . diagram: the diagram of the current potential edge


       List of the available variables for tool operations:
            - source: The semantic element of the source view.
            - target: The semantic element of the target view.
            - sourceView: The source view (instance of EdgeTarget)
            - targetView: The target view (instance of EdgeTarget)
            - startingEndPredecessor: 
            - finishingEndPredecessor: 
  
   <!-- Start of user code MessageCreationTool description -->
   
   <!-- End of user code MessageCreationTool description -->
   
      </description>
   </context>
   <context id="ExecutionCreationTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - container: The variable container that represents the semantic element of the clicked view.
            - containerView: The variable containerView that represents the clickedView (instance of ViewPoint or ViewPointElement).
            - startingEndPredecessor: 
            - finishingEndPredecessor: 
  
   <!-- Start of user code ExecutionCreationTool description -->
   
   <!-- End of user code ExecutionCreationTool description -->
   
      </description>
   </context>
   <context id="StateCreationTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - container: The variable container that represents the semantic element of the clicked view.
            - containerView: The variable containerView that represents the clickedView (instance of ViewPoint or ViewPointElement).
            - startingEndPredecessor: 
            - finishingEndPredecessor: 
  
   <!-- Start of user code StateCreationTool description -->
   
   <!-- End of user code StateCreationTool description -->
   
      </description>
   </context>
   <context id="InteractionUseCreationTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - container: The semantic element of the cicked view.
            - containerView: The clicked view (instance of ViewPoint or ViewNodeContainer).
            - startingEndPredecessor: 
            - finishingEndPredecessor: 
            - coveredLifelines: 
  
   <!-- Start of user code InteractionUseCreationTool description -->
   
   <!-- End of user code InteractionUseCreationTool description -->
   
      </description>
   </context>
   <context id="CombinedFragmentCreationTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - container: The semantic element of the cicked view.
            - containerView: The clicked view (instance of ViewPoint or ViewNodeContainer).
            - startingEndPredecessor: 
            - finishingEndPredecessor: 
            - coveredLifelines: 
  
   <!-- Start of user code CombinedFragmentCreationTool description -->
   
   <!-- End of user code CombinedFragmentCreationTool description -->
   
      </description>
   </context>
   <context id="OperandCreationTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - container: The semantic element of the cicked view.
            - containerView: The clicked view (instance of ViewPoint or ViewNodeContainer).
            - startingEndPredecessor: 
            - finishingEndPredecessor: 
  
   <!-- Start of user code OperandCreationTool description -->
   
   <!-- End of user code OperandCreationTool description -->
   
      </description>
   </context>
   <context id="ObservationPointCreationTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - container: The variable container that represents the semantic element of the clicked view.
            - containerView: The variable containerView that represents the clickedView (instance of ViewPoint or ViewPointElement).
            - startingEndPredecessor: 
            - finishingEndPredecessor: 
  
   <!-- Start of user code ObservationPointCreationTool description -->
   
   <!-- End of user code ObservationPointCreationTool description -->
   
      </description>
   </context>
   <context id="ReorderTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - startingEndPredecessorBefore: 
            - startingEndPredecessorAfter: 
            - finishingEndPredecessorBefore: 
            - finishingEndPredecessorAfter: 
  
   <!-- Start of user code ReorderTool description -->
   
   <!-- End of user code ReorderTool description -->
   
      </description>
   </context>
   <context id="InstanceRoleReorderTool">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - predecessorBefore: 
            - predecessorAfter: 
  
   <!-- Start of user code InstanceRoleReorderTool description -->
   
   <!-- End of user code InstanceRoleReorderTool description -->
   
      </description>
   </context>
   <context id="EventEndsOrdering">
     <description>
       
       
         
   <!-- Start of user code EventEndsOrdering description -->
   
   <!-- End of user code EventEndsOrdering description -->
   
      </description>
   </context>
   <context id="EventEnd">
     <description>
       
       
         
   <!-- Start of user code EventEnd description -->
   
   <!-- End of user code EventEnd description -->
   
      </description>
   </context>
   <context id="SingleEventEnd">
     <description>
       
       
         
   <!-- Start of user code SingleEventEnd description -->
   
   <!-- End of user code SingleEventEnd description -->
   
      </description>
   </context>
   <context id="CompoundEventEnd">
     <description>
       
       
         
   <!-- Start of user code CompoundEventEnd description -->
   
   <!-- End of user code CompoundEventEnd description -->
   
      </description>
   </context>
   <context id="InstanceRolesOrdering">
     <description>
       
       
         
   <!-- Start of user code InstanceRolesOrdering description -->
   
   <!-- End of user code InstanceRolesOrdering description -->
   
      </description>
   </context>
   <context id="TTransformer">
     <description>
       
       
         
   <!-- Start of user code TTransformer description -->
   
   <!-- End of user code TTransformer description -->
   
      </description>
   </context>
   <context id="TAbstractMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.


         
   <!-- Start of user code TAbstractMapping description -->
   
   <!-- End of user code TAbstractMapping description -->
   
      </description>
   </context>
   <context id="TSequenceDiagram">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - endsOrdering: a Collection&lt;EObject> or an EObject.
                . eventEnds: a List<EObject> containing the semantic event ends.


         
   <!-- Start of user code TSequenceDiagram description -->
   
   <!-- End of user code TSequenceDiagram description -->
   
      </description>
   </context>
   <context id="TMessageExtremity">
     <description>
       
       
         
   <!-- Start of user code TMessageExtremity description -->
   
   <!-- End of user code TMessageExtremity description -->
   
      </description>
   </context>
   <context id="TLifelineMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - eolVisibleExpression: a boolean.
                . containerView: the view that sould contain the potential views of the checked elements.
                . container: the semantic element of $containerView.
                . viewpoint: (deprecated) the current DSemanticDiagram.
                . diagram: the current DSemanticDiagram.


         
   <!-- Start of user code TLifelineMapping description -->
   
   <!-- End of user code TLifelineMapping description -->
   
      </description>
   </context>
   <context id="TLifelineStyle">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - lifelineWidthComputationExpression: an integer.


         
   <!-- Start of user code TLifelineStyle description -->
   
   <!-- End of user code TLifelineStyle description -->
   
      </description>
   </context>
   <context id="TConditionalLifelineStyle">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - predicateExpression: a boolean.
                . view: the current view.
                . container: the semantic container.


         
   <!-- Start of user code TConditionalLifelineStyle description -->
   
   <!-- End of user code TConditionalLifelineStyle description -->
   
      </description>
   </context>
   <context id="TExecutionMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - startingEndFinderExpression: an EObject.

          - finishingEndFinderExpression: an EObject.


         
   <!-- Start of user code TExecutionMapping description -->
   
   <!-- End of user code TExecutionMapping description -->
   
      </description>
   </context>
   <context id="TExecutionStyle">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - borderSizeComputationExpression: an integer.


         
   <!-- Start of user code TExecutionStyle description -->
   
   <!-- End of user code TExecutionStyle description -->
   
      </description>
   </context>
   <context id="TConditionalExecutionStyle">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - predicateExpression: a boolean.
                . view: the current view.
                . container: the semantic container.


         
   <!-- Start of user code TConditionalExecutionStyle description -->
   
   <!-- End of user code TConditionalExecutionStyle description -->
   
      </description>
   </context>
   <context id="TMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.


         
   <!-- Start of user code TMessageMapping description -->
   
   <!-- End of user code TMessageMapping description -->
   
      </description>
   </context>
   <context id="TMessageStyle">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - labelExpression: a string.
                . diagram: the current DSemanticDiagram.
                . view: the current view for which the label is calculated.


         
   <!-- Start of user code TMessageStyle description -->
   
   <!-- End of user code TMessageStyle description -->
   
      </description>
   </context>
   <context id="TConditionalMessageStyle">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - predicateExpression: a boolean.
                . view: the current view.
                . container: the semantic container.


         
   <!-- Start of user code TConditionalMessageStyle description -->
   
   <!-- End of user code TConditionalMessageStyle description -->
   
      </description>
   </context>
   <context id="TBasicMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.

          - sourceFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - targetFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.


         
   <!-- Start of user code TBasicMessageMapping description -->
   
   <!-- End of user code TBasicMessageMapping description -->
   
      </description>
   </context>
   <context id="TSourceTargetMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.

          - sourceFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - targetFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.


         
   <!-- Start of user code TSourceTargetMessageMapping description -->
   
   <!-- End of user code TSourceTargetMessageMapping description -->
   
      </description>
   </context>
   <context id="TReturnMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.

          - invocationMessageFinderExpression: an EObject.


         
   <!-- Start of user code TReturnMessageMapping description -->
   
   <!-- End of user code TReturnMessageMapping description -->
   
      </description>
   </context>
   <context id="TCreationMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.

          - sourceFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - targetFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.


         
   <!-- Start of user code TCreationMessageMapping description -->
   
   <!-- End of user code TCreationMessageMapping description -->
   
      </description>
   </context>
   <context id="TDestructionMessageMapping">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - semanticCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . containerView: the parent view of potential candidates.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - sendingEndFinderExpression: an EObject.

          - receivingEndFinderExpression: an EObject.

          - sourceFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.

          - targetFinderExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . viewpoint: (deprecated) the current DDiagram.
                . viewPoint: (deprecated) the current DDiagram.


         
   <!-- Start of user code TDestructionMessageMapping description -->
   
   <!-- End of user code TDestructionMessageMapping description -->
   
      </description>
   </context>
</contexts>