graph
IProperty
org.eclipse.elk.graph.properties.IProperty
org.eclipse.elk.graph.properties.IProperty
T
PropertyValue
java.lang.Object
java.lang.Object
IPropertyHolder
org.eclipse.elk.graph.properties.IPropertyHolder
org.eclipse.elk.graph.properties.IPropertyHolder
setProperty
T
property
value
getProperty
T
property
hasProperty
property
copyProperties
source
getAllProperties
EMapPropertyHolder
properties
ElkGraphElement
labels
identifier
ElkShape
setDimensions
width
height
setLocation
x
y
height
0.0
width
0.0
x
0.0
y
0.0
ElkLabel
parent
text

ElkConnectableShape
outgoingEdges
incomingEdges
ElkNode
ports
children
parent
containedEdges
hierarchical
ElkPort
parent
ElkEdge
containingNode
sources
targets
sections
hyperedge
hierarchical
selfloop
connected
ElkBendPoint
set
x
y
x
0.0
y
0.0
ElkEdgeSection
setStartLocation
x
y
setEndLocation
x
y
startX
startY
endX
endY
bendPoints
parent
outgoingShape
incomingShape
outgoingSections
incomingSections
identifier
ElkPropertyToValueMapEntry
java.util.Map$Entry
java.util.Map$Entry
key
value
<?xml version="1.0" encoding="UTF-8"?>
<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="graph" nsURI="http://www.eclipse.org/elk/ElkGraph" nsPrefix="graph">
  <eClassifiers xsi:type="ecore:EDataType" name="IProperty" instanceClassName="org.eclipse.elk.graph.properties.IProperty">
    <eTypeParameters name="T"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EDataType" name="PropertyValue" instanceClassName="java.lang.Object"/>
  <eClassifiers xsi:type="ecore:EClass" name="IPropertyHolder" instanceClassName="org.eclipse.elk.graph.properties.IPropertyHolder"
      abstract="true" interface="true">
    <eOperations name="setProperty" eType="#//IPropertyHolder">
      <eTypeParameters name="T"/>
      <eParameters name="property">
        <eGenericType eClassifier="#//IProperty">
          <eTypeArguments>
            <eLowerBound eTypeParameter="#//IPropertyHolder/setProperty/T"/>
          </eTypeArguments>
        </eGenericType>
      </eParameters>
      <eParameters name="value">
        <eGenericType eTypeParameter="#//IPropertyHolder/setProperty/T"/>
      </eParameters>
    </eOperations>
    <eOperations name="getProperty">
      <eGenericType eTypeParameter="#//IPropertyHolder/getProperty/T"/>
      <eTypeParameters name="T"/>
      <eParameters name="property">
        <eGenericType eClassifier="#//IProperty">
          <eTypeArguments eTypeParameter="#//IPropertyHolder/getProperty/T"/>
        </eGenericType>
      </eParameters>
    </eOperations>
    <eOperations name="hasProperty" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean">
      <eParameters name="property">
        <eGenericType eClassifier="#//IProperty">
          <eTypeArguments/>
        </eGenericType>
      </eParameters>
    </eOperations>
    <eOperations name="copyProperties" eType="#//IPropertyHolder">
      <eParameters name="source" eType="#//IPropertyHolder"/>
    </eOperations>
    <eOperations name="getAllProperties">
      <eGenericType eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EMap">
        <eTypeArguments eClassifier="#//IProperty">
          <eTypeArguments/>
        </eTypeArguments>
        <eTypeArguments eClassifier="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"/>
      </eGenericType>
    </eOperations>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="EMapPropertyHolder" abstract="true"
      eSuperTypes="#//IPropertyHolder">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="A property holder implementation based on {@link org.eclipse.emf.common.util.EMap} which can be used in Ecore models.&#xA;&#xA;&lt;p>This property holder implementation currently has two ways for saving properties: a map of properties as well as a map of &lt;em>persistent entries&lt;/em>. Persistent entries are String-String pairs containing String representations of properties. When a graph is serialized, it is the persistent entries that get serialized, not the properties themselves. This has two implications. First, to save a graph, one has to call {@link #makePersistent()} first. Second, after loading a graph, one of the methods in {@link org.eclipse.elk.core.util.GraphDataUtil} needs to be called to turn persistent entries back into usable properties.&lt;/p>"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="properties" upperBound="-1"
        eType="#//ElkPropertyToValueMapEntry" containment="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Map of properties configured for this property holder."/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkGraphElement" abstract="true" eSuperTypes="#//EMapPropertyHolder">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="This is the superclass of all elements of a graph such as nodes, edges, ports, and labels. Each element can have an arbitrary number of labels attached to it. A graph element can also hold properties that, for instance, influence how it is treated by layout algorithms. Finally, each graph element can have an arbitrary number of {@link ElkGraphData} objects associated with it to further annotate it with more specific information."/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="labels" upperBound="-1"
        eType="#//ElkLabel" containment="true" eOpposite="#//ElkLabel/parent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Labels associated with this graph element.&#xA;&#xA;&lt;p>Adding or removing a label to/from this list automatically updates its parent element.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="identifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="An optional String identifier for this graph element. Can be used as an ID for defining graphs in Xtext-based languages."/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkShape" abstract="true" eSuperTypes="#//ElkGraphElement">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="A shape is a graph element whose placement and extend can be described by x and y coordinates as well as a width and a height. The coordinates of a shape describe the position of its top left corner, relative to the origin of its parent element. The width and height of a shape describe the extend of its rectangular bounding box."/>
    </eAnnotations>
    <eOperations name="setDimensions">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Convenience method to set the shape's width and height simultaneously by calling their respective set methods."/>
        <details key="body" value="setWidth(width);&#xA;setHeight(height);"/>
      </eAnnotations>
      <eParameters name="width" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eParameters name="height" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
    </eOperations>
    <eOperations name="setLocation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Convenience method to set the shape's x and y coordinates simultaneously by calling their respective set methods."/>
        <details key="body" value="setX(x);&#xA;setY(y);"/>
      </eAnnotations>
      <eParameters name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eParameters name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="height" lowerBound="1"
        eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble" defaultValueLiteral="0.0">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Height of the shape's rectangular bounding box."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="width" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
        defaultValueLiteral="0.0">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Height of the shape's rectangular bounding box."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
        defaultValueLiteral="0.0">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="X coordinate of the shape's top left corner, relative to the origin of its parent object."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
        defaultValueLiteral="0.0">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Y coordinate of the shape's top left corner, relative to the origin of its parent object."/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkLabel" eSuperTypes="#//ElkShape">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="Labels are used to associate graph elements with text to be displayed in a diagram. The element the label annotates is its parent element."/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//ElkGraphElement"
        eOpposite="#//ElkGraphElement/labels">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Graph element the label annotates.&#xA;&#xA;&lt;p>Setting the parent element automatically updates its list of labels.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="text" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"
        defaultValueLiteral="">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The label's text."/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkConnectableShape" abstract="true"
      eSuperTypes="#//ElkShape">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="A graph element that can be the end point of an edge."/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingEdges" upperBound="-1"
        eType="#//ElkEdge" eOpposite="#//ElkEdge/sources">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="List of edges that leave this connectable shape.&#xA;&#xA;&lt;p>Adding or removing an edge to/from this list automatically updates its list of sources.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="incomingEdges" upperBound="-1"
        eType="#//ElkEdge" eOpposite="#//ElkEdge/targets">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="List of edges that go into this connectable shape.&#xA;&#xA;&lt;p>Adding or removing an edge to/from this list automatically updates its list of targets.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkNode" eSuperTypes="#//ElkConnectableShape">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="A node in the graph. Edges can be connected to the node directly or through one of its ports.&#xA;&#xA;&lt;p>All nodes except one must have an assigned parent node. The node that does not have a parent node is the graph's root node and represents the graph itself. There can only be one root node for each graph. The parent-child relationship of nodes induces hierarchy in nested graphs: a node's children constitute the graph contained in and represented by that node.&lt;/p>"/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="ports" upperBound="-1"
        eType="#//ElkPort" containment="true" eOpposite="#//ElkPort/parent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The node's list of ports.&#xA;&#xA;&lt;p>Adding or removing a port to/from this list automatically sets its parent node.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1"
        eType="#//ElkNode" containment="true" eOpposite="#//ElkNode/parent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Child nodes contained in this node. If the node contains at least one child node, the node is a &lt;em>hierarchical node&lt;/em>.&#xA;&#xA;&lt;p>Adding or removing a node to/from this list automatically sets its parent node.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//ElkNode"
        eOpposite="#//ElkNode/children">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The node's parent node, if any. If the node has a parent, its location is interpreted relative to the parent node's origin. If it does not, the meaning of its location is not defined. A node without a parent node is called the &lt;em>root node&lt;/em>.&#xA;&#xA;&lt;p>Setting the node's parent node automatically updates the parent node's list of child nodes.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="containedEdges" upperBound="-1"
        eType="#//ElkEdge" containment="true" eOpposite="#//ElkEdge/containingNode">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The edges contained in this node. Note that containment does not imply connection: an edge contained in this list is not necessarily connected to this node. The coordinates of the edge's source points, target points, and end points are interpreted relative to this node's origin. See the documentation for {@link ElkEdge} for more details on which node an edge should be contained in.&#xA;&#xA;&lt;p>Adding or removing an edge to/from this list automatically sets its containing node.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="hierarchical" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Whether or not this node is considered to be a hierarchical node. It is a hierarchical node if its list of child nodes is not empty.&#xA;&#xA;&lt;p>The value of this attribute is computed dynamically and not persistent. So, no worries if you can't find it anywhere.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkPort" eSuperTypes="#//ElkConnectableShape">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="A port represents an explicit point through which to connect to a node. Different ports of a node will usually have different associated meanings, much like different method parameters. Each port belongs to the node it is contained in."/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//ElkNode"
        eOpposite="#//ElkNode/ports">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The node the port belongs to.&#xA;&#xA;&lt;p>Setting the parent node automatically update's the node's list of ports.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkEdge" eSuperTypes="#//ElkGraphElement">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="An edge connects one or more source elements ({@link ElkConnectableShape}s) with one or more target elements ({@link ElkConnectableShape}s). If an edge connects at most one source with at most one target, it is called a &lt;em>regular edge&lt;/em> (although it is usually simply called an &lt;em>edge&lt;/em>). If an edge has more than a single source or more than a single target, it is called a &lt;em>hyperedge&lt;/em>. If all of the edge's sources and targets have the same parent node, it is a &lt;em>simple edge&lt;/em>; otherwise, it is called a &lt;em>hierarchical edge&lt;/em>.&#xA;&#xA;Each edge must be assigned to a containing node. The containing node defines the point where it is hooked into the graph's object hierarchy, which is important for serializing the graph. The containing node's origin is the point the edge's source, target, and bend points are relative to. As a rule of thumb, edges should always be contained in the lowest common representing node of the graphs of all elements it connects, with one exception: if an edge connects a node with one of its descendants, that node should be the edge's containing node. The {@link GraphUtil} class contains methods that help with finding the correct containing node.&#xA;&#xA;The routing of an edge is specified by the {@link ElkEdgeSection} objects it contains. If the edge is a regular edge (as opposed to a hyperedge), it contains at most a single {@link ElkEdgeSection} which specifies a single source point, a single end point, and an arbitrary number of bend points. If the edge is a hyperedge, it contains at least one {@link ElkEdgeSection} for each of its sources and targets (&lt;em>outer edge sections&lt;/em>) as well as an arbitrary number of {@link ElkEdgeSection} objects to connect the outer sections (&lt;em>inner edge sections&lt;/em>)."/>
    </eAnnotations>
    <eStructuralFeatures xsi:type="ecore:EReference" name="containingNode" eType="#//ElkNode"
        eOpposite="#//ElkNode/containedEdges">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The node the edge is contained in. This has nothing to do with what the edge connects to.&#xA;&#xA;&lt;p>Setting the contained node automatically update's the node's list of contained edges.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="sources" upperBound="-1"
        eType="#//ElkConnectableShape" eOpposite="#//ElkConnectableShape/outgoingEdges">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The edge's list of source elements. For an edge to make sense, it should have at least one source element.&#xA;&#xA;&lt;p>Adding or removing an element to/from this list automatically updates its list of outgoing edges.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="targets" upperBound="-1"
        eType="#//ElkConnectableShape" eOpposite="#//ElkConnectableShape/incomingEdges">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The edge's list of target elements. For an edge to make sense, it should have at least one target element.&#xA;&#xA;&lt;p>Adding or removing an element to/from this list automatically updates its list of incoming edges.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="sections" upperBound="-1"
        eType="#//ElkEdgeSection" containment="true" eOpposite="#//ElkEdgeSection/parent">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="All edge sections that define the routing of this edge.&#xA;&#xA;&lt;p>Adding or removing an edge section to/from this list automatically updates its parent edge.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="hyperedge" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Whether this edge is a hyperedge or not. It is considered to not be a hyperedge if it has at most one source and at most one target. The result is only meaningful if the node has at least one source and one target.&#xA;&#xA;&lt;p>The value of this attribute is computed dynamically and not persistent. So, no worries if you can't find it anywhere.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="hierarchical" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Whether the edge is a hierarchical edge or not. It is hierarchical if its sources and targets do not all have the same parent node.&#xA;&#xA;&lt;p>The value of this attribute is computed dynamically and not persistent. So, no worries if you can't find it anywhere.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="selfloop" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Whether the edge is a self loop or not. It is a self loop if all of its sources and targets are the same node (or its ports). This is only meaningful if the edge connects at least two end points.&#xA;&#xA;&lt;p>The value of this attribute is computed dynamically and not persistent. So, no worries if you can't find it anywhere.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="connected" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
        changeable="false" volatile="true" transient="true" derived="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Whether the edge has at least one source and one target.&#xA;&#xA;&lt;p>The value of this attribute is computed dynamically and not persistent. So, no worries if you can't find it anywhere.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkBendPoint">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="A bend point of an {@link ElkEdgeSection}. The coordinates of a bend point are always relative to the origin of the containing node of the edge the bend point belongs to."/>
    </eAnnotations>
    <eOperations name="set">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Sets the bend point's x and y coordinates simultaneously by calling their respective set methods."/>
        <details key="body" value="setX(x);&#xA;setY(y);"/>
      </eAnnotations>
      <eParameters name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eParameters name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="x" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
        defaultValueLiteral="0.0">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The bend point's x coordinate, relative to the origin of the edge's containing node."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="y" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"
        defaultValueLiteral="0.0">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The bend point's y coordinate, relative to the origin of the edge's containing node."/>
      </eAnnotations>
    </eStructuralFeatures>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkEdgeSection" eSuperTypes="#//EMapPropertyHolder">
    <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
      <details key="documentation" value="An edge section defines the routing of an edge, or a part of that routing. If the edge is a regular edge (as opposed to a hyperedge), it will have a single edge section that connects to the edge's source element and target element. The section will then completely define the edge's start point, its end point, and all of its bend points. This is a special case of the more general case described below.&#xA;&#xA;&lt;p>If the section's parent edge is a hyperedge, defining the routing will be more complicated. There will be enough edge sections to connect all of the edge's souce and target elements. The sections will effectively define a &lt;em>routing graph&lt;/em>: all sections in the graph will connect to other sections and/or sources and targets of the edge, each effectively defining a part of the complex route the edge will take. We call an edge section that connects to at least one {@link ElkConnectableShape} an &lt;em>outer section&lt;/em>. Edge sections that connect only to other edge sections are referred to as &lt;em>inner sections&lt;/em>.&lt;/p>&#xA;&#xA;&lt;p>Conceptually, the routing graph would be undirected. The way references work in EMF, however, forces us to distinguish between a section's incoming and outgoing sections. This is not much of a problem, however: each routing graph can be made acyclic.&lt;/p>&#xA;&#xA;&lt;p>All coordinates that define a section's route are relative to the origin of its edge's containing node.&lt;/p>&#xA;&#xA;&lt;p>Note that edge sections are property holders to allow algorithms to pass more detailed information about an edge section back to the client.&lt;/p>"/>
    </eAnnotations>
    <eOperations name="setStartLocation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Sets the x and y coordinates of the section's start point simultaneously by calling their respective set methods."/>
        <details key="body" value="setStartX(x);&#xA;setStartY(y);"/>
      </eAnnotations>
      <eParameters name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eParameters name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
    </eOperations>
    <eOperations name="setEndLocation">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Sets the x and y coordinates of the section's end point simultaneously by calling their respective set methods."/>
        <details key="body" value="setEndX(x);&#xA;setEndY(y);"/>
      </eAnnotations>
      <eParameters name="x" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
      <eParameters name="y" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble"/>
    </eOperations>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="startX" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="X coordinate of the section's start point, relative to the origin of the edge's containing node."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="startY" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Y coordinate of the section's start point, relative to the origin of the edge's containing node."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="endX" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="X coordinate of the section's end point, relative to the origin of the edge's containing node."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="endY" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDouble">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="Y coordinate of the section's end point, relative to the origin of the edge's containing node."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="bendPoints" upperBound="-1"
        eType="#//ElkBendPoint" containment="true">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The section's list of bend points. May well be empty if the section represents a straight line."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//ElkEdge"
        eOpposite="#//ElkEdge/sections">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The edge this section belongs to.&#xA;&#xA;&lt;p>Setting the parent edge automatically updates its list of edge sections.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingShape" eType="#//ElkConnectableShape">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The shape this section ends at, if any. If there is one, this section is an &lt;em>outer section&lt;/em>."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="incomingShape" eType="#//ElkConnectableShape">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="The shape this section starts at, if any. If there is one, this section is an &lt;em>outer section&lt;/em>."/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="outgoingSections" upperBound="-1"
        eType="#//ElkEdgeSection" eOpposite="#//ElkEdgeSection/incomingSections">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="List of outgoing sections this section is connected to. Must not be empty if this section is an &lt;em>inner section&lt;/em> (not connected to a shape).&#xA;&#xA;&lt;p>Adding or removing a section to/from this list automatically updates its list of incoming sections.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EReference" name="incomingSections" upperBound="-1"
        eType="#//ElkEdgeSection" eOpposite="#//ElkEdgeSection/outgoingSections">
      <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel">
        <details key="documentation" value="List of incoming sections this section is connected to. Must not be empty if this section is an &lt;em>inner section&lt;/em> (not connected to a shape).&#xA;&#xA;&lt;p>Adding or removing a section to/from this list automatically updates its list of outgoing sections.&lt;/p>"/>
      </eAnnotations>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="identifier" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/>
  </eClassifiers>
  <eClassifiers xsi:type="ecore:EClass" name="ElkPropertyToValueMapEntry" instanceClassName="java.util.Map$Entry">
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="key">
      <eGenericType eClassifier="#//IProperty">
        <eTypeArguments/>
      </eGenericType>
    </eStructuralFeatures>
    <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" eType="#//PropertyValue"/>
  </eClassifiers>
</ecore:EPackage>

{"directed":true,"nodes":[{"nsPrefix":"graph","nsURI":"http://www.eclipse.org/elk/ElkGraph","name":"graph","id":0,"eClass":"EPackage"},{"instanceTypeName":"org.eclipse.elk.graph.properties.IProperty","defaultValue":null,"instanceClassName":"org.eclipse.elk.graph.properties.IProperty","name":"IProperty","instanceClass":null,"id":1,"serializable":true,"eClass":"EDataType"},{"instanceTypeName":"java.lang.Object","defaultValue":null,"instanceClassName":"java.lang.Object","name":"PropertyValue","instanceClass":"java.lang.Object","id":2,"serializable":true,"eClass":"EDataType"},{"instanceTypeName":"org.eclipse.elk.graph.properties.IPropertyHolder","defaultValue":null,"instanceClassName":"org.eclipse.elk.graph.properties.IPropertyHolder","name":"IPropertyHolder","instanceClass":null,"abstract":true,"id":3,"interface":true,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"EMapPropertyHolder","instanceClass":null,"abstract":true,"id":4,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ElkGraphElement","instanceClass":null,"abstract":true,"id":5,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ElkShape","instanceClass":null,"abstract":true,"id":6,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ElkLabel","instanceClass":null,"abstract":false,"id":7,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ElkConnectableShape","instanceClass":null,"abstract":true,"id":8,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ElkNode","instanceClass":null,"abstract":false,"id":9,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ElkPort","instanceClass":null,"abstract":false,"id":10,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ElkEdge","instanceClass":null,"abstract":false,"id":11,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ElkBendPoint","instanceClass":null,"abstract":false,"id":12,"interface":false,"eClass":"EClass"},{"instanceTypeName":null,"defaultValue":null,"instanceClassName":null,"name":"ElkEdgeSection","instanceClass":null,"abstract":false,"id":13,"interface":false,"eClass":"EClass"},{"instanceTypeName":"java.util.Map$Entry","defaultValue":null,"instanceClassName":"java.util.Map$Entry","name":"ElkPropertyToValueMapEntry","instanceClass":"java.util.Map$Entry","abstract":false,"id":14,"interface":false,"eClass":"EClass"},{"name":"T","id":15,"eClass":"ETypeParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"setProperty","lowerBound":0,"id":16,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"getProperty","lowerBound":0,"id":17,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"hasProperty","lowerBound":0,"id":18,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"copyProperties","lowerBound":0,"id":19,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"getAllProperties","lowerBound":0,"id":20,"many":false,"required":false,"eClass":"EOperation"},{"id":21,"eClass":"EGenericType"},{"name":"T","id":22,"eClass":"ETypeParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"property","lowerBound":0,"id":23,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"value","lowerBound":0,"id":24,"many":false,"required":false,"eClass":"EParameter"},{"id":25,"eClass":"EGenericType"},{"id":26,"eClass":"EGenericType"},{"id":27,"eClass":"EGenericType"},{"id":28,"eClass":"EGenericType"},{"id":29,"eClass":"EGenericType"},{"name":"T","id":30,"eClass":"ETypeParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"property","lowerBound":0,"id":31,"many":false,"required":false,"eClass":"EParameter"},{"id":32,"eClass":"EGenericType"},{"id":33,"eClass":"EGenericType"},{"id":34,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"property","lowerBound":0,"id":35,"many":false,"required":false,"eClass":"EParameter"},{"id":36,"eClass":"EGenericType"},{"id":37,"eClass":"EGenericType"},{"id":38,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"source","lowerBound":0,"id":39,"many":false,"required":false,"eClass":"EParameter"},{"id":40,"eClass":"EGenericType"},{"id":41,"eClass":"EGenericType"},{"id":42,"eClass":"EGenericType"},{"id":43,"eClass":"EGenericType"},{"id":44,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"properties","changeable":true,"resolveProxies":true,"lowerBound":0,"id":45,"derived":false},{"id":46,"eClass":"EGenericType"},{"id":47,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"labels","changeable":true,"resolveProxies":true,"lowerBound":0,"id":48,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"identifier","changeable":true,"lowerBound":0,"iD":false,"id":49,"derived":false},{"id":50,"eClass":"EGenericType"},{"id":51,"eClass":"EGenericType"},{"container":true,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"parent","changeable":true,"resolveProxies":true,"lowerBound":0,"id":52,"derived":false},{"id":53,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"setDimensions","lowerBound":0,"id":54,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"setLocation","lowerBound":0,"id":55,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"0.0","unsettable":false,"transient":false,"unique":true,"name":"height","changeable":true,"lowerBound":1,"iD":false,"id":56,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"0.0","unsettable":false,"transient":false,"unique":true,"name":"width","changeable":true,"lowerBound":1,"iD":false,"id":57,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"0.0","unsettable":false,"transient":false,"unique":true,"name":"x","changeable":true,"lowerBound":1,"iD":false,"id":58,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"0.0","unsettable":false,"transient":false,"unique":true,"name":"y","changeable":true,"lowerBound":1,"iD":false,"id":59,"derived":false},{"id":60,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"width","lowerBound":0,"id":61,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"height","lowerBound":0,"id":62,"many":false,"required":false,"eClass":"EParameter"},{"id":63,"eClass":"EGenericType"},{"id":64,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"x","lowerBound":0,"id":65,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"y","lowerBound":0,"id":66,"many":false,"required":false,"eClass":"EParameter"},{"id":67,"eClass":"EGenericType"},{"id":68,"eClass":"EGenericType"},{"id":69,"eClass":"EGenericType"},{"id":70,"eClass":"EGenericType"},{"id":71,"eClass":"EGenericType"},{"id":72,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":"","volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":"","unsettable":false,"transient":false,"unique":true,"name":"text","changeable":true,"lowerBound":0,"iD":false,"id":73,"derived":false},{"id":74,"eClass":"EGenericType"},{"id":75,"eClass":"EGenericType"},{"id":76,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"outgoingEdges","changeable":true,"resolveProxies":true,"lowerBound":0,"id":77,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"incomingEdges","changeable":true,"resolveProxies":true,"lowerBound":0,"id":78,"derived":false},{"id":79,"eClass":"EGenericType"},{"id":80,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"sources","changeable":true,"resolveProxies":true,"lowerBound":0,"id":81,"derived":false},{"id":82,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"targets","changeable":true,"resolveProxies":true,"lowerBound":0,"id":83,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"ports","changeable":true,"resolveProxies":true,"lowerBound":0,"id":84,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"children","changeable":true,"resolveProxies":true,"lowerBound":0,"id":85,"derived":false},{"container":true,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"parent","changeable":true,"resolveProxies":true,"lowerBound":0,"id":86,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"containedEdges","changeable":true,"resolveProxies":true,"lowerBound":0,"id":87,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":true,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":true,"unique":true,"name":"hierarchical","changeable":false,"lowerBound":0,"iD":false,"id":88,"derived":true},{"id":89,"eClass":"EGenericType"},{"id":90,"eClass":"EGenericType"},{"container":true,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"parent","changeable":true,"resolveProxies":true,"lowerBound":0,"id":91,"derived":false},{"id":92,"eClass":"EGenericType"},{"id":93,"eClass":"EGenericType"},{"id":94,"eClass":"EGenericType"},{"container":true,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"containingNode","changeable":true,"resolveProxies":true,"lowerBound":0,"id":95,"derived":false},{"id":96,"eClass":"EGenericType"},{"id":97,"eClass":"EGenericType"},{"id":98,"eClass":"EGenericType"},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"sections","changeable":true,"resolveProxies":true,"lowerBound":0,"id":99,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":true,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":true,"unique":true,"name":"hyperedge","changeable":false,"lowerBound":0,"iD":false,"id":100,"derived":true},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":true,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":true,"unique":true,"name":"hierarchical","changeable":false,"lowerBound":0,"iD":false,"id":101,"derived":true},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":true,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":true,"unique":true,"name":"selfloop","changeable":false,"lowerBound":0,"iD":false,"id":102,"derived":true},{"ordered":true,"upperBound":1,"defaultValue":false,"volatile":true,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":true,"unique":true,"name":"connected","changeable":false,"lowerBound":0,"iD":false,"id":103,"derived":true},{"id":104,"eClass":"EGenericType"},{"id":105,"eClass":"EGenericType"},{"id":106,"eClass":"EGenericType"},{"id":107,"eClass":"EGenericType"},{"id":108,"eClass":"EGenericType"},{"container":true,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"parent","changeable":true,"resolveProxies":true,"lowerBound":0,"id":109,"derived":false},{"id":110,"eClass":"EGenericType"},{"id":111,"eClass":"EGenericType"},{"id":112,"eClass":"EGenericType"},{"id":113,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"set","lowerBound":0,"id":114,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"0.0","unsettable":false,"transient":false,"unique":true,"name":"x","changeable":true,"lowerBound":1,"iD":false,"id":115,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":true,"eClass":"EAttribute","defaultValueLiteral":"0.0","unsettable":false,"transient":false,"unique":true,"name":"y","changeable":true,"lowerBound":1,"iD":false,"id":116,"derived":false},{"ordered":true,"upperBound":1,"unique":true,"name":"x","lowerBound":0,"id":117,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"y","lowerBound":0,"id":118,"many":false,"required":false,"eClass":"EParameter"},{"id":119,"eClass":"EGenericType"},{"id":120,"eClass":"EGenericType"},{"id":121,"eClass":"EGenericType"},{"id":122,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"setStartLocation","lowerBound":0,"id":123,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"unique":true,"name":"setEndLocation","lowerBound":0,"id":124,"many":false,"required":false,"eClass":"EOperation"},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"startX","changeable":true,"lowerBound":0,"iD":false,"id":125,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"startY","changeable":true,"lowerBound":0,"iD":false,"id":126,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"endX","changeable":true,"lowerBound":0,"iD":false,"id":127,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":0.0,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"endY","changeable":true,"lowerBound":0,"iD":false,"id":128,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":true,"unsettable":false,"transient":false,"unique":true,"name":"bendPoints","changeable":true,"resolveProxies":true,"lowerBound":0,"id":129,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"outgoingShape","changeable":true,"resolveProxies":true,"lowerBound":0,"id":130,"derived":false},{"container":false,"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"incomingShape","changeable":true,"resolveProxies":true,"lowerBound":0,"id":131,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"outgoingSections","changeable":true,"resolveProxies":true,"lowerBound":0,"id":132,"derived":false},{"container":false,"ordered":true,"upperBound":-1,"defaultValue":null,"volatile":false,"many":true,"required":false,"eClass":"EReference","defaultValueLiteral":null,"containment":false,"unsettable":false,"transient":false,"unique":true,"name":"incomingSections","changeable":true,"resolveProxies":true,"lowerBound":0,"id":133,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"identifier","changeable":true,"lowerBound":0,"iD":false,"id":134,"derived":false},{"id":135,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"x","lowerBound":0,"id":136,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"y","lowerBound":0,"id":137,"many":false,"required":false,"eClass":"EParameter"},{"id":138,"eClass":"EGenericType"},{"id":139,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"unique":true,"name":"x","lowerBound":0,"id":140,"many":false,"required":false,"eClass":"EParameter"},{"ordered":true,"upperBound":1,"unique":true,"name":"y","lowerBound":0,"id":141,"many":false,"required":false,"eClass":"EParameter"},{"id":142,"eClass":"EGenericType"},{"id":143,"eClass":"EGenericType"},{"id":144,"eClass":"EGenericType"},{"id":145,"eClass":"EGenericType"},{"id":146,"eClass":"EGenericType"},{"id":147,"eClass":"EGenericType"},{"id":148,"eClass":"EGenericType"},{"id":149,"eClass":"EGenericType"},{"id":150,"eClass":"EGenericType"},{"id":151,"eClass":"EGenericType"},{"id":152,"eClass":"EGenericType"},{"id":153,"eClass":"EGenericType"},{"id":154,"eClass":"EGenericType"},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"key","changeable":true,"lowerBound":0,"iD":false,"id":155,"derived":false},{"ordered":true,"upperBound":1,"defaultValue":null,"volatile":false,"many":false,"required":false,"eClass":"EAttribute","defaultValueLiteral":null,"unsettable":false,"transient":false,"unique":true,"name":"value","changeable":true,"lowerBound":0,"iD":false,"id":156,"derived":false},{"id":157,"eClass":"EGenericType"},{"id":158,"eClass":"EGenericType"},{"id":159,"eClass":"EGenericType"}],"links":[{"source":0,"target":1},{"source":0,"target":2},{"source":0,"target":3},{"source":0,"target":4},{"source":0,"target":5},{"source":0,"target":6},{"source":0,"target":7},{"source":0,"target":8},{"source":0,"target":9},{"source":0,"target":10},{"source":0,"target":11},{"source":0,"target":12},{"source":0,"target":13},{"source":0,"target":14},{"source":1,"target":0},{"source":1,"target":15},{"source":2,"target":0},{"source":3,"target":0},{"source":3,"target":16},{"source":3,"target":17},{"source":3,"target":18},{"source":3,"target":19},{"source":3,"target":20},{"source":16,"target":3},{"source":16,"target":21},{"source":16,"target":3},{"source":16,"target":22},{"source":16,"target":23},{"source":16,"target":24},{"source":21,"target":3},{"source":23,"target":1},{"source":23,"target":25},{"source":23,"target":16},{"source":25,"target":26},{"source":25,"target":1},{"source":26,"target":27},{"source":27,"target":22},{"source":24,"target":28},{"source":24,"target":16},{"source":28,"target":22},{"source":17,"target":29},{"source":17,"target":3},{"source":17,"target":30},{"source":17,"target":31},{"source":29,"target":30},{"source":31,"target":1},{"source":31,"target":32},{"source":31,"target":17},{"source":32,"target":33},{"source":32,"target":1},{"source":33,"target":30},{"source":18,"target":34},{"source":18,"target":3},{"source":18,"target":35},{"source":35,"target":1},{"source":35,"target":36},{"source":35,"target":18},{"source":36,"target":37},{"source":36,"target":1},{"source":19,"target":3},{"source":19,"target":38},{"source":19,"target":3},{"source":19,"target":39},{"source":38,"target":3},{"source":39,"target":3},{"source":39,"target":40},{"source":39,"target":19},{"source":40,"target":3},{"source":20,"target":41},{"source":20,"target":3},{"source":41,"target":42},{"source":41,"target":43},{"source":42,"target":44},{"source":42,"target":1},{"source":4,"target":0},{"source":4,"target":3},{"source":4,"target":45},{"source":4,"target":46},{"source":45,"target":14},{"source":45,"target":47},{"source":45,"target":4},{"source":47,"target":14},{"source":46,"target":3},{"source":5,"target":0},{"source":5,"target":4},{"source":5,"target":48},{"source":5,"target":49},{"source":5,"target":50},{"source":48,"target":7},{"source":48,"target":51},{"source":48,"target":5},{"source":48,"target":52},{"source":51,"target":7},{"source":49,"target":53},{"source":49,"target":5},{"source":50,"target":4},{"source":6,"target":0},{"source":6,"target":5},{"source":6,"target":54},{"source":6,"target":55},{"source":6,"target":56},{"source":6,"target":57},{"source":6,"target":58},{"source":6,"target":59},{"source":6,"target":60},{"source":54,"target":6},{"source":54,"target":61},{"source":54,"target":62},{"source":61,"target":63},{"source":61,"target":54},{"source":62,"target":64},{"source":62,"target":54},{"source":55,"target":6},{"source":55,"target":65},{"source":55,"target":66},{"source":65,"target":67},{"source":65,"target":55},{"source":66,"target":68},{"source":66,"target":55},{"source":56,"target":69},{"source":56,"target":6},{"source":57,"target":70},{"source":57,"target":6},{"source":58,"target":71},{"source":58,"target":6},{"source":59,"target":72},{"source":59,"target":6},{"source":60,"target":5},{"source":7,"target":0},{"source":7,"target":6},{"source":7,"target":52},{"source":7,"target":73},{"source":7,"target":74},{"source":52,"target":5},{"source":52,"target":75},{"source":52,"target":7},{"source":52,"target":48},{"source":75,"target":5},{"source":73,"target":76},{"source":73,"target":7},{"source":74,"target":6},{"source":8,"target":0},{"source":8,"target":6},{"source":8,"target":77},{"source":8,"target":78},{"source":8,"target":79},{"source":77,"target":11},{"source":77,"target":80},{"source":77,"target":8},{"source":77,"target":81},{"source":80,"target":11},{"source":78,"target":11},{"source":78,"target":82},{"source":78,"target":8},{"source":78,"target":83},{"source":82,"target":11},{"source":79,"target":6},{"source":9,"target":0},{"source":9,"target":8},{"source":9,"target":84},{"source":9,"target":85},{"source":9,"target":86},{"source":9,"target":87},{"source":9,"target":88},{"source":9,"target":89},{"source":84,"target":10},{"source":84,"target":90},{"source":84,"target":9},{"source":84,"target":91},{"source":90,"target":10},{"source":85,"target":9},{"source":85,"target":92},{"source":85,"target":9},{"source":85,"target":86},{"source":92,"target":9},{"source":86,"target":9},{"source":86,"target":93},{"source":86,"target":9},{"source":86,"target":85},{"source":93,"target":9},{"source":87,"target":11},{"source":87,"target":94},{"source":87,"target":9},{"source":87,"target":95},{"source":94,"target":11},{"source":88,"target":96},{"source":88,"target":9},{"source":89,"target":8},{"source":10,"target":0},{"source":10,"target":8},{"source":10,"target":91},{"source":10,"target":97},{"source":91,"target":9},{"source":91,"target":98},{"source":91,"target":10},{"source":91,"target":84},{"source":98,"target":9},{"source":97,"target":8},{"source":11,"target":0},{"source":11,"target":5},{"source":11,"target":95},{"source":11,"target":81},{"source":11,"target":83},{"source":11,"target":99},{"source":11,"target":100},{"source":11,"target":101},{"source":11,"target":102},{"source":11,"target":103},{"source":11,"target":104},{"source":95,"target":9},{"source":95,"target":105},{"source":95,"target":11},{"source":95,"target":87},{"source":105,"target":9},{"source":81,"target":8},{"source":81,"target":106},{"source":81,"target":11},{"source":81,"target":77},{"source":106,"target":8},{"source":83,"target":8},{"source":83,"target":107},{"source":83,"target":11},{"source":83,"target":78},{"source":107,"target":8},{"source":99,"target":13},{"source":99,"target":108},{"source":99,"target":11},{"source":99,"target":109},{"source":108,"target":13},{"source":100,"target":110},{"source":100,"target":11},{"source":101,"target":111},{"source":101,"target":11},{"source":102,"target":112},{"source":102,"target":11},{"source":103,"target":113},{"source":103,"target":11},{"source":104,"target":5},{"source":12,"target":0},{"source":12,"target":114},{"source":12,"target":115},{"source":12,"target":116},{"source":114,"target":12},{"source":114,"target":117},{"source":114,"target":118},{"source":117,"target":119},{"source":117,"target":114},{"source":118,"target":120},{"source":118,"target":114},{"source":115,"target":121},{"source":115,"target":12},{"source":116,"target":122},{"source":116,"target":12},{"source":13,"target":0},{"source":13,"target":4},{"source":13,"target":123},{"source":13,"target":124},{"source":13,"target":125},{"source":13,"target":126},{"source":13,"target":127},{"source":13,"target":128},{"source":13,"target":129},{"source":13,"target":109},{"source":13,"target":130},{"source":13,"target":131},{"source":13,"target":132},{"source":13,"target":133},{"source":13,"target":134},{"source":13,"target":135},{"source":123,"target":13},{"source":123,"target":136},{"source":123,"target":137},{"source":136,"target":138},{"source":136,"target":123},{"source":137,"target":139},{"source":137,"target":123},{"source":124,"target":13},{"source":124,"target":140},{"source":124,"target":141},{"source":140,"target":142},{"source":140,"target":124},{"source":141,"target":143},{"source":141,"target":124},{"source":125,"target":144},{"source":125,"target":13},{"source":126,"target":145},{"source":126,"target":13},{"source":127,"target":146},{"source":127,"target":13},{"source":128,"target":147},{"source":128,"target":13},{"source":129,"target":12},{"source":129,"target":148},{"source":129,"target":13},{"source":148,"target":12},{"source":109,"target":11},{"source":109,"target":149},{"source":109,"target":13},{"source":109,"target":99},{"source":149,"target":11},{"source":130,"target":8},{"source":130,"target":150},{"source":130,"target":13},{"source":150,"target":8},{"source":131,"target":8},{"source":131,"target":151},{"source":131,"target":13},{"source":151,"target":8},{"source":132,"target":13},{"source":132,"target":152},{"source":132,"target":13},{"source":132,"target":133},{"source":152,"target":13},{"source":133,"target":13},{"source":133,"target":153},{"source":133,"target":13},{"source":133,"target":132},{"source":153,"target":13},{"source":134,"target":154},{"source":134,"target":13},{"source":135,"target":4},{"source":14,"target":0},{"source":14,"target":155},{"source":14,"target":156},{"source":155,"target":1},{"source":155,"target":157},{"source":155,"target":14},{"source":157,"target":158},{"source":157,"target":1},{"source":156,"target":2},{"source":156,"target":159},{"source":156,"target":14},{"source":159,"target":2}],"multigraph":true}