<?xml version="1.0" encoding="UTF-8"?>
<contexts>
   <context id="DAnalysis">
     <description>
       
       
         
   <!-- Start of user code DAnalysis description -->
   
   <!-- End of user code DAnalysis description -->
   
      </description>
   </context>
   <context id="DFeatureExtension">
     <description>
       
       
         
   <!-- Start of user code DFeatureExtension description -->
   
   <!-- End of user code DFeatureExtension description -->
   
      </description>
   </context>
   <context id="DValidable">
     <description>
       Represents an element that can be validated.

       
         
   <!-- Start of user code DValidable description -->
   
   <!-- End of user code DValidable description -->
   
      </description>
   </context>
   <context id="DNavigable">
     <description>
       Represents an element that can be navigate. The user can see the details in another editor.

       
         
   <!-- Start of user code DNavigable description -->
   
   <!-- End of user code DNavigable description -->
   
      </description>
   </context>
   <context id="DStylizable">
     <description>
       An element that has a style.

       
         
   <!-- Start of user code DStylizable description -->
   
   <!-- End of user code DStylizable description -->
   
      </description>
   </context>
   <context id="DRefreshable">
     <description>
       An element that can be refreshed.

       
         
   <!-- Start of user code DRefreshable description -->
   
   <!-- End of user code DRefreshable description -->
   
      </description>
   </context>
   <context id="DLabelled">
     <description>
       An element that has a label.

       
         
   <!-- Start of user code DLabelled description -->
   
   <!-- End of user code DLabelled description -->
   
      </description>
   </context>
   <context id="DMappingBased">
     <description>
       An element that has a mapping.

       
         
   <!-- Start of user code DMappingBased description -->
   
   <!-- End of user code DMappingBased description -->
   
      </description>
   </context>
   <context id="DContainer">
     <description>
       An element that contains others diagram elements.

       
         
   <!-- Start of user code DContainer description -->
   
   <!-- End of user code DContainer description -->
   
      </description>
   </context>
   <context id="DRepresentationContainer">
     <description>
       
       
         
   <!-- Start of user code DRepresentationContainer description -->
   
   <!-- End of user code DRepresentationContainer description -->
   
      </description>
   </context>
   <context id="DSemanticDecorator">
     <description>
       An element that has a link to the semantic model.

       
         
   <!-- Start of user code DSemanticDecorator description -->
   
   <!-- End of user code DSemanticDecorator description -->
   
      </description>
   </context>
   <context id="DRepresentation">
     <description>
       
       
         
   <!-- Start of user code DRepresentation description -->
   
   <!-- End of user code DRepresentation description -->
   
      </description>
   </context>
   <context id="DRepresentationElement">
     <description>
       
       
         
   <!-- Start of user code DRepresentationElement description -->
   
   <!-- End of user code DRepresentationElement description -->
   
      </description>
   </context>
   <context id="DView">
     <description>
       An view is the root element

       
         
   <!-- Start of user code DView description -->
   
   <!-- End of user code DView description -->
   
      </description>
   </context>
   <context id="MetaModelExtension">
     <description>
       Represent a Meta Model extension.
       A meta model extension adds types, attributes and references into an existing meta model

       
         
   <!-- Start of user code MetaModelExtension description -->
   
   <!-- End of user code MetaModelExtension description -->
   
      </description>
   </context>
   <context id="Decoration">
     <description>
       Represent a decoration of a diagram element with a specific icon, based on its relationships with MetaElements of the MetaModel.

       
         
   <!-- Start of user code Decoration description -->
   
   <!-- End of user code Decoration description -->
   
      </description>
   </context>
   <context id="DNavigationLink">
     <description>
       A link for a navigable.

       
         
   <!-- Start of user code DNavigationLink description -->
   
   <!-- End of user code DNavigationLink description -->
   
      </description>
   </context>
   <context id="DSourceFileLink">
     <description>
       A link that references a Source File.

       
         
   <!-- Start of user code DSourceFileLink description -->
   
   <!-- End of user code DSourceFileLink description -->
   
      </description>
   </context>
   <context id="DAnalysisCustomData">
     <description>
       
       
         
   <!-- Start of user code DAnalysisCustomData description -->
   
   <!-- End of user code DAnalysisCustomData description -->
   
      </description>
   </context>
   <context id="LabelStyle">
     <description>
       The style of a label.

       
         
   <!-- Start of user code LabelStyle description -->
   
   <!-- End of user code LabelStyle description -->
   
      </description>
   </context>
   <context id="Style">
     <description>
       The super class of all styles.

       
         
   <!-- Start of user code Style description -->
   
   <!-- End of user code Style description -->
   
      </description>
   </context>
   <context id="RGBValues">
     <description>
       
       
         
   <!-- Start of user code RGBValues description -->
   
   <!-- End of user code RGBValues description -->
   
      </description>
   </context>
   <context id="DAnalysisSessionEObject">
     <description>
       
       
         
   <!-- Start of user code DAnalysisSessionEObject description -->
   
   <!-- End of user code DAnalysisSessionEObject description -->
   
      </description>
   </context>
   <context id="SessionManagerEObject">
     <description>
       
       
         
   <!-- Start of user code SessionManagerEObject description -->
   
   <!-- End of user code SessionManagerEObject description -->
   
      </description>
   </context>
   <context id="DResource">
     <description>
       
       
         
   <!-- Start of user code DResource description -->
   
   <!-- End of user code DResource description -->
   
      </description>
   </context>
   <context id="DFile">
     <description>
       
       
         
   <!-- Start of user code DFile description -->
   
   <!-- End of user code DFile description -->
   
      </description>
   </context>
   <context id="DResourceContainer">
     <description>
       
       
         
   <!-- Start of user code DResourceContainer description -->
   
   <!-- End of user code DResourceContainer description -->
   
      </description>
   </context>
   <context id="DProject">
     <description>
       
       
         
   <!-- Start of user code DProject description -->
   
   <!-- End of user code DProject description -->
   
      </description>
   </context>
   <context id="DFolder">
     <description>
       
       
         
   <!-- Start of user code DFolder description -->
   
   <!-- End of user code DFolder description -->
   
      </description>
   </context>
   <context id="DModel">
     <description>
       
       
         
   <!-- Start of user code DModel description -->
   
   <!-- End of user code DModel description -->
   
      </description>
   </context>
   <context id="BasicLabelStyle">
     <description>
       The style of a label.

       
         
   <!-- Start of user code BasicLabelStyle description -->
   
   <!-- End of user code BasicLabelStyle description -->
   
      </description>
   </context>
   <context id="Customizable">
     <description>
       
       
         
   <!-- Start of user code Customizable description -->
   
   <!-- End of user code Customizable description -->
   
      </description>
   </context>
   <context id="Group">
     <description>
       
       
         
   <!-- Start of user code Group description -->
   
   <!-- End of user code Group description -->
   
      </description>
   </context>
   <context id="Component">
     <description>
       
       
         
   <!-- Start of user code Component description -->
   
   <!-- End of user code Component description -->
   
      </description>
   </context>
   <context id="Viewpoint">
     <description>
       A Viewpoint defines a "way of looking at your model", you could make an analogy with "What is your current concern about your analysis". It defines representations and might also define specific data only relevant for this concern.

       
         
   <!-- Start of user code Viewpoint description -->
   
   <!-- End of user code Viewpoint description -->
   
      </description>
   </context>
   <context id="FeatureExtensionDescription">
     <description>
       
       
         
   <!-- Start of user code FeatureExtensionDescription description -->
   
   <!-- End of user code FeatureExtensionDescription description -->
   
      </description>
   </context>
   <context id="RepresentationDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - titleExpression: a string.


         
   <!-- Start of user code RepresentationDescription description -->
   
   <!-- End of user code RepresentationDescription description -->
   
      </description>
   </context>
   <context id="RepresentationTemplate">
     <description>
       
       
         
   <!-- Start of user code RepresentationTemplate description -->
   
   <!-- End of user code RepresentationTemplate description -->
   
      </description>
   </context>
   <context id="RepresentationImportDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - titleExpression: a string.


         
   <!-- Start of user code RepresentationImportDescription description -->
   
   <!-- End of user code RepresentationImportDescription description -->
   
      </description>
   </context>
   <context id="RepresentationExtensionDescription">
     <description>
       
       
         
   <!-- Start of user code RepresentationExtensionDescription description -->
   
   <!-- End of user code RepresentationExtensionDescription description -->
   
      </description>
   </context>
   <context id="MetamodelExtensionSetting">
     <description>
       Describe the Meta Model extension to use.

       
         
   <!-- Start of user code MetamodelExtensionSetting description -->
   
   <!-- End of user code MetamodelExtensionSetting description -->
   
      </description>
   </context>
   <context id="JavaExtension">
     <description>
       This class allows to import a Java Class that is used as an Acceleo Service. All acceleo expressions can use the services.

       
         
   <!-- Start of user code JavaExtension description -->
   
   <!-- End of user code JavaExtension description -->
   
      </description>
   </context>
   <context id="RepresentationElementMapping">
     <description>
       
       
         
   <!-- Start of user code RepresentationElementMapping description -->
   
   <!-- End of user code RepresentationElementMapping description -->
   
      </description>
   </context>
   <context id="AbstractMappingImport">
     <description>
       
       
         
   <!-- Start of user code AbstractMappingImport description -->
   
   <!-- End of user code AbstractMappingImport description -->
   
      </description>
   </context>
   <context id="DocumentedElement">
     <description>
       
       
         
   <!-- Start of user code DocumentedElement description -->
   
   <!-- End of user code DocumentedElement description -->
   
      </description>
   </context>
   <context id="DModelElement">
     <description>
       
       
         
   <!-- Start of user code DModelElement description -->
   
   <!-- End of user code DModelElement description -->
   
      </description>
   </context>
   <context id="DAnnotation">
     <description>
       
       
         
   <!-- Start of user code DAnnotation description -->
   
   <!-- End of user code DAnnotation description -->
   
      </description>
   </context>
   <context id="ConditionalStyleDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - predicateExpression: a boolean.
                . view: the current view.
                . container: the semantic container.


         
   <!-- Start of user code ConditionalStyleDescription description -->
   
   <!-- End of user code ConditionalStyleDescription description -->
   
      </description>
   </context>
   <context id="PasteTargetDescription">
     <description>
       A PasteTargetDescription is a Description or Mapping that can have many PasteTools.

       
         
   <!-- Start of user code PasteTargetDescription description -->
   
   <!-- End of user code PasteTargetDescription description -->
   
      </description>
   </context>
   <context id="DecorationDescriptionsSet">
     <description>
       
       
         
   <!-- Start of user code DecorationDescriptionsSet description -->
   
   <!-- End of user code DecorationDescriptionsSet description -->
   
      </description>
   </context>
   <context id="DecorationDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that would contain the potential views of the checked elements.
                . container: the semantic element of the container view.
                . viewpoint: (deprecated) the current diagram.
                . diagram: the current diagram.


         
   <!-- Start of user code DecorationDescription description -->
   
   <!-- End of user code DecorationDescription description -->
   
      </description>
   </context>
   <context id="SemanticBasedDecoration">
     <description>
       A SemanticBasedDecoration applies decoration on views that targeted an element of the given type.

       Interpreted expressions, requested return type and available variables:
          - preconditionExpression: a boolean.
                . containerView: the view that would contain the potential views of the checked elements.
                . container: the semantic element of the container view.
                . viewpoint: (deprecated) the current diagram.
                . diagram: the current diagram.


         
   <!-- Start of user code SemanticBasedDecoration description -->
   
   <!-- End of user code SemanticBasedDecoration description -->
   
      </description>
   </context>
   <context id="Customization">
     <description>
       
       
         
   <!-- Start of user code Customization description -->
   
   <!-- End of user code Customization description -->
   
      </description>
   </context>
   <context id="IVSMElementCustomization">
     <description>
       
       
         
   <!-- Start of user code IVSMElementCustomization description -->
   
   <!-- End of user code IVSMElementCustomization description -->
   
      </description>
   </context>
   <context id="VSMElementCustomization">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - predicateExpression: a boolean result. True to enable the customization, false to disabled it. True by default.
                . view: the current view.
                . container: the semantic container.


         
   <!-- Start of user code VSMElementCustomization description -->
   
   <!-- End of user code VSMElementCustomization description -->
   
      </description>
   </context>
   <context id="VSMElementCustomizationReuse">
     <description>
       
       
         
   <!-- Start of user code VSMElementCustomizationReuse description -->
   
   <!-- End of user code VSMElementCustomizationReuse description -->
   
      </description>
   </context>
   <context id="EStructuralFeatureCustomization">
     <description>
       
       
         
   <!-- Start of user code EStructuralFeatureCustomization description -->
   
   <!-- End of user code EStructuralFeatureCustomization description -->
   
      </description>
   </context>
   <context id="EAttributeCustomization">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - value: A java Object to affect as new value of a EAttribute, for example a java primitive.
                . view: the current view.
                . container: the semantic container.


         
   <!-- Start of user code EAttributeCustomization description -->
   
   <!-- End of user code EAttributeCustomization description -->
   
      </description>
   </context>
   <context id="EReferenceCustomization">
     <description>
       
       
         
   <!-- Start of user code EReferenceCustomization description -->
   
   <!-- End of user code EReferenceCustomization description -->
   
      </description>
   </context>
   <context id="SelectionDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - candidatesExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the view of the container.
                . container: the semantic element of the container.

          - rootExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the view of the container.
                . container: the semantic element of the container.

          - childrenExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the view of the container.
                . container: the semantic element of the container.


         
   <!-- Start of user code SelectionDescription description -->
   
   <!-- End of user code SelectionDescription description -->
   
      </description>
   </context>
   <context id="ColorDescription">
     <description>
       A color definition, which can produce a concrete RGB triplet.

       
         
   <!-- Start of user code ColorDescription description -->
   
   <!-- End of user code ColorDescription description -->
   
      </description>
   </context>
   <context id="SystemColor">
     <description>
       A subtype of FixedColor which is only used in the system palette.
       Graphical elements which only support colors from the system
       palette can use this type instead of the more general FixedColor.

       
         
   <!-- Start of user code SystemColor description -->
   
   <!-- End of user code SystemColor description -->
   
      </description>
   </context>
   <context id="InterpolatedColor">
     <description>
       Describes a color which varies between two level color depending on the values of dynamically computed expressions.
       
       @Deprecated : Describes a color which varies between two extremes (red and green)
       depending on the values of dynamically computed expressions.

       Interpreted expressions, requested return type and available variables:
          - colorValueComputationExpression: an integer.

          - minValueComputationExpression: an integer.

          - maxValueComputationExpression: an integer.


         
   <!-- Start of user code InterpolatedColor description -->
   
   <!-- End of user code InterpolatedColor description -->
   
      </description>
   </context>
   <context id="ColorStep">
     <description>
       A ColorStep is identified by its associatedValue and references an associatedColor (FixedColor).

       Interpreted expressions, requested return type and available variables:
          - associatedValue: an integer.


         
   <!-- Start of user code ColorStep description -->
   
   <!-- End of user code ColorStep description -->
   
      </description>
   </context>
   <context id="FixedColor">
     <description>
       A fixed color description defined by a specific RGB triplet.

       
         
   <!-- Start of user code FixedColor description -->
   
   <!-- End of user code FixedColor description -->
   
      </description>
   </context>
   <context id="UserFixedColor">
     <description>
       
       
         
   <!-- Start of user code UserFixedColor description -->
   
   <!-- End of user code UserFixedColor description -->
   
      </description>
   </context>
   <context id="UserColor">
     <description>
       
       
         
   <!-- Start of user code UserColor description -->
   
   <!-- End of user code UserColor description -->
   
      </description>
   </context>
   <context id="Environment">
     <description>
       
       
         
   <!-- Start of user code Environment description -->
   
   <!-- End of user code Environment description -->
   
      </description>
   </context>
   <context id="SytemColorsPalette">
     <description>
       
       
         
   <!-- Start of user code SytemColorsPalette description -->
   
   <!-- End of user code SytemColorsPalette description -->
   
      </description>
   </context>
   <context id="UserColorsPalette">
     <description>
       
       
         
   <!-- Start of user code UserColorsPalette description -->
   
   <!-- End of user code UserColorsPalette description -->
   
      </description>
   </context>
   <context id="AnnotationEntry">
     <description>
       
       
         
   <!-- Start of user code AnnotationEntry description -->
   
   <!-- End of user code AnnotationEntry description -->
   
      </description>
   </context>
   <context id="EndUserDocumentedElement">
     <description>
       
       
         
   <!-- Start of user code EndUserDocumentedElement description -->
   
   <!-- End of user code EndUserDocumentedElement description -->
   
      </description>
   </context>
   <context id="IdentifiedElement">
     <description>
       All elements which are identified by its name (id) and which have a label to display it to the end-user.

       
         
   <!-- Start of user code IdentifiedElement description -->
   
   <!-- End of user code IdentifiedElement description -->
   
      </description>
   </context>
   <context id="ComputedColor">
     <description>
       Describes a color which each value red, blue and green are computed expressions.

       Interpreted expressions, requested return type and available variables:
          - red: an integer.

          - green: an integer.

          - blue: an integer.


         
   <!-- Start of user code ComputedColor description -->
   
   <!-- End of user code ComputedColor description -->
   
      </description>
   </context>
   <context id="DAnnotationEntry">
     <description>
       
       
         
   <!-- Start of user code DAnnotationEntry description -->
   
   <!-- End of user code DAnnotationEntry description -->
   
      </description>
   </context>
   <context id="StyleDescription">
     <description>
       
       
         
   <!-- Start of user code StyleDescription description -->
   
   <!-- End of user code StyleDescription description -->
   
      </description>
   </context>
   <context id="BasicLabelStyleDescription">
     <description>
       The style of a label.

       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 BasicLabelStyleDescription description -->
   
   <!-- End of user code BasicLabelStyleDescription description -->
   
      </description>
   </context>
   <context id="LabelStyleDescription">
     <description>
       The style of a label.

       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 LabelStyleDescription description -->
   
   <!-- End of user code LabelStyleDescription description -->
   
      </description>
   </context>
   <context id="LabelBorderStyles">
     <description>
       A group of LabelBorderStyleDescription to store in Environment.xmi.

       
         
   <!-- Start of user code LabelBorderStyles description -->
   
   <!-- End of user code LabelBorderStyles description -->
   
      </description>
   </context>
   <context id="LabelBorderStyleDescription">
     <description>
       The style of the border of a container label.

       
         
   <!-- Start of user code LabelBorderStyleDescription description -->
   
   <!-- End of user code LabelBorderStyleDescription description -->
   
      </description>
   </context>
   <context id="TooltipStyleDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - tooltipExpression: a string.
                . view: the current view.


         
   <!-- Start of user code TooltipStyleDescription description -->
   
   <!-- End of user code TooltipStyleDescription description -->
   
      </description>
   </context>
   <context id="ToolEntry">
     <description>
       
       
         
   <!-- Start of user code ToolEntry description -->
   
   <!-- End of user code ToolEntry description -->
   
      </description>
   </context>
   <context id="AbstractToolDescription">
     <description>
       Base class of all tools.

       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


         
   <!-- Start of user code AbstractToolDescription description -->
   
   <!-- End of user code AbstractToolDescription description -->
   
      </description>
   </context>
   <context id="MappingBasedToolDescription">
     <description>
       A mapping based tool. This is a tool that create a ViewPointElement.

       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


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


       List of the available variables for tool operations:
            - element: The variable container that represents the semantic element of the clicked view.
            - elementView: The variable that represents the clicked view.
  
   <!-- Start of user code ToolDescription description -->
   
   <!-- End of user code ToolDescription description -->
   
      </description>
   </context>
   <context id="PasteDescription">
     <description>
       Tool that describes a paste operation.

       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - newSemanticContainer: The semantic element of the new container view.
            - newContainerView: The new view container (DRepresentation of DRepresentationElement).
            - oldSemanticElement: The copied view.
            - copiedElement: The copied semantic element.
  
   <!-- Start of user code PasteDescription description -->
   
   <!-- End of user code PasteDescription description -->
   
      </description>
   </context>
   <context id="SelectionWizardDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.

          - candidatesExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the view of the container.
                . container: the semantic element of the container.

          - rootExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the view of the container.
                . container: the semantic element of the container.

          - childrenExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the view of the container.
                . container: the semantic element of the container.


       List of the available variables for tool operations:
            - element: 
            - containerView: 
            - container: 
  
   <!-- Start of user code SelectionWizardDescription description -->
   
   <!-- End of user code SelectionWizardDescription description -->
   
      </description>
   </context>
   <context id="PaneBasedSelectionWizardDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.

          - candidatesExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the selected view.
                . container: the semantic element of containerView.

          - rootExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the selected view.
                . container: the semantic element of containerView.

          - childrenExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the selected view.
                . container: the semantic element of containerView.

          - preSelectedCandidatesExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the selected view.
                . container: the semantic element of containerView.


       List of the available variables for tool operations:
            - element: 
            - containerView: 
            - container: 
  
   <!-- Start of user code PaneBasedSelectionWizardDescription description -->
   
   <!-- End of user code PaneBasedSelectionWizardDescription description -->
   
      </description>
   </context>
   <context id="RepresentationCreationDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.

          - titleExpression: a string.

          - browseExpression: an EObject.


       List of the available variables for tool operations:
            - containerView: The variable containerView that represents the clickedView (instance of ViewPoint or ViewPointElement).
            - representationName: The variable representationName that represents the name of the created representation.
  
   <!-- Start of user code RepresentationCreationDescription description -->
   
   <!-- End of user code RepresentationCreationDescription description -->
   
      </description>
   </context>
   <context id="RepresentationNavigationDescription">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.

          - browseExpression: an EObject.

          - navigationNameExpression: a string.
                . name: name of the targeted Representation.


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


         
   <!-- Start of user code MenuItemDescription description -->
   
   <!-- End of user code MenuItemDescription description -->
   
      </description>
   </context>
   <context id="MenuItemDescriptionReference">
     <description>
       
       
         
   <!-- Start of user code MenuItemDescriptionReference description -->
   
   <!-- End of user code MenuItemDescriptionReference description -->
   
      </description>
   </context>
   <context id="OperationAction">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


       List of the available variables for tool operations:
            - view: 
  
   <!-- Start of user code OperationAction description -->
   
   <!-- End of user code OperationAction description -->
   
      </description>
   </context>
   <context id="ExternalJavaAction">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


         
   <!-- Start of user code ExternalJavaAction description -->
   
   <!-- End of user code ExternalJavaAction description -->
   
      </description>
   </context>
   <context id="ExternalJavaActionCall">
     <description>
       An operation which can be used to call an ExternalJavaAction defined elsewhere.

       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.
                . container: the container.


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


         
   <!-- Start of user code PopupMenu description -->
   
   <!-- End of user code PopupMenu description -->
   
      </description>
   </context>
   <context id="AbstractVariable">
     <description>
       
       
         
   <!-- Start of user code AbstractVariable description -->
   
   <!-- End of user code AbstractVariable description -->
   
      </description>
   </context>
   <context id="VariableContainer">
     <description>
       
       
         
   <!-- Start of user code VariableContainer description -->
   
   <!-- End of user code VariableContainer description -->
   
      </description>
   </context>
   <context id="AcceleoVariable">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - computationExpression: a Collection&lt;Object> or an Object.


         
   <!-- Start of user code AcceleoVariable description -->
   
   <!-- End of user code AcceleoVariable description -->
   
      </description>
   </context>
   <context id="SubVariable">
     <description>
       
       
         
   <!-- Start of user code SubVariable description -->
   
   <!-- End of user code SubVariable description -->
   
      </description>
   </context>
   <context id="DialogVariable">
     <description>
       
       
         
   <!-- Start of user code DialogVariable description -->
   
   <!-- End of user code DialogVariable description -->
   
      </description>
   </context>
   <context id="ElementDropVariable">
     <description>
       
       
         
   <!-- Start of user code ElementDropVariable description -->
   
   <!-- End of user code ElementDropVariable description -->
   
      </description>
   </context>
   <context id="ElementSelectVariable">
     <description>
       
       
         
   <!-- Start of user code ElementSelectVariable description -->
   
   <!-- End of user code ElementSelectVariable description -->
   
      </description>
   </context>
   <context id="ElementVariable">
     <description>
       
       
         
   <!-- Start of user code ElementVariable description -->
   
   <!-- End of user code ElementVariable description -->
   
      </description>
   </context>
   <context id="ElementViewVariable">
     <description>
       
       
         
   <!-- Start of user code ElementViewVariable description -->
   
   <!-- End of user code ElementViewVariable description -->
   
      </description>
   </context>
   <context id="ElementDeleteVariable">
     <description>
       
       
         
   <!-- Start of user code ElementDeleteVariable description -->
   
   <!-- End of user code ElementDeleteVariable description -->
   
      </description>
   </context>
   <context id="DropContainerVariable">
     <description>
       
       
         
   <!-- Start of user code DropContainerVariable description -->
   
   <!-- End of user code DropContainerVariable description -->
   
      </description>
   </context>
   <context id="SelectContainerVariable">
     <description>
       
       
         
   <!-- Start of user code SelectContainerVariable description -->
   
   <!-- End of user code SelectContainerVariable description -->
   
      </description>
   </context>
   <context id="ContainerViewVariable">
     <description>
       
       
         
   <!-- Start of user code ContainerViewVariable description -->
   
   <!-- End of user code ContainerViewVariable description -->
   
      </description>
   </context>
   <context id="SelectModelElementVariable">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - candidatesExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the view of the container.
                . container: the semantic element of the container.

          - rootExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the view of the container.
                . container: the semantic element of the container.

          - childrenExpression: a Collection&lt;EObject> or an EObject.
                . diagram: the current DDiagram.
                . containerView: the view of the container.
                . container: the semantic element of the container.


         
   <!-- Start of user code SelectModelElementVariable description -->
   
   <!-- End of user code SelectModelElementVariable description -->
   
      </description>
   </context>
   <context id="EditMaskVariables">
     <description>
       
       
         
   <!-- Start of user code EditMaskVariables description -->
   
   <!-- End of user code EditMaskVariables description -->
   
      </description>
   </context>
   <context id="ContainerModelOperation">
     <description>
       
       
         
   <!-- Start of user code ContainerModelOperation description -->
   
   <!-- End of user code ContainerModelOperation description -->
   
      </description>
   </context>
   <context id="ModelOperation">
     <description>
       
       
         
   <!-- Start of user code ModelOperation description -->
   
   <!-- End of user code ModelOperation description -->
   
      </description>
   </context>
   <context id="InitialNodeCreationOperation">
     <description>
       
       
         
   <!-- Start of user code InitialNodeCreationOperation description -->
   
   <!-- End of user code InitialNodeCreationOperation description -->
   
      </description>
   </context>
   <context id="InitialOperation">
     <description>
       
       
         
   <!-- Start of user code InitialOperation description -->
   
   <!-- End of user code InitialOperation description -->
   
      </description>
   </context>
   <context id="InitEdgeCreationOperation">
     <description>
       
       
         
   <!-- Start of user code InitEdgeCreationOperation description -->
   
   <!-- End of user code InitEdgeCreationOperation description -->
   
      </description>
   </context>
   <context id="InitialContainerDropOperation">
     <description>
       
       
         
   <!-- Start of user code InitialContainerDropOperation description -->
   
   <!-- End of user code InitialContainerDropOperation description -->
   
      </description>
   </context>
   <context id="CreateInstance">
     <description>
       This operation allows to create a new instance. The context must be the container of the new instance.

       
         
   <!-- Start of user code CreateInstance description -->
   
   <!-- End of user code CreateInstance description -->
   
      </description>
   </context>
   <context id="ChangeContext">
     <description>
       This operation allows to change the execution context.

       Interpreted expressions, requested return type and available variables:
          - browseExpression: an EObject.


         
   <!-- Start of user code ChangeContext description -->
   
   <!-- End of user code ChangeContext description -->
   
      </description>
   </context>
   <context id="SetValue">
     <description>
       This operation allows to set a value of a feature of the current context.

       Interpreted expressions, requested return type and available variables:
          - valueExpression: any type supported by the feature.


         
   <!-- Start of user code SetValue description -->
   
   <!-- End of user code SetValue description -->
   
      </description>
   </context>
   <context id="SetObject">
     <description>
       
       
         
   <!-- Start of user code SetObject description -->
   
   <!-- End of user code SetObject description -->
   
      </description>
   </context>
   <context id="Unset">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - elementExpression: a Collection&lt;EObject> or an EObject.


         
   <!-- Start of user code Unset description -->
   
   <!-- End of user code Unset description -->
   
      </description>
   </context>
   <context id="MoveElement">
     <description>
       Move the element of the current context to another container.

       Interpreted expressions, requested return type and available variables:
          - newContainerExpression: an EObject.


         
   <!-- Start of user code MoveElement description -->
   
   <!-- End of user code MoveElement description -->
   
      </description>
   </context>
   <context id="RemoveElement">
     <description>
       Remove the element represented by the current context.

       
         
   <!-- Start of user code RemoveElement description -->
   
   <!-- End of user code RemoveElement description -->
   
      </description>
   </context>
   <context id="For">
     <description>
       This operation allows to iterate a list of elements.

       Interpreted expressions, requested return type and available variables:
          - expression: a Collection&lt;EObject> or an EObject.


         
   <!-- Start of user code For description -->
   
   <!-- End of user code For description -->
   
      </description>
   </context>
   <context id="If">
     <description>
       If the evaluation of the condition returns true then all operations contains by this If statement will be executed, otherwise all operations will be ignored.

       Interpreted expressions, requested return type and available variables:
          - conditionExpression: a boolean.


         
   <!-- Start of user code If description -->
   
   <!-- End of user code If description -->
   
      </description>
   </context>
   <context id="DeleteView">
     <description>
       Deletes the current context if it is a view

       
         
   <!-- Start of user code DeleteView description -->
   
   <!-- End of user code DeleteView description -->
   
      </description>
   </context>
   <context id="NameVariable">
     <description>
       
       
         
   <!-- Start of user code NameVariable description -->
   
   <!-- End of user code NameVariable description -->
   
      </description>
   </context>
   <context id="ExternalJavaActionParameter">
     <description>
       
       Interpreted expressions, requested return type and available variables:
          - value: any type supported by the corresponding java parameter.


         
   <!-- Start of user code ExternalJavaActionParameter description -->
   
   <!-- End of user code ExternalJavaActionParameter description -->
   
      </description>
   </context>
   <context id="ToolFilterDescription">
     <description>
       filter to hide a tool in UI based on preconditon evaluated when specified elements to listen are modified

       Interpreted expressions, requested return type and available variables:
          - precondition: a boolean.

          - elementsToListen: a collection.


         
   <!-- Start of user code ToolFilterDescription description -->
   
   <!-- End of user code ToolFilterDescription description -->
   
      </description>
   </context>
   <context id="FeatureChangeListener">
     <description>
       
       
         
   <!-- Start of user code FeatureChangeListener description -->
   
   <!-- End of user code FeatureChangeListener description -->
   
      </description>
   </context>
   <context id="Case">
     <description>
       If the evaluation of the condition returns true then all operations contains by this case statement will be executed, otherwise all operations will be ignored.

       Interpreted expressions, requested return type and available variables:
          - conditionExpression: a boolean.


         
   <!-- Start of user code Case description -->
   
   <!-- End of user code Case description -->
   
      </description>
   </context>
   <context id="SwitchChild">
     <description>
       
       
         
   <!-- Start of user code SwitchChild description -->
   
   <!-- End of user code SwitchChild description -->
   
      </description>
   </context>
   <context id="Default">
     <description>
       The Default Case is executed if none of Case condition are true.

       
         
   <!-- Start of user code Default description -->
   
   <!-- End of user code Default description -->
   
      </description>
   </context>
   <context id="Switch">
     <description>
       Swich contains 1 or more Case and 1 Default Case. If no Case condition return true, Default Case is executed. If there are more Case condition who return true it's the first Condition Case true who is executed.

       
         
   <!-- Start of user code Switch description -->
   
   <!-- End of user code Switch description -->
   
      </description>
   </context>
   <context id="ValidationSet">
     <description>
       A set of validation rules.

       
         
   <!-- Start of user code ValidationSet description -->
   
   <!-- End of user code ValidationSet description -->
   
      </description>
   </context>
   <context id="ValidationRule">
     <description>
       A validation rule.

       Interpreted expressions, requested return type and available variables:
          - message: a boolean.


         
   <!-- Start of user code ValidationRule description -->
   
   <!-- End of user code ValidationRule description -->
   
      </description>
   </context>
   <context id="SemanticValidationRule">
     <description>
       A validation rule that is applied on a semantic element.

       Interpreted expressions, requested return type and available variables:
          - message: a boolean.


         
   <!-- Start of user code SemanticValidationRule description -->
   
   <!-- End of user code SemanticValidationRule description -->
   
      </description>
   </context>
   <context id="ViewValidationRule">
     <description>
       A validation rule that is applied on a view element.

       Interpreted expressions, requested return type and available variables:
          - message: a boolean.


         
   <!-- Start of user code ViewValidationRule description -->
   
   <!-- End of user code ViewValidationRule description -->
   
      </description>
   </context>
   <context id="RuleAudit">
     <description>
       The validation expression.

       Interpreted expressions, requested return type and available variables:
          - auditExpression: a boolean.


         
   <!-- Start of user code RuleAudit description -->
   
   <!-- End of user code RuleAudit description -->
   
      </description>
   </context>
   <context id="ValidationFix">
     <description>
       
       
         
   <!-- Start of user code ValidationFix description -->
   
   <!-- End of user code ValidationFix description -->
   
      </description>
   </context>
   <context id="InformationSection">
     <description>
       The section that displays informations about the selected element.

       
         
   <!-- Start of user code InformationSection description -->
   
   <!-- End of user code InformationSection description -->
   
      </description>
   </context>
   <context id="TemplateInformationSection">
     <description>
       This information section is based on an Acceleo template.

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