diff options
| author | Laurent Redor | 2021-03-16 16:25:17 +0000 |
|---|---|---|
| committer | Laurent Redor | 2021-03-26 15:37:00 +0000 |
| commit | 64acc2c20a089671b71aa0feee32f936fe2d0b80 (patch) | |
| tree | 9e6f6a2965eed570a3bc0911f2a87ed33853b3ef | |
| parent | c5369369f96874c58b3a23cafa3994efb84ab520 (diff) | |
| download | org.eclipse.sirius-64acc2c20a089671b71aa0feee32f936fe2d0b80.tar.gz org.eclipse.sirius-64acc2c20a089671b71aa0feee32f936fe2d0b80.tar.xz org.eclipse.sirius-64acc2c20a089671b71aa0feee32f936fe2d0b80.zip | |
[571925] Handle edge on edge case with ELK
ELK do not handle "edge on edge" case. This commit introduces a specific
transformation from Sirius graph to EKL graph (and reciprocally) in
order, despite this problem, to have a satisfactory layout result.
There are probably still some construction not correctly handled but it
is a first step.
Bug: 571925
Change-Id: If52046a0219b4a31adbc5629fedaa4c3200038a6
Signed-off-by: Laurent Redor <laurent.redor@obeo.fr>
8 files changed, 4460 insertions, 103 deletions
diff --git a/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/ElkDiagramLayoutConnector.java b/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/ElkDiagramLayoutConnector.java index 09de0f8cc6..649ec13376 100644 --- a/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/ElkDiagramLayoutConnector.java +++ b/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/ElkDiagramLayoutConnector.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2020 Kiel University and others. + * Copyright (c) 2009, 2021 Kiel University and others. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -37,6 +38,7 @@ import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Insets; import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.PointList; +import org.eclipse.draw2d.geometry.PrecisionPoint; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.elk.alg.layered.options.CrossingMinimizationStrategy; import org.eclipse.elk.alg.layered.options.LayeredOptions; @@ -91,6 +93,7 @@ import org.eclipse.gmf.runtime.diagram.ui.editparts.TopGraphicEditPart; import org.eclipse.gmf.runtime.diagram.ui.figures.ResizableCompartmentFigure; import org.eclipse.gmf.runtime.diagram.ui.parts.DiagramEditor; import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.draw2d.ui.geometry.LineSeg; import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure; import org.eclipse.gmf.runtime.notation.Node; import org.eclipse.gmf.runtime.notation.View; @@ -188,6 +191,18 @@ public class ElkDiagramLayoutConnector implements IDiagramLayoutConnector { /** the offset to add for all coordinates. */ public static final IProperty<KVector> COORDINATE_OFFSET = new Property<KVector>("gmf.coordinateOffset"); + /** + * Used in case of edge on edge: the source edge or target edge is split into two edges for the graph given to ELK. + * Only the first one is associated with the ConnectionEditPart. This property is used to retrieve the second edge + * during the layout application into Sirius. + */ + public static final IProperty<ElkEdge> SECOND_PART_OF_SPLIT_EDGE = new Property<ElkEdge>("org.eclipse.sirius.diagram.elk.edge.split"); + + /** + * Name given to the node between the split edge. + */ + public static final String EDGE_ON_EDGE_ID_NODE = "virtualNodeForEdgeToEdgeCase"; + public static final String PREF_EXEC_TIME_MEASUREMENT = "elk.exectime.measure"; /** @@ -196,6 +211,19 @@ public class ElkDiagramLayoutConnector implements IDiagramLayoutConnector { */ public static final IProperty<Boolean> NODE_SIZE_FIXED_SIZE = new Property<Boolean>("org.eclipse.sirius.diagram.elk.fixedNodeSize", false, null, null); + /** + * Value used for split edge for property {@link LayeredOptions#PRIORITY_STRAIGHTNESS}. It allows to give the + * priority for "straight aspect" to split edges (compared to edges using split edge as source or target). + */ + private static final int PRIORITY_STRAIGHTNESS_SPLIT_EDGE_VALUE = 10; + + /** + * Value used for split edge for property {@link LayeredOptions#PRIORITY_DIRECTION}. It allows to give the priority + * for "straight aspect" to split edges (compared to edges using split edge as source or target). + */ + private static final int PRIORITY_DIRECTION_SPLIT_EDGE_VALUE = 10; + + @Inject private IEditPartFilter editPartFilter; @@ -1497,78 +1525,30 @@ public class ElkDiagramLayoutConnector implements IDiagramLayoutConnector { } applyOptionsRelatedToElementTarget(edge, elkTargetToOptionsOverrideMap); BiMap<Object, ElkGraphElement> inverseGraphMap = mapping.getGraphMap().inverse(); - - // find a proper source node and source port - ElkGraphElement sourceElem; - EditPart sourceObj = connection.getSource(); - if (sourceObj instanceof ConnectionEditPart) { - sourceElem = inverseGraphMap.get(((ConnectionEditPart) sourceObj).getSource()); - if (sourceElem == null) { - sourceElem = inverseGraphMap.get(((ConnectionEditPart) sourceObj).getTarget()); - } - } else { - sourceElem = inverseGraphMap.get(sourceObj); - } - - ElkConnectableShape sourceShape = null; - ElkPort sourcePort = null; - ElkNode sourceNode = null; - if (sourceElem instanceof ElkNode) { - sourceNode = (ElkNode) sourceElem; - sourceShape = sourceNode; - } else if (sourceElem instanceof ElkPort) { - sourcePort = (ElkPort) sourceElem; - sourceNode = sourcePort.getParent(); - sourceShape = sourcePort; - } else { + ElkGraphElement sourceElement = inverseGraphMap.get(connection.getSource()); + ElkGraphElement targetElement = inverseGraphMap.get(connection.getTarget()); + if (sourceElement == null || targetElement == null) { continue; } + ElkNode edgeContainer = ElkDiagramLayoutConnector.findLowestCommonAncestor(sourceElement, targetElement); - // find a proper target node and target port - ElkGraphElement targetElem; - EditPart targetObj = connection.getTarget(); - if (targetObj instanceof ConnectionEditPart) { - targetElem = inverseGraphMap.get(((ConnectionEditPart) targetObj).getTarget()); - if (targetElem == null) { - targetElem = inverseGraphMap.get(((ConnectionEditPart) targetObj).getSource()); - } - } else { - targetElem = inverseGraphMap.get(targetObj); - } - - ElkConnectableShape targetShape = null; - ElkNode targetNode = null; - ElkPort targetPort = null; - if (targetElem instanceof ElkNode) { - targetNode = (ElkNode) targetElem; - targetShape = targetNode; - } else if (targetElem instanceof ElkPort) { - targetPort = (ElkPort) targetElem; - targetNode = targetPort.getParent(); - targetShape = targetPort; - } else { - continue; - } - - // calculate offset for edge and label coordinates - ElkNode edgeContainment = ElkGraphUtil.findLowestCommonAncestor(sourceNode, targetNode); - + // Calculate offset for edge and label coordinates KVector offset = new KVector(); - ElkUtil.toAbsolute(offset, edgeContainment); + ElkUtil.toAbsolute(offset, edgeContainer); if (!isOppositeEdge) { - // set source and target - edge.getSources().add(sourceShape); - edge.getTargets().add(targetShape); - - // now that source and target are set, put the edge into the - // graph - edgeContainment.getContainedEdges().add(edge); + // Put the edge into the graph + edgeContainer.getContainedEdges().add(edge); mapping.getGraphMap().put(edge, connection); // store the current coordinates of the edge setEdgeLayout(edge, connection, offset); + // Connect this edge to corresponding source and target. + ElkConnectableShape sourceShape = getRealElementToConnectTo(sourceElement, getStartingPoint(edge), mapping, elkTargetToOptionsOverrideMap); + edge.getSources().add(sourceShape); + ElkConnectableShape targetShape = getRealElementToConnectTo(targetElement, getEndingPoint(edge), mapping, elkTargetToOptionsOverrideMap); + edge.getTargets().add(targetShape); } // process edge labels @@ -1576,6 +1556,156 @@ public class ElkDiagramLayoutConnector implements IDiagramLayoutConnector { } } + private PrecisionPoint getStartingPoint(ElkEdge edge) { + ElkEdgeSection section = edge.getSections().get(0); + return new PrecisionPoint(section.getStartX(), section.getStartY()); + } + + private PrecisionPoint getEndingPoint(ElkEdge edge) { + ElkEdgeSection section = edge.getSections().get(0); + return new PrecisionPoint(section.getEndX(), section.getEndY()); + } + + /** + * This method returns the {@link ElkConnectableShape} which has to be used for the current edge.</BR> + * In a simple case, this method only returns the <code>graphElement</code> as is (when the graphElement is directly + * a {@link ElkConnectableShape}.</BR> + * But if the <code>graphElement</code> is another ElkEdge, we have to adapt the model as ELK do not handle "edge on + * edge" case. In this case, the source/target edge, called destination edge, is split into two edges with an + * intermediate virtual node. This virtual node is used as source/target of the current edge. + * + * @param graphElement + * The source or the target of an edge. + * @param pointToCreateNodeIfNecessary + * The point where to create the virtual node (starting point of the edge if graphElement is the source, + * ending point of the edge is graphElement is the target). + * @param mapping + * the layout mapping + * @param elkTargetToOptionsOverrideMap + * a map of option targets to corresponding options. + * @return the {@link ElkConnectableShape} which has to be used for the current edge + */ + private ElkConnectableShape getRealElementToConnectTo(ElkGraphElement graphElement, PrecisionPoint pointToCreateNodeIfNecessary, LayoutMapping mapping, + Map<LayoutOptionTarget, Set<LayoutOption>> elkTargetToOptionsOverrideMap) { + ElkConnectableShape result = null; + if (graphElement instanceof ElkConnectableShape) { + result = (ElkConnectableShape) graphElement; + } else if (graphElement instanceof ElkEdge) { + // Edge on edge is not a possible construction in ELK (see meta model for details: + // https://www.eclipse.org/elk/documentation/tooldevelopers/graphdatastructure.html#the-meta-model). + // So we adapt this construction by inserting a virtual Node corresponding to the junction between the 2 + // edges. + ElkEdge secondPartOfEdge = graphElement.getProperty(ElkDiagramLayoutConnector.SECOND_PART_OF_SPLIT_EDGE); + if (secondPartOfEdge != null) { + // This destination edge has been already split: this edge is used several times as source or target. In + // this case, we reuse the existing "virtual" node. + result = (ElkNode) ((ElkEdge) graphElement).getTargets().get(0); + } else { + ElkNode edgeContainer = ((ElkEdge) graphElement).getContainingNode(); + ElkNode newNode = ElkGraphUtil.createNode(edgeContainer); + applyOptionsRelatedToElementTarget(newNode, elkTargetToOptionsOverrideMap); + newNode.setIdentifier(EDGE_ON_EDGE_ID_NODE); + newNode.setX(pointToCreateNodeIfNecessary.preciseX()); + newNode.setY(pointToCreateNodeIfNecessary.preciseY()); + newNode.setDimensions(1, 1); + newNode.setProperty(CoreOptions.NODE_SIZE_CONSTRAINTS, SizeConstraint.fixed()); + if (edgeContainer != null) { + edgeContainer.getChildren().add(newNode); + applyParentNodeOption(edgeContainer, elkTargetToOptionsOverrideMap); + } + result = newNode; + // Split the destination edge into 2 edges one from source to virtual node and another one from + // virtual node to target. + splitEdge((ElkEdge) graphElement, newNode, mapping, elkTargetToOptionsOverrideMap); + } + } + return result; + } + + /** + * This method splits the <code>edgeToSplit</code> into 2 edges, one from the current source to the + * <code>intermediateNode</code> node and the another one from <code>intermediateNode</code> to target. + * + * @param edgeToSplit + * The edge to split + * @param intermediateNode + * The node to pass through + * @param mapping + * the layout mapping + * @param elkTargetToOptionsOverrideMap + * a map of option targets to corresponding options. + */ + private void splitEdge(ElkEdge edgeToSplit, ElkNode intermediateNode, LayoutMapping mapping, Map<LayoutOptionTarget, Set<LayoutOption>> elkTargetToOptionsOverrideMap) { + Object editPart = mapping.getGraphMap().get(edgeToSplit); + if (editPart instanceof ConnectionEditPart) { + // Use the existing edge as the first part of the split edge (from source to intermediate node). + // To force that this edge is as straight as possible (better layout result), use the layered option + // "LayeredOptions.PRIORITY_STRAIGHTNESS". 10 is used arbitrary (more than 1 by default). + // TODO : This is OK only if Layered layout is used. See if there is equivalent option for other kind of + // layout. + edgeToSplit.setProperty(LayeredOptions.PRIORITY_STRAIGHTNESS, PRIORITY_STRAIGHTNESS_SPLIT_EDGE_VALUE); + edgeToSplit.getTargets().add(intermediateNode); + // TODO : There is maybe something specific to handle edge's labels (coordinates are maybe wrong after this + // split). + // Create second edge part + int indexOfEdgeToSplit = edgeToSplit.getContainingNode().getContainedEdges().indexOf(edgeToSplit); + ElkEdge secondEdge = ElkGraphUtil.createEdge(null); + // Add the new edge just after the edge to split: and so before the other edge having it as source or + // target. This allows that the layout result is more straighten for the edges "edgeToSplit-secondEdge" than + // for edge having it as source or target. + edgeToSplit.getContainingNode().getContainedEdges().add(indexOfEdgeToSplit + 1, secondEdge); + applyOptionsRelatedToElementTarget(secondEdge, elkTargetToOptionsOverrideMap); + secondEdge.getSources().add(intermediateNode); + secondEdge.getTargets().add(edgeToSplit.getTargets().get(0)); + edgeToSplit.getTargets().remove(0); + secondEdge.getProperties().putAll(edgeToSplit.getProperties()); + // The layout result is better is this second part as also a notion of priority direction + secondEdge.setProperty(LayeredOptions.PRIORITY_DIRECTION, PRIORITY_DIRECTION_SPLIT_EDGE_VALUE); + // Keep a link between first edge part and second edge part (used later to apply layout result into Sirius) + edgeToSplit.getProperties().put(ElkDiagramLayoutConnector.SECOND_PART_OF_SPLIT_EDGE, secondEdge); + + ElkEdgeSection originalSection = edgeToSplit.getSections().get(0); + // Create sections according to edgeToSplit and intermediateNode + ElkEdgeSection secondEdgeSection = ElkGraphUtil.createEdgeSection(secondEdge); + Point originalEndingPoint = new PrecisionPoint(originalSection.getEndX(), originalSection.getEndY()); + Point intermediateNodeLocation = new PrecisionPoint(intermediateNode.getX(), intermediateNode.getY()); + Point startPoint = new PrecisionPoint(originalSection.getStartX(), originalSection.getStartY()); + Point endPoint; + if (originalSection.getBendPoints().isEmpty()) { + originalSection.setEndX(intermediateNodeLocation.x); + originalSection.setEndY(intermediateNodeLocation.y); + secondEdgeSection.setStartX(intermediateNodeLocation.x); + secondEdgeSection.setStartY(intermediateNodeLocation.y); + } else { + boolean isOnSecondPart = false; + for (Iterator<ElkBendPoint> iterator = originalSection.getBendPoints().iterator(); iterator.hasNext();) { + ElkBendPoint bendPoint = iterator.next(); + endPoint = new PrecisionPoint(bendPoint.getX(), bendPoint.getY()); + if (new LineSeg(startPoint, endPoint).containsPoint(intermediateNodeLocation, 1)) { + originalSection.setEndX(intermediateNodeLocation.x); + originalSection.setEndY(intermediateNodeLocation.y); + isOnSecondPart = true; + secondEdgeSection.setStartX(intermediateNodeLocation.x); + secondEdgeSection.setStartY(intermediateNodeLocation.y); + } + if (isOnSecondPart) { + ElkGraphUtil.createBendPoint(secondEdgeSection, endPoint.preciseX(), endPoint.preciseY()); + iterator.remove(); + } + startPoint = endPoint; + } + if (isOnSecondPart) { + originalSection.setEndX(intermediateNodeLocation.x); + originalSection.setEndY(intermediateNodeLocation.y); + secondEdgeSection.setStartX(intermediateNodeLocation.x); + secondEdgeSection.setStartY(intermediateNodeLocation.y); + } + } + secondEdgeSection.setEndX(originalEndingPoint.preciseX()); + secondEdgeSection.setEndY(originalEndingPoint.preciseY()); + } + } + /** * Stores the layout information of the given connection edit part into an edge layout. * @@ -1753,4 +1883,37 @@ public class ElkDiagramLayoutConnector implements IDiagramLayoutConnector { return null; } + /** + * Returns the lowest common ancestor of the given two graph elements. If the two graph elements are not part of the + * same graph (that is, their root nodes differ), there is no common ancestor. + * + * @param graphElement1 + * the first graph element. + * @param graphElement2 + * the second graph element. + * @return the lowest common ancestor or {@code null} if there is none. + */ + public static ElkNode findLowestCommonAncestor(final ElkGraphElement graphElement1, final ElkGraphElement graphElement2) { + ElkNode node1 = null; + if (graphElement1 instanceof ElkPort) { + node1 = ((ElkPort) graphElement1).getParent(); + } else if (graphElement1 instanceof ElkNode) { + node1 = (ElkNode) graphElement1; + } else if (graphElement1 instanceof ElkEdge) { + node1 = ElkGraphUtil.findBestEdgeContainment((ElkEdge) graphElement1); + } + ElkNode node2 = null; + if (graphElement2 instanceof ElkPort) { + node2 = ((ElkPort) graphElement2).getParent(); + } else if (graphElement2 instanceof ElkNode) { + node2 = (ElkNode) graphElement2; + } else if (graphElement2 instanceof ElkEdge) { + node2 = ElkGraphUtil.findBestEdgeContainment((ElkEdge) graphElement2); + } + if (node1 != null && node2 != null) { + return ElkGraphUtil.findLowestCommonAncestor(node1, node2); + } else { + return null; + } + } } diff --git a/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/GmfLayoutEditPolicy.java b/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/GmfLayoutEditPolicy.java index 72e5872a5e..4deefefacd 100644 --- a/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/GmfLayoutEditPolicy.java +++ b/plugins/org.eclipse.sirius.diagram.elk/src/org/eclipse/sirius/diagram/elk/GmfLayoutEditPolicy.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009, 2020 Kiel University and others. + * Copyright (c) 2009, 2021 Kiel University and others. * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at @@ -14,6 +14,7 @@ package org.eclipse.sirius.diagram.elk; import java.util.HashMap; import java.util.List; +import java.util.ListIterator; import java.util.Map; import org.eclipse.draw2d.ConnectionAnchor; @@ -23,6 +24,7 @@ import org.eclipse.draw2d.geometry.Point; import org.eclipse.draw2d.geometry.PointList; import org.eclipse.draw2d.geometry.PrecisionDimension; import org.eclipse.draw2d.geometry.PrecisionPoint; +import org.eclipse.draw2d.geometry.PrecisionRectangle; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.elk.core.math.ElkMath; import org.eclipse.elk.core.math.KVector; @@ -30,9 +32,11 @@ import org.eclipse.elk.core.math.KVectorChain; import org.eclipse.elk.core.options.CoreOptions; import org.eclipse.elk.core.options.EdgeLabelPlacement; import org.eclipse.elk.core.options.EdgeRouting; +import org.eclipse.elk.core.service.LayoutMapping; import org.eclipse.elk.core.util.ElkUtil; import org.eclipse.elk.core.util.Pair; import org.eclipse.elk.core.util.WrappedException; +import org.eclipse.elk.graph.ElkBendPoint; import org.eclipse.elk.graph.ElkConnectableShape; import org.eclipse.elk.graph.ElkEdge; import org.eclipse.elk.graph.ElkEdgeSection; @@ -42,6 +46,7 @@ import org.eclipse.elk.graph.ElkNode; import org.eclipse.elk.graph.ElkPort; import org.eclipse.elk.graph.ElkShape; import org.eclipse.elk.graph.util.ElkGraphUtil; +import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.gef.GraphicalEditPart; @@ -54,8 +59,10 @@ import org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.INodeEditPart; import org.eclipse.gmf.runtime.diagram.ui.editparts.LabelEditPart; +import org.eclipse.gmf.runtime.draw2d.ui.figures.BaseSlidableAnchor; import org.eclipse.gmf.runtime.draw2d.ui.geometry.LineSeg; import org.eclipse.gmf.runtime.draw2d.ui.geometry.PointListUtilities; +import org.eclipse.gmf.runtime.draw2d.ui.geometry.PrecisionPointList; import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter; import org.eclipse.gmf.runtime.gef.ui.figures.SlidableAnchor; import org.eclipse.gmf.runtime.notation.Edge; @@ -89,7 +96,7 @@ import org.eclipse.sirius.viewpoint.Style; public class GmfLayoutEditPolicy extends AbstractEditPolicy { /** map of edge layouts to existing point lists. */ - private Map<ElkEdgeSection, PointList> pointListMap = new HashMap<>(); + private Map<ElkEdgeSection, PrecisionPointList> pointListMap = new HashMap<>(); /** * {@inheritDoc} @@ -249,7 +256,14 @@ public class GmfLayoutEditPolicy extends AbstractEditPolicy { } /** - * Adds an edge layout to the given command. + * Adds an edge layout to the given command. This method handles standard edges, edges pointing to another edge (as + * source or as target) but not in all conditions (bugzilla 571925 is a first step to handle edge on edge). It does + * not handle "note attachment" (as Note is currently not layouted).</BR> + * With bugzilla 571925 and "egde on egde" specific behavior, the ELKGraph is modified during this step (during the + * construction of the command). It's not the classical way. Maybe all the ELKGraph modification (around virtual + * nodes and split edges) must be done at the end of method + * {@link org.eclipse.sirius.diagram.elk.ElkDiagramLayoutConnector#transferLayout(LayoutMapping, boolean)} just + * before calling " diagramEditPart.getCommand(applyLayoutRequest)". This will be maybe done later. * * @param command * command to which an edge layout shall be added @@ -262,42 +276,141 @@ public class GmfLayoutEditPolicy extends AbstractEditPolicy { */ private void addEdgeLayout(final GmfLayoutCommand command, final ElkEdge elkEdge, final ConnectionEditPart connectionEditPart, final double scale) { + ElkEdge secondPartOfEdge = elkEdge.getProperty(ElkDiagramLayoutConnector.SECOND_PART_OF_SPLIT_EDGE); + if (secondPartOfEdge != null) { + // It's an edge on edge case. We should "reconstruct" the original layout (build the full edge from the 2 + // parts) + ElkEdgeSection firstSection = elkEdge.getSections().get(0); + ElkEdgeSection secondSection = secondPartOfEdge.getSections().get(0); + // Be sure to have a vertical or an horizontal segment for the "junction". Indeed, the virtual node + // can leads to some double location not exactly on the same axis. This boolean is set to true when the + // alignment is done. + boolean firstPointOfSecondPartAfterStartPoint = true; + int firstSectionRoundEndY = (int) Math.round(firstSection.getEndY()); + int firstSectionRoundEndX = (int) Math.round(firstSection.getEndX()); + for (ElkBendPoint elkBendPoint : secondSection.getBendPoints()) { + if (firstPointOfSecondPartAfterStartPoint) { + int secondSectionRoundFirstBendpointY = (int) Math.round(elkBendPoint.getY()); + int secondSectionRoundFirstBendpointX = (int) Math.round(elkBendPoint.getX()); + if (secondSectionRoundFirstBendpointY - 1 <= firstSectionRoundEndY && firstSectionRoundEndY <= secondSectionRoundFirstBendpointY + 1) { + // Align the previous point + if (firstSection.getBendPoints().isEmpty()) { + firstSection.setStartY(firstSectionRoundEndY); + } else { + firstSection.getBendPoints().get(firstSection.getBendPoints().size() - 1).setY(firstSectionRoundEndY);; + } + // Create a bendpoint aligned on the end point of first part + ElkGraphUtil.createBendPoint(firstSection, elkBendPoint.getX(), firstSectionRoundEndY); + } else if (secondSectionRoundFirstBendpointX - 1 <= firstSectionRoundEndX && firstSectionRoundEndX <= secondSectionRoundFirstBendpointX + 1) { + // Align the previous point + if (firstSection.getBendPoints().isEmpty()) { + firstSection.setStartX(firstSectionRoundEndX); + } else { + firstSection.getBendPoints().get(firstSection.getBendPoints().size() - 1).setX(firstSectionRoundEndX); + } + // Create a bendpoint aligned on the end point of first part + ElkGraphUtil.createBendPoint(firstSection, Math.round(firstSection.getEndX()), elkBendPoint.getY()); + } + firstPointOfSecondPartAfterStartPoint = false; + } else { + ElkGraphUtil.createBendPoint(firstSection, elkBendPoint.getX(), elkBendPoint.getY()); + } + } + if (firstPointOfSecondPartAfterStartPoint) { + int secondSectionRoundEndX = (int) Math.round(secondSection.getEndX()); + int secondSectionRoundEndY = (int) Math.round(secondSection.getEndY()); + if (secondSectionRoundEndY - 1 <= firstSectionRoundEndY && firstSectionRoundEndY <= secondSectionRoundEndY + 1) { + // Align the previous point + if (firstSection.getBendPoints().isEmpty()) { + firstSection.setStartY(firstSectionRoundEndY); + } else { + firstSection.getBendPoints().get(firstSection.getBendPoints().size() - 1).setY(firstSectionRoundEndY);; + } + // Change the end point + firstSection.setEndX(secondSection.getEndX()); + firstSection.setEndY(firstSectionRoundEndY); + } else if (secondSectionRoundEndX - 1 <= firstSectionRoundEndX && firstSectionRoundEndX <= secondSectionRoundEndX + 1) { + // Align the previous point + if (firstSection.getBendPoints().isEmpty()) { + firstSection.setStartX(firstSectionRoundEndX); + } else { + firstSection.getBendPoints().get(firstSection.getBendPoints().size() - 1).setX(firstSectionRoundEndX); + } + // Change the end point + firstSection.setEndX(firstSectionRoundEndX); + firstSection.setEndY(secondSection.getEndY()); + } + } else { + firstSection.setEndX(secondSection.getEndX()); + firstSection.setEndY(secondSection.getEndY()); + } + // Reset to the original target (we keep the "virtual" node as target, used later for edge(s) pointing to + // this edge) + elkEdge.getTargets().add(0, secondPartOfEdge.getTargets().get(0)); + } if (connectionEditPart.getSource() != null && connectionEditPart.getTarget() != null) { + PointList currentEdgeBendpoints = getBendPoints(elkEdge, connectionEditPart.getFigure(), scale); // create source terminal identifier INodeEditPart sourceEditPart = (INodeEditPart) connectionEditPart.getSource(); ConnectionAnchor sourceAnchor; - if (sourceEditPart instanceof ConnectionEditPart) { - // if the edge source is a connection, don't consider the source - // point - sourceAnchor = new SlidableAnchor(sourceEditPart.getFigure()); - } else { + if (!ElkDiagramLayoutConnector.EDGE_ON_EDGE_ID_NODE.equals(elkEdge.getSources().get(0).getIdentifier())) { KVector sourceRel = getRelativeSourcePoint(elkEdge); sourceAnchor = new SlidableAnchor(sourceEditPart.getFigure(), new PrecisionPoint(sourceRel.x, sourceRel.y)); + } else { + // Case of edge pointing to another edge as source: This edge should probably be split: As there is a + // virtual node, a potential overlap between the two edges exists. We must change that because the + // virtual node will no longer exist on Sirius side. + // Identify the last bendpoint of the current edge that is on the source edge and stop on it (do not use + // the path that overlap the source edge). + currentEdgeBendpoints = cutEdgeOnEdge(elkEdge, connectionEditPart, scale, true); + + // Compute the source anchor + PrecisionPointList sourceEdgePointsListInAsboluteCoordinates = getPointListInAbsoluteCoordinates(searchEdgeWithSecondPartProperty(elkEdge.getSources().get(0).getIncomingEdges())); + Rectangle absoluteBounds = sourceEdgePointsListInAsboluteCoordinates.getBounds(); + // Set a minimal witdh or height to 1 pixel instead of 0 (to avoid computation problem in anchor) + if (absoluteBounds.width() == 0) { + absoluteBounds.setWidth(1); + } else if (absoluteBounds.height() == 0) { + absoluteBounds.setHeight(1); + } + Point absoluteOrigin = absoluteBounds.getTopLeft(); + KVector relativeOrigin = ElkUtil.toRelative(new KVector(absoluteOrigin.preciseX(), absoluteOrigin.preciseY()), elkEdge.getContainingNode()); + PrecisionPoint sourceAnchorPoint = BaseSlidableAnchor.getAnchorRelativeLocation(currentEdgeBendpoints.getFirstPoint(), + new PrecisionRectangle(relativeOrigin.x, relativeOrigin.y, absoluteBounds.width(), absoluteBounds.height())); + sourceAnchor = new SlidableAnchor(sourceEditPart.getFigure(), sourceAnchorPoint); } String sourceTerminal = sourceEditPart.mapConnectionAnchorToTerminal(sourceAnchor); // create target terminal identifier INodeEditPart targetEditPart = (INodeEditPart) connectionEditPart.getTarget(); ConnectionAnchor targetAnchor; - if (targetEditPart instanceof ConnectionEditPart) { - // if the edge target is a connection, don't consider the target - // point - targetAnchor = new SlidableAnchor(targetEditPart.getFigure()); - } else { + if (!ElkDiagramLayoutConnector.EDGE_ON_EDGE_ID_NODE.equals(elkEdge.getTargets().get(0).getIdentifier())) { KVector targetRel = getRelativeTargetPoint(elkEdge); targetAnchor = new SlidableAnchor(targetEditPart.getFigure(), new PrecisionPoint(targetRel.x, targetRel.y)); - } - String targetTerminal = targetEditPart.mapConnectionAnchorToTerminal(targetAnchor); - - PointList bendPoints = getBendPoints(elkEdge, connectionEditPart.getFigure(), scale); - - // check whether the connection is a note attachment to an edge, - // then remove bend points - if (sourceEditPart instanceof ConnectionEditPart || targetEditPart instanceof ConnectionEditPart) { - while (bendPoints.size() > 2) { - bendPoints.removePoint(1); + } else { + // Case of edge pointing to another edge as target: This edge should probably be split: As there is a + // virtual node, a potential overlap between the two edges exists. We must change that because the + // virtual node will no longer exist on Sirius side. + // Identify the first bendpoint of the current edge that is on the target edge and stop on it (do not + // use the path that overlap the target edge). + currentEdgeBendpoints = cutEdgeOnEdge(elkEdge, connectionEditPart, scale, false); + + // Compute the target anchor + PrecisionPointList targetEdgePointsListInAsboluteCoordinates = getPointListInAbsoluteCoordinates(searchEdgeWithSecondPartProperty(elkEdge.getTargets().get(0).getIncomingEdges())); + Rectangle absoluteBounds = targetEdgePointsListInAsboluteCoordinates.getBounds(); + // Set a minimal witdh or height to 1 pixel instead of 0 (to avoid computation problem in anchor) + if (absoluteBounds.width() == 0) { + absoluteBounds.setWidth(1); + } else if (absoluteBounds.height() == 0) { + absoluteBounds.setHeight(1); } + Point absoluteOrigin = absoluteBounds.getTopLeft(); + KVector relativeOrigin = ElkUtil.toRelative(new KVector(absoluteOrigin.preciseX(), absoluteOrigin.preciseY()), elkEdge.getContainingNode()); + PrecisionPoint targetAnchorPoint = BaseSlidableAnchor.getAnchorRelativeLocation(currentEdgeBendpoints.getLastPoint(), + new Rectangle((int) Math.round(relativeOrigin.x), (int) Math.round(relativeOrigin.y), absoluteBounds.width(), absoluteBounds.height())); + targetAnchor = new SlidableAnchor(targetEditPart.getFigure(), targetAnchorPoint); } + String targetTerminal = targetEditPart.mapConnectionAnchorToTerminal(targetAnchor); // retrieve junction points and transform them to absolute // coordinates @@ -310,8 +423,167 @@ public class GmfLayoutEditPolicy extends AbstractEditPolicy { serializedJP = junctionPoints.toString(); } - command.addEdgeLayout((Edge) connectionEditPart.getModel(), bendPoints, sourceTerminal, targetTerminal, serializedJP); + command.addEdgeLayout((Edge) connectionEditPart.getModel(), currentEdgeBendpoints, sourceTerminal, targetTerminal, serializedJP); + } + } + + private PrecisionPointList getPointListInAbsoluteCoordinates(ElkEdge edge) { + ElkEdgeSection edgeSection = edge.getSections().get(0); + PrecisionPointList edgePointsListInAsboluteCoordinates = new PrecisionPointList(); + KVector absolutePoint = ElkUtil.toAbsolute(new KVector(edgeSection.getStartX(), edgeSection.getStartY()), edge.getContainingNode()); + edgePointsListInAsboluteCoordinates.addPrecisionPoint(absolutePoint.x, absolutePoint.y); + for (ElkBendPoint elkBendpoint : edgeSection.getBendPoints()) { + absolutePoint = ElkUtil.toAbsolute(new KVector(elkBendpoint.getX(), elkBendpoint.getY()), edge.getContainingNode()); + edgePointsListInAsboluteCoordinates.addPrecisionPoint(absolutePoint.x, absolutePoint.y); + } + absolutePoint = ElkUtil.toAbsolute(new KVector(edgeSection.getEndX(), edgeSection.getEndY()), edge.getContainingNode()); + edgePointsListInAsboluteCoordinates.addPrecisionPoint(absolutePoint.x, absolutePoint.y); + return edgePointsListInAsboluteCoordinates; + } + + private PointList cutEdgeOnEdge(ElkEdge elkEdgeToCut, ConnectionEditPart connectionEditPart, double scale, boolean sourceIsAnotherEdge) { + LineSeg lineSegToCutInAbsolute; + PrecisionPoint junctionPoint = new PrecisionPoint(); + ElkEdgeSection sectionToCut = elkEdgeToCut.getSections().get(0); + if (sourceIsAnotherEdge) { + junctionPoint = new PrecisionPoint(sectionToCut.getStartX(), sectionToCut.getStartY()); + if (sectionToCut.getBendPoints().size() > 0) { + ElkBendPoint otherPoint = sectionToCut.getBendPoints().get(0); + lineSegToCutInAbsolute = new LineSeg(junctionPoint, new PrecisionPoint(otherPoint.getX(), otherPoint.getY())); + } else { + lineSegToCutInAbsolute = new LineSeg(junctionPoint, new PrecisionPoint(sectionToCut.getEndX(), sectionToCut.getEndY())); + } + } else { + junctionPoint = new PrecisionPoint(elkEdgeToCut.getSections().get(0).getEndX(), elkEdgeToCut.getSections().get(0).getEndY()); + if (sectionToCut.getBendPoints().size() > 0) { + ElkBendPoint otherPoint = sectionToCut.getBendPoints().get(sectionToCut.getBendPoints().size() - 1); + lineSegToCutInAbsolute = new LineSeg(junctionPoint, new PrecisionPoint(otherPoint.getX(), otherPoint.getY())); + } else { + lineSegToCutInAbsolute = new LineSeg(junctionPoint, new PrecisionPoint(sectionToCut.getStartX(), sectionToCut.getStartY())); + } + } + KVector absolutePoint = ElkUtil.toAbsolute(new KVector(lineSegToCutInAbsolute.getOrigin().preciseX(), lineSegToCutInAbsolute.getOrigin().preciseY()), elkEdgeToCut.getContainingNode()); + lineSegToCutInAbsolute.setOrigin(new PrecisionPoint(absolutePoint.x, absolutePoint.y)); + absolutePoint = ElkUtil.toAbsolute(new KVector(lineSegToCutInAbsolute.getTerminus().preciseX(), lineSegToCutInAbsolute.getTerminus().preciseY()), elkEdgeToCut.getContainingNode()); + lineSegToCutInAbsolute.setTerminus(new PrecisionPoint(absolutePoint.x, absolutePoint.y)); + + // Search the segment on source or target edge that contains the junction point, and use its coordinates + // (aligned before in addEdgeLayout for this source or target edge) + ElkEdge sourceOrTargetEdge; + if (sourceIsAnotherEdge) { + sourceOrTargetEdge = searchEdgeWithSecondPartProperty(elkEdgeToCut.getSources().get(0).getIncomingEdges()); + } else { + sourceOrTargetEdge = searchEdgeWithSecondPartProperty(elkEdgeToCut.getTargets().get(0).getIncomingEdges()); + } + PrecisionPointList sourceOrTargetEdgePointsListInAsboluteCoordinates = getPointListInAbsoluteCoordinates(sourceOrTargetEdge); + // Use the source or target edge coordinates (aligned before in addEdgeLayout for this source or target edge) + LineSeg sourceOrTargetEdgeLineSegInAbsolute = findNearestLineSegOfPoint(sourceOrTargetEdgePointsListInAsboluteCoordinates, junctionPoint); + if (sourceOrTargetEdgeLineSegInAbsolute.isHorizontal()) { + // Use the y of source or target edge segment (if points of segment to cut are near it) + double yToUse = ((PrecisionPoint) sourceOrTargetEdgeLineSegInAbsolute.getOrigin()).preciseY(); + PrecisionPoint origin = (PrecisionPoint) lineSegToCutInAbsolute.getOrigin(); + if (yToUse - 1 <= origin.preciseY() && origin.preciseY() <= yToUse + 1) { + lineSegToCutInAbsolute.setOrigin(new PrecisionPoint(origin.preciseX(), yToUse)); + } + PrecisionPoint terminus = (PrecisionPoint) lineSegToCutInAbsolute.getTerminus(); + if (yToUse - 1 <= terminus.preciseY() && terminus.preciseY() <= yToUse + 1) { + lineSegToCutInAbsolute.setTerminus(new PrecisionPoint(terminus.preciseX(), yToUse)); + } + } else if (sourceOrTargetEdgeLineSegInAbsolute.isVertical()) { + // Use the x of source or target edge segment (if points of segment to cut are near it) + double xToUse = ((PrecisionPoint) sourceOrTargetEdgeLineSegInAbsolute.getOrigin()).preciseX(); + PrecisionPoint origin = (PrecisionPoint) lineSegToCutInAbsolute.getOrigin(); + if (xToUse - 1 <= origin.preciseX() && origin.preciseX() <= xToUse + 1) { + lineSegToCutInAbsolute.setOrigin(new PrecisionPoint(xToUse, origin.preciseY())); + } + PrecisionPoint terminus = (PrecisionPoint) lineSegToCutInAbsolute.getTerminus(); + if (xToUse - 1 <= terminus.preciseX() && terminus.preciseX() <= xToUse + 1) { + lineSegToCutInAbsolute.setTerminus(new PrecisionPoint(xToUse, terminus.preciseY())); + } + } + // Do the cut + PointList elkEdgeToCutPointList = getBendPoints(elkEdgeToCut, connectionEditPart.getFigure(), scale); + if (sourceOrTargetEdgeLineSegInAbsolute.containsPoint(lineSegToCutInAbsolute.getTerminus(), 1)) { + // lineSegToCut other extremity is on the sourceOrTargetEdgeLineSeg, only this point should be kept. The + // first/last should be delete. + KVector relativeOriginPoint = ElkUtil.toRelative(new KVector(lineSegToCutInAbsolute.getTerminus().preciseX(), lineSegToCutInAbsolute.getTerminus().preciseY()), + elkEdgeToCut.getContainingNode()); + if (sourceIsAnotherEdge) { + // First point to delete + elkEdgeToCutPointList.removePoint(0); + Point point = elkEdgeToCutPointList.getFirstPoint(); + if (sourceOrTargetEdgeLineSegInAbsolute.isHorizontal()) { + // y should be used + point.setY((int) Math.round(relativeOriginPoint.y)); + } else if (sourceOrTargetEdgeLineSegInAbsolute.isVertical()) { + // x should be used + point.setX((int) Math.round(relativeOriginPoint.x)); + } + elkEdgeToCutPointList.setPoint(point, 0); + } else { + // Last point to delete + elkEdgeToCutPointList.removePoint(elkEdgeToCutPointList.size() - 1); + Point point = elkEdgeToCutPointList.getLastPoint(); + if (sourceOrTargetEdgeLineSegInAbsolute.isHorizontal()) { + // y should be used + point.setY((int) Math.round(relativeOriginPoint.y)); + } else if (sourceOrTargetEdgeLineSegInAbsolute.isVertical()) { + // x should be used + point.setX((int) Math.round(relativeOriginPoint.x)); + } + elkEdgeToCutPointList.setPoint(point, elkEdgeToCutPointList.size() - 1); + } + } else if (lineSegToCutInAbsolute.containsPoint(sourceOrTargetEdgeLineSegInAbsolute.getOrigin(), 1)) { + // lineSegToCut contains the starting point of the sourceOrTargetEdgeLineSeg, this point replace the + // first/last point. + KVector relativeOriginPoint = ElkUtil.toRelative(new KVector(sourceOrTargetEdgeLineSegInAbsolute.getOrigin().preciseX(), sourceOrTargetEdgeLineSegInAbsolute.getOrigin().preciseY()), + elkEdgeToCut.getContainingNode()); + if (sourceIsAnotherEdge) { + // First point to replace + elkEdgeToCutPointList.setPoint(new PrecisionPoint(relativeOriginPoint.x, relativeOriginPoint.y), 0); + } else { + // Last point to replace + elkEdgeToCutPointList.setPoint(sourceOrTargetEdgeLineSegInAbsolute.getOrigin(), elkEdgeToCutPointList.size() - 1); + } + } else if (lineSegToCutInAbsolute.containsPoint(sourceOrTargetEdgeLineSegInAbsolute.getTerminus(), 1)) { + // lineSegToCut contains the ending point of the sourceOrTargetEdgeLineSeg, this point replace the + // first/last point. + KVector relativeTerminusPoint = ElkUtil.toRelative(new KVector(sourceOrTargetEdgeLineSegInAbsolute.getTerminus().preciseX(), sourceOrTargetEdgeLineSegInAbsolute.getTerminus().preciseY()), + elkEdgeToCut.getContainingNode()); + if (sourceIsAnotherEdge) { + // First point to replace + elkEdgeToCutPointList.setPoint(new PrecisionPoint(relativeTerminusPoint.x, relativeTerminusPoint.y), 0); + // "Aligned" the second last point + if (sourceOrTargetEdgeLineSegInAbsolute.isHorizontal()) { + // y should be used + elkEdgeToCutPointList.setPoint(new PrecisionPoint(elkEdgeToCutPointList.getPoint(1).x, relativeTerminusPoint.y), 1); + } else if (sourceOrTargetEdgeLineSegInAbsolute.isVertical()) { + // x should be used + elkEdgeToCutPointList.setPoint(new PrecisionPoint(relativeTerminusPoint.x, elkEdgeToCutPointList.getPoint(1).y), 1); + } + } else { + // Last point to replace + elkEdgeToCutPointList.setPoint(new PrecisionPoint(relativeTerminusPoint.x, relativeTerminusPoint.y), elkEdgeToCutPointList.size() - 1); + // "Aligned" the before last point + if (sourceOrTargetEdgeLineSegInAbsolute.isHorizontal()) { + // y should be used + elkEdgeToCutPointList.setPoint(new PrecisionPoint(elkEdgeToCutPointList.getPoint(elkEdgeToCutPointList.size() - 2).x, relativeTerminusPoint.y), elkEdgeToCutPointList.size() - 2); + } else if (sourceOrTargetEdgeLineSegInAbsolute.isVertical()) { + // x should be used + elkEdgeToCutPointList.setPoint(new PrecisionPoint(relativeTerminusPoint.x, elkEdgeToCutPointList.getPoint(elkEdgeToCutPointList.size() - 2).y), elkEdgeToCutPointList.size() - 2); + } + } + } + return elkEdgeToCutPointList; + } + + private ElkEdge searchEdgeWithSecondPartProperty(EList<ElkEdge> edges) { + for (ElkEdge elkEdge : edges) { + if (elkEdge.getProperty(ElkDiagramLayoutConnector.SECOND_PART_OF_SPLIT_EDGE) != null) { + return elkEdge; + } } + return null; } /** @@ -332,7 +604,9 @@ public class GmfLayoutEditPolicy extends AbstractEditPolicy { // We will now make the source point absolute, and then relative to the // source node ElkUtil.toAbsolute(sourcePoint, edge.getContainingNode()); - ElkUtil.toRelative(sourcePoint, ElkGraphUtil.connectableShapeToNode(sourceShape)); + // The method ElkUtil.toRelative is not used here. Indeed, the decimals are then ignored for node, and this + // leads to a slightly wrong value for the anchor. + GmfLayoutEditPolicy.toRelativeRound(sourcePoint, ElkGraphUtil.connectableShapeToNode(sourceShape)); // The end result will be coordinates between 0 and 1, with 0 being at // the left / top or the source shape and @@ -378,17 +652,19 @@ public class GmfLayoutEditPolicy extends AbstractEditPolicy { * @return the relative target point */ private KVector getRelativeTargetPoint(final ElkEdge edge) { - // The edge should have exactly one source shape + // The edge should have exactly one target shape ElkConnectableShape targetShape = edge.getTargets().get(0); // The edge should have one edge section after layout ElkEdgeSection edgeSection = edge.getSections().get(0); KVector targetPoint = new KVector(edgeSection.getEndX(), edgeSection.getEndY()); - // We will now make the source point absolute, and then relative to the - // source node + // We will now make the target point absolute, and then relative to the + // target node ElkUtil.toAbsolute(targetPoint, edge.getContainingNode()); - ElkUtil.toRelative(targetPoint, ElkGraphUtil.connectableShapeToNode(targetShape)); + // The method ElkUtil.toRelative is not used here. Indeed, the decimals are then ignored for node, and this + // leads to a slightly wrong value for the anchor. + GmfLayoutEditPolicy.toRelativeRound(targetPoint, ElkGraphUtil.connectableShapeToNode(targetShape)); // The end result will be coordinates between 0 and 1, with 0 being at // the left / top or the source shape and @@ -523,7 +799,7 @@ public class GmfLayoutEditPolicy extends AbstractEditPolicy { // This assumes that the edge has at least one edge section, which by // this point it should ElkEdgeSection edgeSection = edge.getSections().get(0); - PointList pointList = pointListMap.get(edgeSection); + PrecisionPointList pointList = pointListMap.get(edgeSection); if (pointList == null) { KVectorChain bendPoints = ElkUtil.createVectorChain(edgeSection); @@ -537,9 +813,9 @@ public class GmfLayoutEditPolicy extends AbstractEditPolicy { } bendPoints.scale(scale); - pointList = new PointList(bendPoints.size() + 2); + pointList = new PrecisionPointList(bendPoints.size() + 2); for (KVector bendPoint : bendPoints) { - pointList.addPoint((int) bendPoint.x, (int) bendPoint.y); + pointList.addPrecisionPoint(bendPoint.x, bendPoint.y); } pointListMap.put(edgeSection, pointList); @@ -674,4 +950,67 @@ public class GmfLayoutEditPolicy extends AbstractEditPolicy { return null; } + /** + * Method inspired from {@link PointListUtilities#findNearestLineSegIndexOfPoint(PointList, Point)}. Calculate the + * nearest line segment index distance wise to the given point. + * + * @param points + * PointList to calculate the nearest line segment of. + * @param ptCoord + * the <code>Point</code> to test containment of. + * @return int Index of line segment that is nearest in the polyline to the given point. The index is 1 based where + * 1 represents the first segment. + */ + static public LineSeg findNearestLineSegOfPoint(PointList points, final Point ptCoord) { + int BIGDISTANCE = 32766; + List<?> mySegments = PointListUtilities.getLineSegments(points); + ListIterator<?> lineIter = mySegments.listIterator(); + double minDistance = BIGDISTANCE; + double nextDistance = 0; + + LineSeg result = null; + while (lineIter.hasNext()) { + LineSeg aSegment = (LineSeg) lineIter.next(); + + nextDistance = aSegment.preciseDistanceToPoint(ptCoord.x, ptCoord.y); + + if (nextDistance < minDistance) { + minDistance = nextDistance; + result = aSegment; + } + } + + return result; + } + + /** + * Converts a double value into an integer value, avoiding rounding effects.</BR> + * Copied from {@link org.eclipse.draw2d.geometry.PrecisionGeometry#doubleToInteger(double)}. + * + * @param doubleValue + * the double value to convert + * @return the integer value for the double. + */ + protected static final int doubleToInteger(double doubleValue) { + return (int) Math.floor(doubleValue + 0.000000001); + } + + /** + * Converts the given absolute point to a relative location (using round coordinates, as it will we in Draw2D + * after)./BR> Copied from {@link ElkUtil#toRelative(KVector, ElkNode)}. + * + * @param point + * an absolute point + * @param parent + * the parent node to which the point shall be made relative to + * @return {@code point} for convenience + */ + public static KVector toRelativeRound(final KVector point, final ElkNode parent) { + ElkNode node = parent; + while (node != null) { + point.add(-doubleToInteger(node.getX()), -doubleToInteger(node.getY())); + node = node.getParent(); + } + return point; + } } diff --git a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html index 8b5f07c915..edf91f32a7 100644 --- a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html +++ b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.html @@ -177,6 +177,24 @@ <code>org.eclipse.jface.viewers.CellEditor</code> to edit a cell (see <a href="specifier/tables/Tables.html#column_tools">documentation</a> for more details). </li> + <li><span class="label label-info">Modified</span> ELK integration now handles “egde on edge” case. As reminder, Sirius allows to have an edge as source or target of another edge. This kind of construction is not allowed by ELK. Sirius 6.5.0 introduces a specific transformation from Sirius graph to EKL graph (and reciprocally) in</li> + </ul> + <p>order, despite this problem, to have a satisfactory layout result. This new behavior has been tested with + <a href="https://www.eclipse.org/elk/reference/algorithms/org-eclipse-elk-layered.html">ELK Layered</a> algorithm with option + <a href="https://www.eclipse.org/elk/reference/options/org-eclipse-elk-layered-layering-strategy.html"> + <code>Node Layering Strategy</code> + </a> set to + <code>NETWORK_SIMPLEX</code>. There is no guarantee with other kind of layouts. All cases are not supported. Further additional developments are needed to support more. There are probably still some constructions not correctly handled but it is a first step. As example, the edges with label(s) have not been tested. Here is a list of supported/tested cases: + </p> + <ul> + <li> + <ul> + <li>An edge having another edge as source,</li> + <li>An edge having another edge as target,</li> + <li>An edge that is the source of several edges,</li> + <li>An edge that is the target of several edges.</li> + </ul> + </li> </ul> <h3 id="DeveloperVisibleChanges">Developer-Visible Changes</h3> <ul> diff --git a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile index ca8bc6d3d5..7d2ba42401 100644 --- a/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile +++ b/plugins/org.eclipse.sirius.doc/doc/Release_Notes.textile @@ -15,6 +15,12 @@ h3. User-Visible Changes h3. Specifier-Visible Changes * <span class="label label-success">Added</span> A new @CellEditor@ tool is available for feature column mapping of edition table. It allows to define a specific @org.eclipse.jface.viewers.CellEditor@ to edit a cell (see "documentation":specifier/tables/Tables.html#column_tools for more details). +* <span class="label label-info">Modified</span> ELK integration now handles "egde on edge" case. As reminder, Sirius allows to have an edge as source or target of another edge. This kind of construction is not allowed by ELK. Sirius 6.5.0 introduces a specific transformation from Sirius graph to EKL graph (and reciprocally) in +order, despite this problem, to have a satisfactory layout result. This new behavior has been tested with "ELK Layered":https://www.eclipse.org/elk/reference/algorithms/org-eclipse-elk-layered.html algorithm with option "@Node Layering Strategy@":https://www.eclipse.org/elk/reference/options/org-eclipse-elk-layered-layering-strategy.html set to @NETWORK_SIMPLEX@. There is no guarantee with other kind of layouts. All cases are not supported. Further additional developments are needed to support more. There are probably still some constructions not correctly handled but it is a first step. As example, the edges with label(s) have not been tested. Here is a list of supported/tested cases: +** An edge having another edge as source, +** An edge having another edge as target, +** An edge that is the source of several edges, +** An edge that is the target of several edges. h3. Developer-Visible Changes diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/My.ecore b/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/My.ecore index 720fb8f70b..991b666ebb 100644 --- a/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/My.ecore +++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/My.ecore @@ -103,4 +103,62 @@ <eClassifiers xsi:type="ecore:EClass" name="C2"/> </eSubpackages> </eSubpackages> + <eSubpackages name="simpleEdgeOnEdge"> + <eClassifiers xsi:type="ecore:EClass" name="C1"> + <eOperations name="op1" eType="#//simpleEdgeOnEdge/C2"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="toC7" eType="#//simpleEdgeOnEdge/C2"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="C2"/> + </eSubpackages> + <eSubpackages name="complexeEdgeOnEdge"> + <eClassifiers xsi:type="ecore:EClass" name="C1"> + <eOperations name="op1" eType="#//complexeEdgeOnEdge/C2"/> + <eOperations name="op3" eType="#//complexeEdgeOnEdge/C2"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="toC7" eType="#//complexeEdgeOnEdge/C2"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="C2"> + <eStructuralFeatures xsi:type="ecore:EReference" name="toC8" eType="#//complexeEdgeOnEdge/C3"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="C3"> + <eOperations name="op2" eType="#//complexeEdgeOnEdge/C4"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="toC9" eType="#//complexeEdgeOnEdge/C4"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="C4"/> + </eSubpackages> + <eSubpackages name="levels1EdgeOnEdge"> + <eClassifiers xsi:type="ecore:EClass" name="C1"> + <eOperations name="op1" eType="#//levels1EdgeOnEdge/a/b/c/C2"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="toC2" eType="#//levels1EdgeOnEdge/a/b/c/C2"/> + </eClassifiers> + <eSubpackages name="a"> + <eSubpackages name="b"> + <eSubpackages name="c"> + <eClassifiers xsi:type="ecore:EClass" name="C2"> + <eOperations name="op2" eType="#//levels1EdgeOnEdge/a/b/c/C2"/> + <eOperations name="op3" eType="#//levels1EdgeOnEdge/a/b/c/C2"/> + <eOperations name="op4" eType="#//levels1EdgeOnEdge/a/b/c/C2"/> + <eOperations name="op5" eType="#//levels1EdgeOnEdge/a/b/c/C2"/> + </eClassifiers> + </eSubpackages> + </eSubpackages> + </eSubpackages> + </eSubpackages> + <eSubpackages name="levels2EdgeOnEdge"> + <eSubpackages name="a"> + <eSubpackages name="b"> + <eSubpackages name="c"> + <eClassifiers xsi:type="ecore:EClass" name="C1"> + <eOperations name="op2" eType="#//levels2EdgeOnEdge/a/b/c/C1"/> + <eOperations name="op3" eType="#//levels2EdgeOnEdge/a/b/c/C1"/> + <eOperations name="op4" eType="#//levels2EdgeOnEdge/a/b/c/C1"/> + <eOperations name="op5" eType="#//levels2EdgeOnEdge/a/b/c/C1"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="C2"> + <eOperations name="op1" eType="#//levels2EdgeOnEdge/a/b/c/C1"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="toC1" eType="#//levels2EdgeOnEdge/a/b/c/C1"/> + </eClassifiers> + </eSubpackages> + </eSubpackages> + </eSubpackages> + </eSubpackages> </ecore:EPackage> diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/My.odesign b/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/My.odesign index f5b07f9f7b..e8d5290720 100644 --- a/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/My.odesign +++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/My.odesign @@ -710,5 +710,426 @@ </containerMappings> </defaultLayer> </ownedRepresentations> + <ownedRepresentations xsi:type="description_1:DiagramDescription" name="DiagramEdgeOnEdge_subClasses" titleExpression="aql:'new DiagramEdgeOnEdge_subClasses for '.concat(self.name)" domainClass="ecore::EPackage" enablePopupBars="true"> + <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/> + <layout xsi:type="description_1:CustomLayoutConfiguration" id="org.eclipse.elk.layered" label="ELK Layered" description="Layer-based algorithm provided by the Eclipse Layout Kernel. Arranges as many edges as possible into one direction by placing nodes into subsequent layers. This implementation supports different routing styles (straight, orthogonal, splines); if orthogonal routing is selected, arbitrary port constraints are respected, thus enabling the layout of block diagrams such as actor-oriented models or circuit schematics. Furthermore, full layout of compound graphs with cross-hierarchy edges is supported when the respective option is activated on the top level."> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.direction"> + <targets>PARENT</targets> + <value name="RIGHT"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.hierarchyHandling"> + <targets>PARENT</targets> + <targets>NODE</targets> + <value name="INCLUDE_CHILDREN"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:DoubleLayoutOption" id="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers" value="50.0"> + <targets>PARENT</targets> + </layoutOptions> + </layout> + <defaultLayer name="Default"> + <edgeMappings name="SuperTypesAndRef" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']" targetFinderExpression="aql:self.eReferences->select(ref | self.eSuperTypes->includes(ref.eType))"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="References" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']" targetFinderExpression="feature:eType" sourceFinderExpression="feature:eContainer" domainClass="ecore::EReference" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="ParamToOp" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Parameters']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='OpToRef']" targetFinderExpression="aql:self.eContainer()"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="OpToRef" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']" targetFinderExpression="aql:self.eContainer().eReferences->select(ref | ref.eType = self.eType))" sourceFinderExpression="aql:self" domainClass="ecore::EOperation" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <containerMappings name="Classes" semanticCandidatesExpression="feature:eClassifiers" domainClass="ecore::EClass"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + </style> + </containerMappings> + <containerMappings name="Operations" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations" domainClass="ecore::EOperation"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + </style> + </containerMappings> + <containerMappings name="Parameters" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations.eParameters" domainClass="ecore::EParameter"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </containerMappings> + </defaultLayer> + </ownedRepresentations> + <ownedRepresentations xsi:type="description_1:DiagramDescription" name="DiagramEdgeOnEdge_subClassesReverse" titleExpression="aql:'new DiagramEdgeOnEdge_subClassesReverse for '.concat(self.name)" domainClass="ecore::EPackage" enablePopupBars="true"> + <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/> + <layout xsi:type="description_1:CustomLayoutConfiguration" id="org.eclipse.elk.layered" label="ELK Layered" description="Layer-based algorithm provided by the Eclipse Layout Kernel. Arranges as many edges as possible into one direction by placing nodes into subsequent layers. This implementation supports different routing styles (straight, orthogonal, splines); if orthogonal routing is selected, arbitrary port constraints are respected, thus enabling the layout of block diagrams such as actor-oriented models or circuit schematics. Furthermore, full layout of compound graphs with cross-hierarchy edges is supported when the respective option is activated on the top level."> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.direction"> + <targets>PARENT</targets> + <value name="RIGHT"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.hierarchyHandling"> + <targets>PARENT</targets> + <targets>NODE</targets> + <value name="INCLUDE_CHILDREN"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:DoubleLayoutOption" id="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers" value="50.0"> + <targets>PARENT</targets> + </layoutOptions> + </layout> + <defaultLayer name="Default"> + <edgeMappings name="SuperTypesAndRef" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='References']" targetFinderExpression="aql:self.eReferences->select(ref | self.eSuperTypes->includes(ref.eType))"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="References" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']" targetFinderExpression="feature:eType" sourceFinderExpression="feature:eContainer" domainClass="ecore::EReference" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="ParamToOp" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Parameters']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='OpToRef']" targetFinderExpression="aql:self.eContainer()"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="OpToRef" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='References']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Operations']" targetFinderExpression="aql:self" sourceFinderExpression="aql:self.eContainer().eReferences->select(ref | ref.eType = self.eType))" domainClass="ecore::EOperation" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <containerMappings name="Classes" semanticCandidatesExpression="feature:eClassifiers" domainClass="ecore::EClass"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + </style> + </containerMappings> + <containerMappings name="Operations" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations" domainClass="ecore::EOperation"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + </style> + </containerMappings> + <containerMappings name="Parameters" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations.eParameters" domainClass="ecore::EParameter"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </containerMappings> + </defaultLayer> + </ownedRepresentations> + <ownedRepresentations xsi:type="description_1:DiagramDescription" name="DiagramEdgeOnEdge_withPackage" titleExpression="aql:'new DiagramEdgeOnEdge_withPackage for '.concat(self.name)" domainClass="ecore::EPackage" enablePopupBars="true"> + <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/> + <layout xsi:type="description_1:CustomLayoutConfiguration" id="org.eclipse.elk.layered" label="ELK Layered" description="Layer-based algorithm provided by the Eclipse Layout Kernel. Arranges as many edges as possible into one direction by placing nodes into subsequent layers. This implementation supports different routing styles (straight, orthogonal, splines); if orthogonal routing is selected, arbitrary port constraints are respected, thus enabling the layout of block diagrams such as actor-oriented models or circuit schematics. Furthermore, full layout of compound graphs with cross-hierarchy edges is supported when the respective option is activated on the top level."> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.direction"> + <targets>PARENT</targets> + <value name="RIGHT"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.hierarchyHandling"> + <targets>PARENT</targets> + <targets>NODE</targets> + <value name="INCLUDE_CHILDREN"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:DoubleLayoutOption" id="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers" value="50.0"> + <targets>PARENT</targets> + </layoutOptions> + </layout> + <defaultLayer name="Default"> + <edgeMappings name="References" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Classes']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Classes']" targetFinderExpression="feature:eType" sourceFinderExpression="feature:eContainer" domainClass="ecore::EReference" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="OpToRef2" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='References']" targetFinderExpression="aql:self.eContainer().eInverse()->filter(ecore::EReference)" sourceFinderExpression="aql:self" domainClass="ecore::EOperation" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <containerMappings name="Packages" semanticCandidatesExpression="feature:eSubpackages" domainClass="ecore::EPackage" reusedContainerMappings="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Classes'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Parameters'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Packages']"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/> + </style> + </containerMappings> + <containerMappings name="Classes" semanticCandidatesExpression="feature:eClassifiers" domainClass="ecore::EClass"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + </style> + </containerMappings> + <containerMappings name="Operations" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations" domainClass="ecore::EOperation"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + </style> + </containerMappings> + <containerMappings name="Parameters" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations.eParameters" domainClass="ecore::EParameter"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </containerMappings> + </defaultLayer> + </ownedRepresentations> + <ownedRepresentations xsi:type="description_1:DiagramDescription" name="DiagramEdgeOnEdge_withPackageWithOpAtRoot" titleExpression="aql:'new DiagramEdgeOnEdge_withPackageWithOpAtRoot for '.concat(self.name)" domainClass="ecore::EPackage" enablePopupBars="true"> + <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/> + <layout xsi:type="description_1:CustomLayoutConfiguration" id="org.eclipse.elk.layered" label="ELK Layered" description="Layer-based algorithm provided by the Eclipse Layout Kernel. Arranges as many edges as possible into one direction by placing nodes into subsequent layers. This implementation supports different routing styles (straight, orthogonal, splines); if orthogonal routing is selected, arbitrary port constraints are respected, thus enabling the layout of block diagrams such as actor-oriented models or circuit schematics. Furthermore, full layout of compound graphs with cross-hierarchy edges is supported when the respective option is activated on the top level."> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.direction"> + <targets>PARENT</targets> + <value name="RIGHT"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.hierarchyHandling"> + <targets>PARENT</targets> + <targets>NODE</targets> + <value name="INCLUDE_CHILDREN"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:DoubleLayoutOption" id="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers" value="50.0"> + <targets>PARENT</targets> + </layoutOptions> + </layout> + <defaultLayer name="Default"> + <edgeMappings name="References" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']" targetFinderExpression="feature:eType" sourceFinderExpression="feature:eContainer" domainClass="ecore::EReference" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="OpToRef2" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='References']" targetFinderExpression="aql:self.eContainer().eInverse()->filter(ecore::EReference)" sourceFinderExpression="aql:self" domainClass="ecore::EOperation" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <containerMappings name="Packages" semanticCandidatesExpression="feature:eSubpackages" domainClass="ecore::EPackage" reusedContainerMappings="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Parameters'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/> + </style> + </containerMappings> + <containerMappings name="Classes" semanticCandidatesExpression="feature:eClassifiers" domainClass="ecore::EClass"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + </style> + </containerMappings> + <containerMappings name="Operations" semanticCandidatesExpression="aql:self.eAllContents()" domainClass="ecore::EOperation"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + </style> + </containerMappings> + <containerMappings name="Parameters" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations.eParameters" domainClass="ecore::EParameter"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </containerMappings> + </defaultLayer> + </ownedRepresentations> + <ownedRepresentations xsi:type="description_1:DiagramDescription" name="DiagramEdgeOnEdge_withPackageReverse" titleExpression="aql:'new DiagramEdgeOnEdge_withPackageReverse for '.concat(self.name)" domainClass="ecore::EPackage" enablePopupBars="true"> + <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/> + <layout xsi:type="description_1:CustomLayoutConfiguration" id="org.eclipse.elk.layered" label="ELK Layered" description="Layer-based algorithm provided by the Eclipse Layout Kernel. Arranges as many edges as possible into one direction by placing nodes into subsequent layers. This implementation supports different routing styles (straight, orthogonal, splines); if orthogonal routing is selected, arbitrary port constraints are respected, thus enabling the layout of block diagrams such as actor-oriented models or circuit schematics. Furthermore, full layout of compound graphs with cross-hierarchy edges is supported when the respective option is activated on the top level."> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.direction"> + <targets>PARENT</targets> + <value name="RIGHT"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.hierarchyHandling"> + <targets>PARENT</targets> + <targets>NODE</targets> + <value name="INCLUDE_CHILDREN"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:DoubleLayoutOption" id="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers" value="50.0"> + <targets>PARENT</targets> + </layoutOptions> + </layout> + <defaultLayer name="Default"> + <edgeMappings name="References" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Classes']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Classes']" targetFinderExpression="feature:eType" sourceFinderExpression="feature:eContainer" domainClass="ecore::EReference" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="OpToRef2" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='References']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']" targetFinderExpression="aql:self" sourceFinderExpression="aql:self.eContainer().eInverse()->filter(ecore::EReference)" domainClass="ecore::EOperation" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <containerMappings name="Packages" semanticCandidatesExpression="feature:eSubpackages" domainClass="ecore::EPackage" reusedContainerMappings="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Classes'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Parameters'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Packages']"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/> + </style> + </containerMappings> + <containerMappings name="Classes" semanticCandidatesExpression="feature:eClassifiers" domainClass="ecore::EClass"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + </style> + </containerMappings> + <containerMappings name="Operations" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations" domainClass="ecore::EOperation"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + </style> + </containerMappings> + <containerMappings name="Parameters" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations.eParameters" domainClass="ecore::EParameter"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </containerMappings> + </defaultLayer> + </ownedRepresentations> + <ownedRepresentations xsi:type="description_1:DiagramDescription" name="DiagramEdgeOnEdge_withPackageWithOpAtRootReverse" titleExpression="aql:'new DiagramEdgeOnEdge_withPackageWithOpAtRootReverse for '.concat(self.name)" domainClass="ecore::EPackage" enablePopupBars="true"> + <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/> + <layout xsi:type="description_1:CustomLayoutConfiguration" id="org.eclipse.elk.layered" label="ELK Layered" description="Layer-based algorithm provided by the Eclipse Layout Kernel. Arranges as many edges as possible into one direction by placing nodes into subsequent layers. This implementation supports different routing styles (straight, orthogonal, splines); if orthogonal routing is selected, arbitrary port constraints are respected, thus enabling the layout of block diagrams such as actor-oriented models or circuit schematics. Furthermore, full layout of compound graphs with cross-hierarchy edges is supported when the respective option is activated on the top level."> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.direction"> + <targets>PARENT</targets> + <value name="RIGHT"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:EnumLayoutOption" id="org.eclipse.elk.hierarchyHandling"> + <targets>PARENT</targets> + <targets>NODE</targets> + <value name="INCLUDE_CHILDREN"/> + </layoutOptions> + <layoutOptions xsi:type="description_1:DoubleLayoutOption" id="org.eclipse.elk.layered.spacing.nodeNodeBetweenLayers" value="50.0"> + <targets>PARENT</targets> + </layoutOptions> + <layoutOptions xsi:type="description_1:DoubleLayoutOption" id="org.eclipse.elk.layered.spacing.edgeEdgeBetweenLayers" value="20.0"> + <targets>PARENT</targets> + </layoutOptions> + </layout> + <defaultLayer name="Default"> + <edgeMappings name="References" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Classes']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Classes']" targetFinderExpression="feature:eType" sourceFinderExpression="feature:eContainer" domainClass="ecore::EReference" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <edgeMappings name="OpToRef2" sourceMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='References']" targetMapping="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']" targetFinderExpression="aql:self" sourceFinderExpression="aql:self.eContainer().eInverse()->filter(ecore::EReference)" domainClass="ecore::EOperation" useDomainElement="true"> + <style sizeComputationExpression="2"> + <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/> + <centerLabelStyleDescription labelSize="12" showIcon="false"> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + </centerLabelStyleDescription> + </style> + </edgeMappings> + <containerMappings name="Packages" semanticCandidatesExpression="feature:eSubpackages" domainClass="ecore::EPackage" reusedContainerMappings="//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Classes'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Parameters'] //@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Packages']"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='blue']"/> + </style> + </containerMappings> + <containerMappings name="Classes" semanticCandidatesExpression="feature:eClassifiers" domainClass="ecore::EClass"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_blue']"/> + </style> + </containerMappings> + <containerMappings name="Operations" semanticCandidatesExpression="aql:self.eAllContents()" domainClass="ecore::EOperation"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_green']"/> + </style> + </containerMappings> + <containerMappings name="Parameters" semanticCandidatesExpression="aql:self.eClassifiers->filter(ecore::EClass).eOperations.eParameters" domainClass="ecore::EParameter"> + <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1" labelSize="12"> + <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/> + <backgroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_yellow']"/> + </style> + </containerMappings> + </defaultLayer> + </ownedRepresentations> </ownedViewpoints> </description:Group> diff --git a/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/representations.aird b/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/representations.aird index a921219f25..597a6ca061 100644 --- a/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/representations.aird +++ b/plugins/org.eclipse.sirius.tests.junit/data/unit/layout/withELK/representations.aird @@ -84,6 +84,46 @@ <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramWithLabelOnBorderOfContainer']"/> <target xmi:type="ecore:EPackage" href="My.ecore#//resetOriginCases/p11"/> </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_ScRFMIsxEeuorewaJNbjRw" name="diagramEdgeOnEdge_subClasses for simpleEdgeOnEdge" repPath="#_ScP3EIsxEeuorewaJNbjRw" changeId="c3cdb9f5-fbff-4e26-b2b8-04ae9fbc14ff"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//simpleEdgeOnEdge"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_Ueie8IsxEeuorewaJNbjRw" name="diagramEdgeOnEdge_subClassesReverse for simpleEdgeOnEdge" repPath="#_UehQ0IsxEeuorewaJNbjRw" changeId="8ddc3915-ed66-4b79-8de0-489ca4cd4419"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//simpleEdgeOnEdge"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_VqMZwosxEeuorewaJNbjRw" name="diagramEdgeOnEdge_subClasses for complexeEdgeOnEdge" repPath="#_VqMZwIsxEeuorewaJNbjRw" changeId="5a208aec-5869-474b-85d5-be05ab2fa2b1"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//complexeEdgeOnEdge"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_XIMo0osxEeuorewaJNbjRw" name="diagramEdgeOnEdge_subClassesReverse for complexeEdgeOnEdge" repPath="#_XIMo0IsxEeuorewaJNbjRw" changeId="d4b5e619-35f5-438c-89b5-8d28e2aaea82"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//complexeEdgeOnEdge"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_DN2q8IvZEeuHmrlETwexNQ" name="diagramEdgeOnEdge_withPackage for levels1EdgeOnEdge" repPath="#_DN2D4IvZEeuHmrlETwexNQ" changeId="e02b3717-c2b6-4e9d-8022-987eeee34fe2"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_EuglYIvZEeuHmrlETwexNQ" name="diagramEdgeOnEdge_withPackageWithOpAtRoot for levels1EdgeOnEdge" repPath="#_Euf-UIvZEeuHmrlETwexNQ" changeId="95edb0f4-b951-46cd-800a-dc30163d76b9"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_F_WiMYvZEeuHmrlETwexNQ" name="diagramEdgeOnEdge_withPackageWithOpAtRoot for levels2EdgeOnEdge" repPath="#_F_V7IIvZEeuHmrlETwexNQ" changeId="9e1d47b0-9901-400e-ac29-1ea05bcb07a4"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_iDECkIvvEeu-V9896WqlTA" name="diagramEdgeOnEdge_withPackageWithOpAtRootReverse for levels2EdgeOnEdge" repPath="#_iDCNYIvvEeu-V9896WqlTA" changeId="2f27e155-0588-45c1-9e6d-4784c7d0c78a"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_vX9AEIvvEeu-V9896WqlTA" name="diagramEdgeOnEdge_withPackageReverse for levels1EdgeOnEdge" repPath="#_vX7x8IvvEeu-V9896WqlTA" changeId="0c3e2d06-5e39-46db-93b7-2e51a938bbe3"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge"/> + </ownedRepresentationDescriptors> + <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_3YERQIvvEeu-V9896WqlTA" name="diagramEdgeOnEdge_withPackageWithOpAtRootReverse for levels1EdgeOnEdge" repPath="#_3YDqMIvvEeu-V9896WqlTA" changeId="db15bc31-c21f-473c-9e48-1c7f90780c16"> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge"/> + </ownedRepresentationDescriptors> </ownedViews> </viewpoint:DAnalysis> <diagram:DSemanticDiagram uid="_vIWEMJjaEemHnMaPJFLfQA"> @@ -4533,4 +4573,2963 @@ <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramWithLabelOnBorderOfContainer']/@defaultLayer"/> <target xmi:type="ecore:EPackage" href="My.ecore#//resetOriginCases/p11"/> </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_ScP3EIsxEeuorewaJNbjRw"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_ScRsQIsxEeuorewaJNbjRw" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_ScRsQYsxEeuorewaJNbjRw" type="Sirius" element="_ScP3EIsxEeuorewaJNbjRw" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_ScV9sIsxEeuorewaJNbjRw" type="2002" element="_ScS6YIsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_ScV9s4sxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_ScV9tIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_ScV9tYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ScV9tosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ScV9sYsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ScV9sosxEeuorewaJNbjRw" x="20" y="104" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ScV9t4sxEeuorewaJNbjRw" type="2002" element="_ScThcIsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_ScWkwIsxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_ScWkwYsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_ScWkwosxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ScWkw4sxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ScV9uIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ScV9uYsxEeuorewaJNbjRw" x="265" y="103" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ScWkxIsxEeuorewaJNbjRw" type="2002" element="_ScThc4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_ScWkx4sxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_ScWkyIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_ScWkyYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_ScWkyosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_ScWkxYsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ScWkxosxEeuorewaJNbjRw" x="210" y="290" width="146" height="66"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_ScRsQosxEeuorewaJNbjRw"/> + <edges xmi:type="notation:Edge" xmi:id="_ScXL0IsxEeuorewaJNbjRw" type="4001" element="_ScUIgIsxEeuorewaJNbjRw" source="_ScV9sIsxEeuorewaJNbjRw" target="_ScV9t4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_ScXL1IsxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ScXL1YsxEeuorewaJNbjRw" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ScXL1osxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ScXL14sxEeuorewaJNbjRw" x="-12" y="3"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ScXL2IsxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ScXL2YsxEeuorewaJNbjRw" x="9" y="4"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_ScXL0YsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_ScXL0osxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_SgyY0IsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ScXL04sxEeuorewaJNbjRw" points="[0, 0, -101, 1]$[21, -61, -80, -60]$[76, -61, -25, -60]$[101, -1, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ScXL2osxEeuorewaJNbjRw" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ScXL24sxEeuorewaJNbjRw" id="(0.0,0.4999999999999998)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_ScXL3IsxEeuorewaJNbjRw" type="4001" element="_ScVWoIsxEeuorewaJNbjRw" source="_ScWkxIsxEeuorewaJNbjRw" target="_ScXL0IsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_ScXy4IsxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OygFAIs4EeuorewaJNbjRw" x="2" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ScXy4osxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OygFAYs4EeuorewaJNbjRw" x="-23" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_ScXy5IsxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OygFAos4EeuorewaJNbjRw" x="-8" y="5"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_ScXL3YsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_ScXL3osxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_SgyY0YsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ScXL34sxEeuorewaJNbjRw" points="[29, -32, 99, 155]$[71, -77, 141, 110]$[-119, -107, -49, 80]$[-69, -187, 1, 0]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ScXy54sxEeuorewaJNbjRw" id="(0.4772727272727273,0.5686274509803921)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_ScVWpYsxEeuorewaJNbjRw" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_ScVWposxEeuorewaJNbjRw"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_ScS6YIsxEeuorewaJNbjRw" name="C1" outgoingEdges="_ScUIgIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//simpleEdgeOnEdge/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//simpleEdgeOnEdge/C1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ScS6YYsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_ScThcIsxEeuorewaJNbjRw" name="C2" incomingEdges="_ScUIgIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//simpleEdgeOnEdge/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//simpleEdgeOnEdge/C2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ScThcYsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_ScThc4sxEeuorewaJNbjRw" name="op1" outgoingEdges="_ScVWoIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//simpleEdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//simpleEdgeOnEdge/C1/op1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ScThdIsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ScUIgIsxEeuorewaJNbjRw" incomingEdges="_ScVWoIsxEeuorewaJNbjRw" sourceNode="_ScS6YIsxEeuorewaJNbjRw" targetNode="_ScThcIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EReference" href="My.ecore#//simpleEdgeOnEdge/C1/toC7"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//simpleEdgeOnEdge/C1/toC7"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ScUIgYsxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ScUIgosxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_ScVWoIsxEeuorewaJNbjRw" sourceNode="_ScThc4sxEeuorewaJNbjRw" targetNode="_ScUIgIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//simpleEdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//simpleEdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ScVWoYsxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='OpToRef']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ScVWoosxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='OpToRef']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_ScQeIIsxEeuorewaJNbjRw"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//simpleEdgeOnEdge"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_UehQ0IsxEeuorewaJNbjRw"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_Ueie8osxEeuorewaJNbjRw" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_Ueie84sxEeuorewaJNbjRw" type="Sirius" element="_UehQ0IsxEeuorewaJNbjRw" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_UeliQosxEeuorewaJNbjRw" type="2002" element="_UejGAIsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_UemwYIsxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_UemwYYsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_UemwYosxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_UemwY4sxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_UeliQ4sxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UeliRIsxEeuorewaJNbjRw" x="40" y="104" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_UemwZIsxEeuorewaJNbjRw" type="2002" element="_UejGA4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_UemwZ4sxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_UemwaIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_UemwaYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_UemwaosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_UemwZYsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UemwZosxEeuorewaJNbjRw" x="265" y="104" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Uemwa4sxEeuorewaJNbjRw" type="2002" element="_UejtEIsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_UemwbosxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_Uemwb4sxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_UemwcIsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_UemwcYsxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_UemwbIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UemwbYsxEeuorewaJNbjRw" x="430" y="15" width="146" height="66"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_Ueie9IsxEeuorewaJNbjRw"/> + <edges xmi:type="notation:Edge" xmi:id="_UenXcIsxEeuorewaJNbjRw" type="4001" element="_UekUIIsxEeuorewaJNbjRw" source="_UeliQosxEeuorewaJNbjRw" target="_UemwZIsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_UenXdIsxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SMVuoIs4EeuorewaJNbjRw" x="5" y="-11"/> + </children> + <children xmi:type="notation:Node" xmi:id="_UenXdosxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SMVuoYs4EeuorewaJNbjRw" x="9" y="5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_UenXeIsxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SMVuoos4EeuorewaJNbjRw" x="-10" y="-3"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_UenXcYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_UenXcosxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_UiVZ0IsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UenXc4sxEeuorewaJNbjRw" points="[17, 32, -136, 32]$[83, 149, -70, 149]$[428, 134, 275, 134]$[388, 9, 235, 9]$[297, 9, 144, 9]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UenXe4sxEeuorewaJNbjRw" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_UenXfIsxEeuorewaJNbjRw" type="4001" element="_Uek7MIsxEeuorewaJNbjRw" source="_UenXcIsxEeuorewaJNbjRw" target="_Uemwa4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_UenXgIsxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UF9isIs4EeuorewaJNbjRw" x="-7" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_UenXgosxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UF9isYs4EeuorewaJNbjRw" x="8" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_UenXhIsxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UF9isos4EeuorewaJNbjRw" x="7" y="8"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_UenXfYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_UenXfosxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_UiVZ0YsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_UenXf4sxEeuorewaJNbjRw" points="[5, -11, -37, 98]$[29, -77, -13, 32]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Uen-gIsxEeuorewaJNbjRw" id="(0.8054298642533937,0.08045977011494253)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_UeliQIsxEeuorewaJNbjRw" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_UeliQYsxEeuorewaJNbjRw"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_UejGAIsxEeuorewaJNbjRw" name="C1" outgoingEdges="_UekUIIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//simpleEdgeOnEdge/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//simpleEdgeOnEdge/C1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_UejGAYsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_UejGA4sxEeuorewaJNbjRw" name="C2" incomingEdges="_UekUIIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//simpleEdgeOnEdge/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//simpleEdgeOnEdge/C2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_UejGBIsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_UejtEIsxEeuorewaJNbjRw" name="op1" incomingEdges="_Uek7MIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//simpleEdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//simpleEdgeOnEdge/C1/op1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_UejtEYsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_UekUIIsxEeuorewaJNbjRw" outgoingEdges="_Uek7MIsxEeuorewaJNbjRw" sourceNode="_UejGAIsxEeuorewaJNbjRw" targetNode="_UejGA4sxEeuorewaJNbjRw"> + <target xmi:type="ecore:EReference" href="My.ecore#//simpleEdgeOnEdge/C1/toC7"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//simpleEdgeOnEdge/C1/toC7"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_UekUIYsxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_UekUIosxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Uek7MIsxEeuorewaJNbjRw" sourceNode="_UekUIIsxEeuorewaJNbjRw" targetNode="_UejtEIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//simpleEdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//simpleEdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Uek7MYsxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='OpToRef']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Uek7MosxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='OpToRef']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_UehQ0YsxEeuorewaJNbjRw"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//simpleEdgeOnEdge"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_VqMZwIsxEeuorewaJNbjRw"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_VqMZxIsxEeuorewaJNbjRw" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_VqMZxYsxEeuorewaJNbjRw" type="Sirius" element="_VqMZwIsxEeuorewaJNbjRw" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_VqPdEIsxEeuorewaJNbjRw" type="2002" element="_VqNA0IsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqPdE4sxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_VqPdFIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_VqPdFYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_VqPdFosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_VqPdEYsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqPdEosxEeuorewaJNbjRw" x="20" y="188" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqPdF4sxEeuorewaJNbjRw" type="2002" element="_VqNA04sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqPdGosxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_VqPdG4sxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_VqPdHIsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_VqPdHYsxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_VqPdGIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqPdGYsxEeuorewaJNbjRw" x="240" y="370" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqPdHosxEeuorewaJNbjRw" type="2002" element="_VqNA1osxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqPdIYsxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_VqQEIIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_VqQEIYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_VqQEIosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_VqPdH4sxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqPdIIsxEeuorewaJNbjRw" x="459" y="187" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqQEI4sxEeuorewaJNbjRw" type="2002" element="_VqNA2YsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqQEJosxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_VqQEJ4sxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_VqQEKIsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_VqQEKYsxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_VqQEJIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqQEJYsxEeuorewaJNbjRw" x="655" y="380" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqQEKosxEeuorewaJNbjRw" type="2002" element="_VqNn4YsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqQELYsxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_VqQELosxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_VqQEL4sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_VqQEMIsxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_VqQEK4sxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqQELIsxEeuorewaJNbjRw" x="30" y="390" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqQEMYsxEeuorewaJNbjRw" type="2002" element="_VqNn5IsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqQENIsxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_VqQENYsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_VqQENosxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_VqQEN4sxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_VqQEMosxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqQEM4sxEeuorewaJNbjRw" x="280" y="115" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqQrMIsxEeuorewaJNbjRw" type="2002" element="_VqNn54sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqQrM4sxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_VqQrNIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_VqQrNYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_VqQrNosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_VqQrMYsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqQrMosxEeuorewaJNbjRw" x="459" y="307" width="146" height="66"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_VqMZxosxEeuorewaJNbjRw"/> + <edges xmi:type="notation:Edge" xmi:id="_VqQrN4sxEeuorewaJNbjRw" type="4001" element="_VqOO8IsxEeuorewaJNbjRw" source="_VqPdEIsxEeuorewaJNbjRw" target="_VqPdF4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqQrO4sxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqQrPIsxEeuorewaJNbjRw" x="-6" y="-8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqRSQIsxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqRSQYsxEeuorewaJNbjRw" x="6" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqRSQosxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqRSQ4sxEeuorewaJNbjRw" x="10" y="-3"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_VqQrOIsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_VqQrOYsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_VuAiwIsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VqQrOosxEeuorewaJNbjRw" points="[0, 0, -76, -182]$[106, 70, 30, -112]$[84, 150, 8, -32]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqRSRIsxEeuorewaJNbjRw" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqRSRYsxEeuorewaJNbjRw" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_VqRSRosxEeuorewaJNbjRw" type="4001" element="_VqOO9YsxEeuorewaJNbjRw" source="_VqPdF4sxEeuorewaJNbjRw" target="_VqPdHosxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqRSSosxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqRSS4sxEeuorewaJNbjRw" x="10" y="-4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqRSTIsxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqRSTYsxEeuorewaJNbjRw" x="-11" y="3"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqRSTosxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqRST4sxEeuorewaJNbjRw" x="-10" y="4"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_VqRSR4sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_VqRSSIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_VuBJ0osxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VqRSSYsxEeuorewaJNbjRw" points="[0, 0, -75, 183]$[75, -183, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqR5UIsxEeuorewaJNbjRw" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqR5UYsxEeuorewaJNbjRw" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_VqR5UosxEeuorewaJNbjRw" type="4001" element="_VqOO-osxEeuorewaJNbjRw" source="_VqPdHosxEeuorewaJNbjRw" target="_VqQEI4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqR5VosxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqR5V4sxEeuorewaJNbjRw" x="-11" y="-2"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqR5WIsxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqR5WYsxEeuorewaJNbjRw" x="9" y="4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqR5WosxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VqR5W4sxEeuorewaJNbjRw" x="8" y="3"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_VqR5U4sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_VqR5VIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_VuBJ04sxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VqR5VYsxEeuorewaJNbjRw" points="[0, 0, -52, -193]$[52, 193, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqR5XIsxEeuorewaJNbjRw" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqR5XYsxEeuorewaJNbjRw" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_VqR5XosxEeuorewaJNbjRw" type="4001" element="_VqO2AIsxEeuorewaJNbjRw" source="_VqQEKosxEeuorewaJNbjRw" target="_VqQrN4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqR5YosxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Yc5twIs4EeuorewaJNbjRw" x="-8" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqR5ZIsxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Yc5twYs4EeuorewaJNbjRw" x="8" y="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqR5ZosxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Yc5twos4EeuorewaJNbjRw" x="9" y="8"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_VqR5X4sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_VqR5YIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_VuBJ0IsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VqR5YYsxEeuorewaJNbjRw" points="[40, -32, -69, 55]$[109, -88, 0, -1]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqSgYYsxEeuorewaJNbjRw" id="(0.616822429906542,0.6291079812206573)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_VqSgYosxEeuorewaJNbjRw" type="4001" element="_VqO2BYsxEeuorewaJNbjRw" source="_VqQEMYsxEeuorewaJNbjRw" target="_VqQrN4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqTHcIsxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y35nsIs4EeuorewaJNbjRw" x="3" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqTHcosxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y36OwIs4EeuorewaJNbjRw" x="-3" y="11"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqTHdIsxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Y36OwYs4EeuorewaJNbjRw" x="-4" y="11"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_VqSgY4sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_VqSgZIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_VuBJ0YsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VqSgZYsxEeuorewaJNbjRw" points="[-47, 32, 178, -121]$[-226, 154, -1, 1]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqTugIsxEeuorewaJNbjRw" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqTugYsxEeuorewaJNbjRw" id="(0.45794392523364486,0.4413145539906103)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_VqTugosxEeuorewaJNbjRw" type="4001" element="_VqO2CosxEeuorewaJNbjRw" source="_VqQrMIsxEeuorewaJNbjRw" target="_VqR5UosxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_VqTuhosxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WitR8Is4EeuorewaJNbjRw" x="-4" y="-7"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqTuiIsxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WitR8Ys4EeuorewaJNbjRw" x="5" y="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_VqTuiosxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WitR8os4EeuorewaJNbjRw" x="5" y="6"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_VqTug4sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_VqTuhIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_VuBJ1IsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_VqTuhYsxEeuorewaJNbjRw" points="[56, -32, -34, 20]$[90, -52, 0, 0]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_VqUVkYsxEeuorewaJNbjRw" id="(0.35714285714285715,0.35267857142857145)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_VqO2D4sxEeuorewaJNbjRw" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_VqO2EIsxEeuorewaJNbjRw"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_VqNA0IsxEeuorewaJNbjRw" name="C1" outgoingEdges="_VqOO8IsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VqNA0YsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_VqNA04sxEeuorewaJNbjRw" name="C2" outgoingEdges="_VqOO9YsxEeuorewaJNbjRw" incomingEdges="_VqOO8IsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C2"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VqNA1IsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_VqNA1osxEeuorewaJNbjRw" name="C3" outgoingEdges="_VqOO-osxEeuorewaJNbjRw" incomingEdges="_VqOO9YsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C3"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C3"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VqNA14sxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_VqNA2YsxEeuorewaJNbjRw" name="C4" incomingEdges="_VqOO-osxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C4"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C4"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VqNA2osxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_VqNn4YsxEeuorewaJNbjRw" name="op1" outgoingEdges="_VqO2AIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VqNn4osxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_VqNn5IsxEeuorewaJNbjRw" name="op3" outgoingEdges="_VqO2BYsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op3"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VqNn5YsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_VqNn54sxEeuorewaJNbjRw" name="op2" outgoingEdges="_VqO2CosxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C3/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C3/op2"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_VqNn6IsxEeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_VqOO8IsxEeuorewaJNbjRw" incomingEdges="_VqO2AIsxEeuorewaJNbjRw _VqO2BYsxEeuorewaJNbjRw" sourceNode="_VqNA0IsxEeuorewaJNbjRw" targetNode="_VqNA04sxEeuorewaJNbjRw"> + <target xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C1/toC7"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C1/toC7"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_VqOO8YsxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_VqOO8osxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_VqOO9YsxEeuorewaJNbjRw" sourceNode="_VqNA04sxEeuorewaJNbjRw" targetNode="_VqNA1osxEeuorewaJNbjRw"> + <target xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C2/toC8"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C2/toC8"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_VqOO9osxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_VqOO94sxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_VqOO-osxEeuorewaJNbjRw" incomingEdges="_VqO2CosxEeuorewaJNbjRw" sourceNode="_VqNA1osxEeuorewaJNbjRw" targetNode="_VqNA2YsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C3/toC9"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C3/toC9"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_VqOO-4sxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_VqOO_IsxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_VqO2AIsxEeuorewaJNbjRw" sourceNode="_VqNn4YsxEeuorewaJNbjRw" targetNode="_VqOO8IsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_VqO2AYsxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='OpToRef']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_VqO2AosxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='OpToRef']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_VqO2BYsxEeuorewaJNbjRw" sourceNode="_VqNn5IsxEeuorewaJNbjRw" targetNode="_VqOO8IsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_VqO2BosxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='OpToRef']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_VqO2B4sxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='OpToRef']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_VqO2CosxEeuorewaJNbjRw" sourceNode="_VqNn54sxEeuorewaJNbjRw" targetNode="_VqOO-osxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C3/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C3/op2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_VqO2C4sxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='OpToRef']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_VqO2DIsxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='OpToRef']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_VqMZwYsxEeuorewaJNbjRw"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//complexeEdgeOnEdge"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_XIMo0IsxEeuorewaJNbjRw"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_XINP4IsxEeuorewaJNbjRw" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_XINP4YsxEeuorewaJNbjRw" type="Sirius" element="_XIMo0IsxEeuorewaJNbjRw" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_XISIYIsxEeuorewaJNbjRw" type="2002" element="_XIN28IsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XISvcIsxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_XITWgIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_XITWgYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XITWgosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_XISIYYsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dBzcUIs4EeuorewaJNbjRw" x="20" y="188" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XITWg4sxEeuorewaJNbjRw" type="2002" element="_XIOeAIsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XITWhosxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_XIT9kIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_XIT9kYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XIT9kosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_XITWhIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB0DY4s4EeuorewaJNbjRw" x="240" y="370" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIT9k4sxEeuorewaJNbjRw" type="2002" element="_XIOeA4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIT9losxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_XIT9l4sxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_XIT9mIsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XIT9mYsxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_XIT9lIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB0DaIs4EeuorewaJNbjRw" x="459" y="187" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIT9mosxEeuorewaJNbjRw" type="2002" element="_XIOeBosxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIUkoIsxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_XIUkoYsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_XIUkoosxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XIUko4sxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_XIT9m4sxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB0qc4s4EeuorewaJNbjRw" x="655" y="380" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIVLsIsxEeuorewaJNbjRw" type="2002" element="_XIOeCYsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIVLs4sxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_XIVLtIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_XIVLtYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XIVLtosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_XIVLsYsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB0qdYs4EeuorewaJNbjRw" x="30" y="390" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIVLt4sxEeuorewaJNbjRw" type="2002" element="_XIOeDIsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIVLuosxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_XIVLu4sxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_XIVLvIsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XIVLvYsxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_XIVLuIsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB0qd4s4EeuorewaJNbjRw" x="280" y="115" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIVLvosxEeuorewaJNbjRw" type="2002" element="_XIPFEYsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIVLwYsxEeuorewaJNbjRw" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_XIVywIsxEeuorewaJNbjRw" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_XIVywYsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_XIVywosxEeuorewaJNbjRw"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_XIVLv4sxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB1RgIs4EeuorewaJNbjRw" x="459" y="307" width="146" height="66"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_XINP4osxEeuorewaJNbjRw"/> + <edges xmi:type="notation:Edge" xmi:id="_XIVyw4sxEeuorewaJNbjRw" type="4001" element="_XIPFFIsxEeuorewaJNbjRw" source="_XISIYIsxEeuorewaJNbjRw" target="_XITWg4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIVyx4sxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB0DYos4EeuorewaJNbjRw" x="-6" y="-8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIVyyYsxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIVyyosxEeuorewaJNbjRw" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIVyy4sxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIVyzIsxEeuorewaJNbjRw" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_XIVyxIsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_XIVyxYsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_XMiWQIsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XIVyxosxEeuorewaJNbjRw" points="[0, 0, -76, -182]$[106, 70, 30, -112]$[84, 150, 8, -32]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIWZ0IsxEeuorewaJNbjRw" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIWZ0YsxEeuorewaJNbjRw" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_XIWZ0osxEeuorewaJNbjRw" type="4001" element="_XIPsIosxEeuorewaJNbjRw" source="_XITWg4sxEeuorewaJNbjRw" target="_XIT9k4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIWZ1osxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB0DZ4s4EeuorewaJNbjRw" x="10" y="-4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIWZ2IsxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIWZ2YsxEeuorewaJNbjRw" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIWZ2osxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIWZ24sxEeuorewaJNbjRw" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_XIWZ04sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_XIWZ1IsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_XMiWQYsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XIWZ1YsxEeuorewaJNbjRw" points="[0, 0, -75, 183]$[75, -183, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIWZ3IsxEeuorewaJNbjRw" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIWZ3YsxEeuorewaJNbjRw" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_XIWZ3osxEeuorewaJNbjRw" type="4001" element="_XIPsJ4sxEeuorewaJNbjRw" source="_XIT9k4sxEeuorewaJNbjRw" target="_XIT9mosxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIWZ4osxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dB0qcos4EeuorewaJNbjRw" x="-11" y="-2"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIWZ5IsxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIWZ5YsxEeuorewaJNbjRw" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIWZ5osxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIWZ54sxEeuorewaJNbjRw" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_XIWZ34sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_XIWZ4IsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_XMiWQosxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XIWZ4YsxEeuorewaJNbjRw" points="[0, 0, -52, -193]$[52, 193, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIWZ6IsxEeuorewaJNbjRw" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIWZ6YsxEeuorewaJNbjRw" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_XIWZ6osxEeuorewaJNbjRw" type="4001" element="_XIQTMIsxEeuorewaJNbjRw" source="_XIVyw4sxEeuorewaJNbjRw" target="_XIVLsIsxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIXA4IsxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIXA4YsxEeuorewaJNbjRw" x="13" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIXA4osxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIXA44sxEeuorewaJNbjRw" x="3" y="9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIXA5IsxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIXA5YsxEeuorewaJNbjRw" x="-2" y="9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_XIWZ64sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_XIWZ7IsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_XMiWQ4sxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XIWZ7YsxEeuorewaJNbjRw" points="[-20, 21, 95, -181]$[-94, 101, 21, -101]$[-109, 170, 6, -32]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIXA5osxEeuorewaJNbjRw" id="(0.5,0.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_XIXA6IsxEeuorewaJNbjRw" type="4001" element="_XIQ6QosxEeuorewaJNbjRw" source="_XIVyw4sxEeuorewaJNbjRw" target="_XIVLt4sxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIXA7IsxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIXA7YsxEeuorewaJNbjRw" x="9" y="-4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIXA7osxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIXA74sxEeuorewaJNbjRw" x="-9" y="4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIXA8IsxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XIXA8YsxEeuorewaJNbjRw" x="-9" y="4"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_XIXA6YsxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_XIXA6osxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_XMiWRIsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XIXA64sxEeuorewaJNbjRw" points="[2, -5, -48, 117]$[50, -122, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIXn8IsxEeuorewaJNbjRw" id="(0.6204379562043796,0.3259668508287293)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIXn8YsxEeuorewaJNbjRw" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_XIXn8osxEeuorewaJNbjRw" type="4001" element="_XIQ6R4sxEeuorewaJNbjRw" source="_XIWZ3osxEeuorewaJNbjRw" target="_XIVLvosxEeuorewaJNbjRw"> + <children xmi:type="notation:Node" xmi:id="_XIXn9osxEeuorewaJNbjRw" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fHiZwIs4EeuorewaJNbjRw" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIXn-IsxEeuorewaJNbjRw" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fHiZwYs4EeuorewaJNbjRw" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_XIXn-osxEeuorewaJNbjRw" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fHiZwos4EeuorewaJNbjRw" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_XIXn84sxEeuorewaJNbjRw"/> + <styles xmi:type="notation:FontStyle" xmi:id="_XIXn9IsxEeuorewaJNbjRw" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_XMiWRYsxEeuorewaJNbjRw" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_XIXn9YsxEeuorewaJNbjRw" points="[-18, 6, 144, -56]$[-162, 62, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIXn_IsxEeuorewaJNbjRw" id="(0.35714285714285715,0.29910714285714285)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_XIXn_YsxEeuorewaJNbjRw" id="(0.0,0.5000000000000002)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_XIRhUIsxEeuorewaJNbjRw" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_XIRhUYsxEeuorewaJNbjRw"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_XIN28IsxEeuorewaJNbjRw" name="C1" outgoingEdges="_XIPFFIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_dBzcUYs4EeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_XIOeAIsxEeuorewaJNbjRw" name="C2" outgoingEdges="_XIPsIosxEeuorewaJNbjRw" incomingEdges="_XIPFFIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_dB0DZIs4EeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_XIOeA4sxEeuorewaJNbjRw" name="C3" outgoingEdges="_XIPsJ4sxEeuorewaJNbjRw" incomingEdges="_XIPsIosxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C3"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C3"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_dB0DaYs4EeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_XIOeBosxEeuorewaJNbjRw" name="C4" incomingEdges="_XIPsJ4sxEeuorewaJNbjRw"> + <target xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C4"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//complexeEdgeOnEdge/C4"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_dB0qdIs4EeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_XIOeCYsxEeuorewaJNbjRw" name="op1" incomingEdges="_XIQTMIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_dB0qdos4EeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_XIOeDIsxEeuorewaJNbjRw" name="op3" incomingEdges="_XIQ6QosxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op3"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_dB0qeIs4EeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_XIPFEYsxEeuorewaJNbjRw" name="op2" incomingEdges="_XIQ6R4sxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C3/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C3/op2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_dB1RgYs4EeuorewaJNbjRw" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_XIPFFIsxEeuorewaJNbjRw" outgoingEdges="_XIQTMIsxEeuorewaJNbjRw _XIQ6QosxEeuorewaJNbjRw" sourceNode="_XIN28IsxEeuorewaJNbjRw" targetNode="_XIOeAIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C1/toC7"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C1/toC7"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_dB0DYIs4EeuorewaJNbjRw" size="2"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_dB0DYYs4EeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_XIPsIosxEeuorewaJNbjRw" sourceNode="_XIOeAIsxEeuorewaJNbjRw" targetNode="_XIOeA4sxEeuorewaJNbjRw"> + <target xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C2/toC8"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C2/toC8"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_dB0DZYs4EeuorewaJNbjRw" size="2"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_dB0DZos4EeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_XIPsJ4sxEeuorewaJNbjRw" outgoingEdges="_XIQ6R4sxEeuorewaJNbjRw" sourceNode="_XIOeA4sxEeuorewaJNbjRw" targetNode="_XIOeBosxEeuorewaJNbjRw"> + <target xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C3/toC9"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//complexeEdgeOnEdge/C3/toC9"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_dB0qcIs4EeuorewaJNbjRw" size="2"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClasses']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_dB0qcYs4EeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_XIQTMIsxEeuorewaJNbjRw" sourceNode="_XIPFFIsxEeuorewaJNbjRw" targetNode="_XIOeCYsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_XIQTMYsxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='OpToRef']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_XIQTMosxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='OpToRef']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_XIQ6QosxEeuorewaJNbjRw" sourceNode="_XIPFFIsxEeuorewaJNbjRw" targetNode="_XIOeDIsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C1/op3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_XIQ6Q4sxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='OpToRef']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_XIQ6RIsxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='OpToRef']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_XIQ6R4sxEeuorewaJNbjRw" sourceNode="_XIPsJ4sxEeuorewaJNbjRw" targetNode="_XIPFEYsxEeuorewaJNbjRw"> + <target xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C3/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//complexeEdgeOnEdge/C3/op2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_XIQ6SIsxEeuorewaJNbjRw" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='OpToRef']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_XIQ6SYsxEeuorewaJNbjRw" labelSize="12"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer/@edgeMappings[name='OpToRef']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_XIMo0YsxEeuorewaJNbjRw"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_subClassesReverse']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//complexeEdgeOnEdge"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_DN2D4IvZEeuHmrlETwexNQ"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_DN3SAIvZEeuHmrlETwexNQ" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_DN3SAYvZEeuHmrlETwexNQ" type="Sirius" element="_DN2D4IvZEeuHmrlETwexNQ" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_DN_04IvZEeuHmrlETwexNQ" type="2002" element="_DN35EIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOAb8IvZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_DOAb8YvZEeuHmrlETwexNQ" type="7001"> + <children xmi:type="notation:Node" xmi:id="_DOBqE4vZEeuHmrlETwexNQ" type="3008" element="_DN4gIYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOBqFovZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_DOBqF4vZEeuHmrlETwexNQ" type="7002"> + <children xmi:type="notation:Node" xmi:id="_DOBqGovZEeuHmrlETwexNQ" type="3008" element="_DN5HMIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOCRIIvZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_DOCRIYvZEeuHmrlETwexNQ" type="7002"> + <children xmi:type="notation:Node" xmi:id="_DOCRJIvZEeuHmrlETwexNQ" type="3008" element="_DN5HM4vZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOCRJ4vZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_DOCRKIvZEeuHmrlETwexNQ" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOCRKYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOCRKovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DOCRJYvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOCRJovZEeuHmrlETwexNQ" x="591" y="88" width="142" height="62"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOCRK4vZEeuHmrlETwexNQ" type="3008" element="_DN5HNovZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOCRLovZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_DOCRL4vZEeuHmrlETwexNQ" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOCRMIvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOCRMYvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DOCRLIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOCRLYvZEeuHmrlETwexNQ" x="41" y="288" width="142" height="62"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOCRMovZEeuHmrlETwexNQ" type="3008" element="_DN5HOYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOC4MIvZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_DOC4MYvZEeuHmrlETwexNQ" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOC4MovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOC4M4vZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DOCRM4vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOCRNIvZEeuHmrlETwexNQ" x="191" y="288" width="142" height="62"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOC4NIvZEeuHmrlETwexNQ" type="3008" element="_DN5uQYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOC4N4vZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_DOC4OIvZEeuHmrlETwexNQ" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOC4OYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOC4OovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DOC4NYvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOC4NovZEeuHmrlETwexNQ" x="341" y="288" width="142" height="62"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOC4O4vZEeuHmrlETwexNQ" type="3008" element="_DN5uRIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOC4PovZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_DOC4P4vZEeuHmrlETwexNQ" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOC4QIvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOC4QYvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DOC4PIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOC4PYvZEeuHmrlETwexNQ" x="491" y="288" width="142" height="62"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOCRIovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOCRI4vZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DOBqG4vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOBqHIvZEeuHmrlETwexNQ" x="12" y="32" width="809" height="432"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOBqGIvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOBqGYvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DOBqFIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOBqFYvZEeuHmrlETwexNQ" x="12" y="32" width="991" height="482"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOAb8ovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOAb84vZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DN_04YvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DN_04ovZEeuHmrlETwexNQ" x="270" y="30" width="1088" height="532"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOBDAIvZEeuHmrlETwexNQ" type="2002" element="_DN5uR4vZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOBDA4vZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_DOBDBIvZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOBDBYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOBDBovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DOBDAYvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOBDAovZEeuHmrlETwexNQ" x="50" y="200" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOBDB4vZEeuHmrlETwexNQ" type="2002" element="_DN5uSovZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOBDCovZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_DOBqEIvZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_DOBqEYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_DOBqEovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_DOBDCIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOBDCYvZEeuHmrlETwexNQ" x="100" y="350" width="146" height="66"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_DN3SAovZEeuHmrlETwexNQ"/> + <edges xmi:type="notation:Edge" xmi:id="_DODfQIvZEeuHmrlETwexNQ" type="4001" element="_DN68YIvZEeuHmrlETwexNQ" source="_DOBDAIvZEeuHmrlETwexNQ" target="_DOCRJIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DODfRIvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NRtVgIvZEeuHmrlETwexNQ" y="-12"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DODfRovZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NRtVgYvZEeuHmrlETwexNQ" x="-1" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DODfSIvZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NRtVgovZEeuHmrlETwexNQ" x="-1" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_DODfQYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_DODfQovZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_DSaa0IvZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DODfQ4vZEeuHmrlETwexNQ" points="[72, -1, -706, 1]$[778, -2, 0, 0]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DOEGUYvZEeuHmrlETwexNQ" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_DOEGUovZEeuHmrlETwexNQ" type="4001" element="_DN9_sIvZEeuHmrlETwexNQ" source="_DOBDB4vZEeuHmrlETwexNQ" target="_DODfQIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOEGVovZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOEGV4vZEeuHmrlETwexNQ" x="9" y="-6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOEGWIvZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOEGWYvZEeuHmrlETwexNQ" x="-8" y="3"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOEGWovZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DOEGW4vZEeuHmrlETwexNQ" x="-8" y="2"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_DOEGU4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_DOEGVIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_DSaa0YvZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DOEGVYvZEeuHmrlETwexNQ" points="[1, -14, 0, 120]$[1, -134, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DOEtYIvZEeuHmrlETwexNQ" id="(0.875,0.21875)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DOEtYYvZEeuHmrlETwexNQ" id="(0.06517690875232775,0.6730769230769231)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_DOEtYovZEeuHmrlETwexNQ" type="4001" element="_DN9_tYvZEeuHmrlETwexNQ" source="_DOCRK4vZEeuHmrlETwexNQ" target="_DODfQIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOEtZovZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UR7P8IvZEeuHmrlETwexNQ" x="5" y="-8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOEtaIvZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UR7P8YvZEeuHmrlETwexNQ" x="-2" y="7"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOEtaovZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UR7P8ovZEeuHmrlETwexNQ" x="-3" y="7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_DOEtY4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_DOEtZIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_DSaa0ovZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DOEtZYvZEeuHmrlETwexNQ" points="[-4, -30, 1, 170]$[-4, -200, 1, 0]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DOEtbYvZEeuHmrlETwexNQ" id="(0.31343283582089554,0.6037735849056604)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_DOFUcIvZEeuHmrlETwexNQ" type="4001" element="_DN9_uovZEeuHmrlETwexNQ" source="_DOCRMovZEeuHmrlETwexNQ" target="_DODfQIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOFUdIvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TcKFkIvZEeuHmrlETwexNQ" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOFUdovZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TcKFkYvZEeuHmrlETwexNQ" x="2" y="9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOFUeIvZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TcKFkovZEeuHmrlETwexNQ" x="4" y="8"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_DOFUcYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_DOFUcovZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_DSaa04vZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DOFUc4vZEeuHmrlETwexNQ" points="[-15, -30, 80, 170]$[-95, -200, 0, 0]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DOFUe4vZEeuHmrlETwexNQ" id="(0.39869281045751637,0.011764705882352941)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_DOFUfIvZEeuHmrlETwexNQ" type="4001" element="_DN-mxIvZEeuHmrlETwexNQ" source="_DOC4NIvZEeuHmrlETwexNQ" target="_DODfQIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOF7gIvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6DigIvZEeuHmrlETwexNQ" x="-6" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOF7govZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6DigYvZEeuHmrlETwexNQ" x="7" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOF7hIvZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T6DigovZEeuHmrlETwexNQ" x="9" y="7"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_DOFUfYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_DOFUfovZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_DSbB4IvZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DOFUf4vZEeuHmrlETwexNQ" points="[-8, -30, 39, 170]$[-49, -200, -2, 0]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DOGikYvZEeuHmrlETwexNQ" id="(0.6784260515603799,0.6037735849056604)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_DOGikovZEeuHmrlETwexNQ" type="4001" element="_DN-myYvZEeuHmrlETwexNQ" source="_DOC4O4vZEeuHmrlETwexNQ" target="_DODfQIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_DOGilovZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvpGsIvZEeuHmrlETwexNQ" x="-5" y="-8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOGimIvZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvpGsYvZEeuHmrlETwexNQ" x="7" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_DOGimovZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UvpGsovZEeuHmrlETwexNQ" x="8" y="8"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_DOGik4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_DOGilIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_DSbB4YvZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DOGilYvZEeuHmrlETwexNQ" points="[-15, -30, 84, 170]$[-99, -200, 0, 0]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DOHJoYvZEeuHmrlETwexNQ" id="(0.8168249660786974,0.6226415094339622)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_DN_N0IvZEeuHmrlETwexNQ" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_DN_N0YvZEeuHmrlETwexNQ"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN35EIvZEeuHmrlETwexNQ" name="a"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN35EYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN4gIYvZEeuHmrlETwexNQ" name="b"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN4gIovZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN5HMIvZEeuHmrlETwexNQ" name="c"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b/c"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b/c"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN5HMYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN5HM4vZEeuHmrlETwexNQ" name="C2" incomingEdges="_DN68YIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN5HNIvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN5HNovZEeuHmrlETwexNQ" name="op2" outgoingEdges="_DN9_tYvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN5HN4vZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN5HOYvZEeuHmrlETwexNQ" name="op3" outgoingEdges="_DN9_uovZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN5HOovZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN5uQYvZEeuHmrlETwexNQ" name="op4" outgoingEdges="_DN-mxIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN5uQovZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN5uRIvZEeuHmrlETwexNQ" name="op5" outgoingEdges="_DN-myYvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN5uRYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN5uR4vZEeuHmrlETwexNQ" name="C1" outgoingEdges="_DN68YIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/C1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN5uSIvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_DN5uSovZEeuHmrlETwexNQ" name="op1" outgoingEdges="_DN9_sIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_DN5uS4vZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_DN68YIvZEeuHmrlETwexNQ" incomingEdges="_DN9_sIvZEeuHmrlETwexNQ _DN9_tYvZEeuHmrlETwexNQ _DN9_uovZEeuHmrlETwexNQ _DN-mxIvZEeuHmrlETwexNQ _DN-myYvZEeuHmrlETwexNQ" sourceNode="_DN5uR4vZEeuHmrlETwexNQ" targetNode="_DN5HM4vZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EReference" href="My.ecore#//levels1EdgeOnEdge/C1/toC2"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//levels1EdgeOnEdge/C1/toC2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_DN68YYvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_DN68YovZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_DN9_sIvZEeuHmrlETwexNQ" sourceNode="_DN5uSovZEeuHmrlETwexNQ" targetNode="_DN68YIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_DN9_sYvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_DN9_sovZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_DN9_tYvZEeuHmrlETwexNQ" sourceNode="_DN5HNovZEeuHmrlETwexNQ" targetNode="_DN68YIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_DN9_tovZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_DN9_t4vZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_DN9_uovZEeuHmrlETwexNQ" sourceNode="_DN5HOYvZEeuHmrlETwexNQ" targetNode="_DN68YIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_DN-mwIvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_DN-mwYvZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_DN-mxIvZEeuHmrlETwexNQ" sourceNode="_DN5uQYvZEeuHmrlETwexNQ" targetNode="_DN68YIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_DN-mxYvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_DN-mxovZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_DN-myYvZEeuHmrlETwexNQ" sourceNode="_DN5uRIvZEeuHmrlETwexNQ" targetNode="_DN68YIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_DN-myovZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_DN-my4vZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_DN2D4YvZEeuHmrlETwexNQ"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackage']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_Euf-UIvZEeuHmrlETwexNQ"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_EuglYovZEeuHmrlETwexNQ" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_EuglY4vZEeuHmrlETwexNQ" type="Sirius" element="_Euf-UIvZEeuHmrlETwexNQ" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_Euld4ovZEeuHmrlETwexNQ" type="2002" element="_EuhMcIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EumE8IvZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_EumE8YvZEeuHmrlETwexNQ" type="7001"> + <children xmi:type="notation:Node" xmi:id="_EunTEIvZEeuHmrlETwexNQ" type="3008" element="_EuhzgIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EunTE4vZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_EunTFIvZEeuHmrlETwexNQ" type="7002"> + <children xmi:type="notation:Node" xmi:id="_EunTF4vZEeuHmrlETwexNQ" type="3008" element="_Euhzg4vZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EunTGovZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_EunTG4vZEeuHmrlETwexNQ" type="7002"> + <children xmi:type="notation:Node" xmi:id="_EunTHovZEeuHmrlETwexNQ" type="3008" element="_EuhzhovZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EunTIYvZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_EunTIovZEeuHmrlETwexNQ" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_EunTI4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EunTJIvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_EunTH4vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EunTIIvZEeuHmrlETwexNQ" x="7" y="32" width="142" height="62"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_EunTHIvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EunTHYvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_EunTGIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EunTGYvZEeuHmrlETwexNQ" x="50" y="39" width="289" height="397"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_EunTFYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EunTFovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_EunTEYvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EunTEovZEeuHmrlETwexNQ" x="20" y="54" width="386" height="480"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_EumE8ovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EumE84vZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_Euld44vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Euld5IvZEeuHmrlETwexNQ" x="790" y="20" width="453" height="608"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EumE9IvZEeuHmrlETwexNQ" type="2002" element="_EuhziYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EumE94vZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_EumE-IvZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_EumE-YvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EumE-ovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_EumE9YvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EumE9ovZEeuHmrlETwexNQ" x="20" y="131" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EumE-4vZEeuHmrlETwexNQ" type="2002" element="_EuiakIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EumE_ovZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_EumE_4vZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_EumFAIvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EumFAYvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_EumE_IvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EumE_YvZEeuHmrlETwexNQ" x="125" y="210" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EumFAovZEeuHmrlETwexNQ" type="2002" element="_Euiak4vZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EumsAIvZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_EumsAYvZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_EumsAovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EumsA4vZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_EumFA4vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EumFBIvZEeuHmrlETwexNQ" x="243" y="320" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EumsBIvZEeuHmrlETwexNQ" type="2002" element="_EuialovZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EumsB4vZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_EumsCIvZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_EumsCYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EumsCovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_EumsBYvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EumsBovZEeuHmrlETwexNQ" x="361" y="410" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EumsC4vZEeuHmrlETwexNQ" type="2002" element="_EuiamYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EumsDovZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_EumsD4vZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_EumsEIvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EumsEYvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_EumsDIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EumsDYvZEeuHmrlETwexNQ" x="479" y="520" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EumsEovZEeuHmrlETwexNQ" type="2002" element="_EuianIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EumsFYvZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_EumsFovZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_EumsF4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_EumsGIvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_EumsE4vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EumsFIvZEeuHmrlETwexNQ" x="595" y="65" width="146" height="66"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_EuglZIvZEeuHmrlETwexNQ"/> + <edges xmi:type="notation:Edge" xmi:id="_EunTJYvZEeuHmrlETwexNQ" type="4001" element="_EujBoIvZEeuHmrlETwexNQ" source="_EumE9IvZEeuHmrlETwexNQ" target="_EunTHovZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EunTKYvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EunTKovZEeuHmrlETwexNQ" x="-8" y="-12"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Eun6IIvZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eun6IYvZEeuHmrlETwexNQ" x="1" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Eun6IovZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eun6I4vZEeuHmrlETwexNQ" y="9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_EunTJovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_EunTJ4vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_Eyr6wIvZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EunTKIvZEeuHmrlETwexNQ" points="[0, 0, -718, -30]$[718, 30, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Eun6JIvZEeuHmrlETwexNQ" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Eun6JYvZEeuHmrlETwexNQ" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_Eun6JovZEeuHmrlETwexNQ" type="4001" element="_Euk20IvZEeuHmrlETwexNQ" source="_EumE-4vZEeuHmrlETwexNQ" target="_EunTJYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_Eun6KovZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eun6K4vZEeuHmrlETwexNQ" x="13" y="-8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Eun6LIvZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eun6LYvZEeuHmrlETwexNQ" x="13" y="-8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_Eun6LovZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eun6L4vZEeuHmrlETwexNQ" x="11" y="8"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_Eun6J4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_Eun6KIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_Eyr6wYvZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Eun6KYvZEeuHmrlETwexNQ" points="[5, -32, -8, 47]$[5, -78, -8, 1]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Eun6MYvZEeuHmrlETwexNQ" id="(0.06535947712418301,0.0)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_Eun6MovZEeuHmrlETwexNQ" type="4001" element="_Euk21YvZEeuHmrlETwexNQ" source="_EumFAovZEeuHmrlETwexNQ" target="_EunTJYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_Eun6NovZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Eun6N4vZEeuHmrlETwexNQ" x="15" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EuohMIvZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EuohMYvZEeuHmrlETwexNQ" y="8"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EuohMovZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EuohM4vZEeuHmrlETwexNQ" x="-5" y="-3"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_Eun6M4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_Eun6NIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_Eyr6wovZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Eun6NYvZEeuHmrlETwexNQ" points="[72, -31, 4, 146]$[145, -62, 77, 115]$[25, -97, -43, 80]$[69, -180, 1, -3]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EuohNYvZEeuHmrlETwexNQ" id="(0.30574098798397864,0.4117647058823529)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_EuohNovZEeuHmrlETwexNQ" type="4001" element="_Euk22ovZEeuHmrlETwexNQ" source="_EumsBIvZEeuHmrlETwexNQ" target="_EunTJYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EuohOovZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EuohO4vZEeuHmrlETwexNQ" x="34" y="5"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EuohPIvZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EuohPYvZEeuHmrlETwexNQ" x="7" y="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EuohPovZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EuohP4vZEeuHmrlETwexNQ" x="-1" y="-4"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_EuohN4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_EuohOIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_Eyr6w4vZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EuohOYvZEeuHmrlETwexNQ" points="[19, -32, -60, 232]$[77, -127, -2, 137]$[77, -265, -2, -1]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EuohQYvZEeuHmrlETwexNQ" id="(0.48464619492656874,0.4852941176470588)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_EupIQIvZEeuHmrlETwexNQ" type="4001" element="_Euk234vZEeuHmrlETwexNQ" source="_EumsC4vZEeuHmrlETwexNQ" target="_EunTJYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EupIRIvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EupIRYvZEeuHmrlETwexNQ" x="22" y="-4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EupIRovZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EupIR4vZEeuHmrlETwexNQ" x="5" y="3"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EupISIvZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EupISYvZEeuHmrlETwexNQ" x="4" y="3"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_EupIQYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_EupIQovZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_Eyr6xIvZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EupIQ4vZEeuHmrlETwexNQ" points="[33, -32, -35, 340]$[115, -111, 47, 261]$[67, -371, -1, 1]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EupIS4vZEeuHmrlETwexNQ" id="(0.6328437917222964,0.5588235294117647)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_EupITIvZEeuHmrlETwexNQ" type="4001" element="_Euk25IvZEeuHmrlETwexNQ" source="_EumsEovZEeuHmrlETwexNQ" target="_EunTJYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_EupIUIvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EupIUYvZEeuHmrlETwexNQ" x="102" y="-20"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EupIUovZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EupIU4vZEeuHmrlETwexNQ" x="111" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_EupIVIvZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EupIVYvZEeuHmrlETwexNQ" x="38" y="4"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_EupITYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_EupITovZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_Eyr6xYvZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_EupIT4vZEeuHmrlETwexNQ" points="[-144, 0, 290, -76]$[-409, 0, 25, -76]$[-433, 71, 1, -5]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EupvUIvZEeuHmrlETwexNQ" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_EupvUYvZEeuHmrlETwexNQ" id="(0.19626168224299065,0.3235294117647059)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_Euld4IvZEeuHmrlETwexNQ" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_Euld4YvZEeuHmrlETwexNQ"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_EuhMcIvZEeuHmrlETwexNQ" name="a"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EuhMcYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_EuhzgIvZEeuHmrlETwexNQ" name="b"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EuhzgYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_Euhzg4vZEeuHmrlETwexNQ" name="c"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b/c"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b/c"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EuhzhIvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_EuhzhovZEeuHmrlETwexNQ" name="C2" incomingEdges="_EujBoIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Euhzh4vZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_EuhziYvZEeuHmrlETwexNQ" name="C1" outgoingEdges="_EujBoIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/C1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EuhziovZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_EuiakIvZEeuHmrlETwexNQ" name="op1" outgoingEdges="_Euk20IvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EuiakYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_Euiak4vZEeuHmrlETwexNQ" name="op2" outgoingEdges="_Euk21YvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EuialIvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_EuialovZEeuHmrlETwexNQ" name="op3" outgoingEdges="_Euk22ovZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_Euial4vZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_EuiamYvZEeuHmrlETwexNQ" name="op4" outgoingEdges="_Euk234vZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EuiamovZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_EuianIvZEeuHmrlETwexNQ" name="op5" outgoingEdges="_Euk25IvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_EuianYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_EujBoIvZEeuHmrlETwexNQ" incomingEdges="_Euk20IvZEeuHmrlETwexNQ _Euk21YvZEeuHmrlETwexNQ _Euk22ovZEeuHmrlETwexNQ _Euk234vZEeuHmrlETwexNQ _Euk25IvZEeuHmrlETwexNQ" sourceNode="_EuhziYvZEeuHmrlETwexNQ" targetNode="_EuhzhovZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EReference" href="My.ecore#//levels1EdgeOnEdge/C1/toC2"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//levels1EdgeOnEdge/C1/toC2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_EujBoYvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_EujBoovZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Euk20IvZEeuHmrlETwexNQ" sourceNode="_EuiakIvZEeuHmrlETwexNQ" targetNode="_EujBoIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Euk20YvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Euk20ovZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Euk21YvZEeuHmrlETwexNQ" sourceNode="_Euiak4vZEeuHmrlETwexNQ" targetNode="_EujBoIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Euk21ovZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Euk214vZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Euk22ovZEeuHmrlETwexNQ" sourceNode="_EuialovZEeuHmrlETwexNQ" targetNode="_EujBoIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Euk224vZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Euk23IvZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Euk234vZEeuHmrlETwexNQ" sourceNode="_EuiamYvZEeuHmrlETwexNQ" targetNode="_EujBoIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Euk24IvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Euk24YvZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_Euk25IvZEeuHmrlETwexNQ" sourceNode="_EuianIvZEeuHmrlETwexNQ" targetNode="_EujBoIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_Euk25YvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_Euk25ovZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_Euf-UYvZEeuHmrlETwexNQ"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_F_V7IIvZEeuHmrlETwexNQ"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_F_WiM4vZEeuHmrlETwexNQ" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_F_WiNIvZEeuHmrlETwexNQ" type="Sirius" element="_F_V7IIvZEeuHmrlETwexNQ" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_F_azoIvZEeuHmrlETwexNQ" type="2002" element="_F_XJQIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_azo4vZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_F_azpIvZEeuHmrlETwexNQ" type="7001"> + <children xmi:type="notation:Node" xmi:id="_F_bawovZEeuHmrlETwexNQ" type="3008" element="_F_XJQ4vZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_baxYvZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_F_cBwIvZEeuHmrlETwexNQ" type="7002"> + <children xmi:type="notation:Node" xmi:id="_F_cBw4vZEeuHmrlETwexNQ" type="3008" element="_F_XwUYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_cBxovZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_F_cBx4vZEeuHmrlETwexNQ" type="7002"> + <children xmi:type="notation:Node" xmi:id="_F_cByovZEeuHmrlETwexNQ" type="3008" element="_F_XwVIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_cBzYvZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_F_cBzovZEeuHmrlETwexNQ" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_cBz4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_cB0IvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_cBy4vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_cBzIvZEeuHmrlETwexNQ" x="201" y="32" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_cB0YvZEeuHmrlETwexNQ" type="3008" element="_F_XwV4vZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_cB1IvZEeuHmrlETwexNQ" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_F_cB1YvZEeuHmrlETwexNQ" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_cB1ovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_cB14vZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_cB0ovZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_cB04vZEeuHmrlETwexNQ" x="7" y="32" width="146" height="66"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_cByIvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_cByYvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_cBxIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_cBxYvZEeuHmrlETwexNQ" x="5" y="74" width="364" height="116"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_cBwYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_cBwovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_baw4vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_baxIvZEeuHmrlETwexNQ" x="5" y="44" width="388" height="276"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_azpYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_azpovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_azoYvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_azoovZEeuHmrlETwexNQ" x="390" y="90" height="388"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_azp4vZEeuHmrlETwexNQ" type="2002" element="_F_XwWovZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_azqovZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_F_azq4vZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_azrIvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_azrYvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_azqIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_azqYvZEeuHmrlETwexNQ" x="60" y="70"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_azrovZEeuHmrlETwexNQ" type="2002" element="_F_XwXYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_azsYvZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_F_azsovZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_azs4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_aztIvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_azr4vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_azsIvZEeuHmrlETwexNQ" x="910" y="90"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_aztYvZEeuHmrlETwexNQ" type="2002" element="_F_YXYovZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_basIvZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_F_basYvZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_basovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_bas4vZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_aztovZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_azt4vZEeuHmrlETwexNQ" x="880" y="475"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_batIvZEeuHmrlETwexNQ" type="2002" element="_F_YXZYvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_bat4vZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_F_bauIvZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_bauYvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_bauovZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_batYvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_batovZEeuHmrlETwexNQ" x="518" y="565"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_bau4vZEeuHmrlETwexNQ" type="2002" element="_F_YXaIvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_bavovZEeuHmrlETwexNQ" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_F_bav4vZEeuHmrlETwexNQ" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_F_bawIvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_F_bawYvZEeuHmrlETwexNQ"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_F_bavIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_bavYvZEeuHmrlETwexNQ" x="135" y="565"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_F_WiNYvZEeuHmrlETwexNQ"/> + <edges xmi:type="notation:Edge" xmi:id="_F_cB2IvZEeuHmrlETwexNQ" type="4001" element="_F_Y-cIvZEeuHmrlETwexNQ" source="_F_cB0YvZEeuHmrlETwexNQ" target="_F_cByovZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_co0IvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_co0YvZEeuHmrlETwexNQ" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_co0ovZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_co04vZEeuHmrlETwexNQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_co1IvZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_co1YvZEeuHmrlETwexNQ" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_F_cB2YvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_F_cB2ovZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_GFpXcIvZEeuHmrlETwexNQ" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F_cB24vZEeuHmrlETwexNQ" points="[0, 0, -50, 0]$[50, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_co1ovZEeuHmrlETwexNQ" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_co14vZEeuHmrlETwexNQ" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_F_co2IvZEeuHmrlETwexNQ" type="4001" element="_F_ZlgIvZEeuHmrlETwexNQ" source="_F_azp4vZEeuHmrlETwexNQ" target="_F_cB2IvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_co3IvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_co3YvZEeuHmrlETwexNQ" x="-1" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_co3ovZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_co34vZEeuHmrlETwexNQ" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_co4IvZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_co4YvZEeuHmrlETwexNQ" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_F_co2YvZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_F_co2ovZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F_co24vZEeuHmrlETwexNQ" points="[74, 30, -383, -156]$[457, 186, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_co4ovZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_dP4IvZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_F_dP4YvZEeuHmrlETwexNQ" type="4001" element="_F_aMkovZEeuHmrlETwexNQ" source="_F_azrovZEeuHmrlETwexNQ" target="_F_cB2IvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_dP5YvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_dP5ovZEeuHmrlETwexNQ" x="-7" y="6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_dP54vZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_dP6IvZEeuHmrlETwexNQ" x="8" y="-6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_dP6YvZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_dP6ovZEeuHmrlETwexNQ" x="7" y="-6"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_F_dP4ovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_F_dP44vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F_dP5IvZEeuHmrlETwexNQ" points="[-74, 31, 319, -135]$[-393, 166, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_dP64vZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_dP7IvZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_F_dP7YvZEeuHmrlETwexNQ" type="4001" element="_F_aMl4vZEeuHmrlETwexNQ" source="_F_aztYvZEeuHmrlETwexNQ" target="_F_cB2IvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_dP8YvZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_dP8ovZEeuHmrlETwexNQ" x="2" y="9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_dP84vZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_dP9IvZEeuHmrlETwexNQ" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_dP9YvZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_dP9ovZEeuHmrlETwexNQ" y="-9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_F_dP7ovZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_F_dP74vZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F_dP8IvZEeuHmrlETwexNQ" points="[-57, -34, 306, 185]$[-363, -219, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_d28IvZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_d28YvZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_F_d28ovZEeuHmrlETwexNQ" type="4001" element="_F_aMnIvZEeuHmrlETwexNQ" source="_F_batIvZEeuHmrlETwexNQ" target="_F_cB2IvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_d29ovZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_d294vZEeuHmrlETwexNQ" x="8" y="4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_d2-IvZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_d2-YvZEeuHmrlETwexNQ" x="-9" y="-4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_d2-ovZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_d2-4vZEeuHmrlETwexNQ" x="-8" y="-4"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_F_d284vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_F_d29IvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F_d29YvZEeuHmrlETwexNQ" points="[-1, -34, 0, 275]$[-1, -309, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_d2_IvZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_d2_YvZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_F_d2_ovZEeuHmrlETwexNQ" type="4001" element="_F_aMoYvZEeuHmrlETwexNQ" source="_F_bau4vZEeuHmrlETwexNQ" target="_F_cB2IvZEeuHmrlETwexNQ"> + <children xmi:type="notation:Node" xmi:id="_F_d3AovZEeuHmrlETwexNQ" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_d3A4vZEeuHmrlETwexNQ" x="8" y="-6"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_d3BIvZEeuHmrlETwexNQ" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_d3BYvZEeuHmrlETwexNQ" x="-10" y="4"/> + </children> + <children xmi:type="notation:Node" xmi:id="_F_d3BovZEeuHmrlETwexNQ" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F_d3B4vZEeuHmrlETwexNQ" x="-8" y="4"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_F_d2_4vZEeuHmrlETwexNQ"/> + <styles xmi:type="notation:FontStyle" xmi:id="_F_d3AIvZEeuHmrlETwexNQ" fontName="Segoe UI" fontHeight="12"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F_d3AYvZEeuHmrlETwexNQ" points="[54, -34, -343, 215]$[397, -249, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_eeAIvZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F_eeAYvZEeuHmrlETwexNQ" id="(0.5,0.5)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_F_aMpovZEeuHmrlETwexNQ" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_F_aMp4vZEeuHmrlETwexNQ"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_XJQIvZEeuHmrlETwexNQ" name="a"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_XJQYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_XJQ4vZEeuHmrlETwexNQ" name="b"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a/b"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a/b"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_XJRIvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_XwUYvZEeuHmrlETwexNQ" name="c"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a/b/c"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a/b/c"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_XwUovZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_XwVIvZEeuHmrlETwexNQ" name="C1" incomingEdges="_F_Y-cIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_XwVYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_XwV4vZEeuHmrlETwexNQ" name="C2" outgoingEdges="_F_Y-cIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_XwWIvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_XwWovZEeuHmrlETwexNQ" name="op2" outgoingEdges="_F_ZlgIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op2"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_XwW4vZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_XwXYvZEeuHmrlETwexNQ" name="op3" outgoingEdges="_F_aMkovZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op3"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_YXYIvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_YXYovZEeuHmrlETwexNQ" name="op4" outgoingEdges="_F_aMl4vZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op4"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_YXY4vZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_YXZYvZEeuHmrlETwexNQ" name="op5" outgoingEdges="_F_aMnIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op5"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_YXZovZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_F_YXaIvZEeuHmrlETwexNQ" name="op1" outgoingEdges="_F_aMoYvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/op1"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_F_YXaYvZEeuHmrlETwexNQ" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_F_Y-cIvZEeuHmrlETwexNQ" incomingEdges="_F_ZlgIvZEeuHmrlETwexNQ _F_aMkovZEeuHmrlETwexNQ _F_aMl4vZEeuHmrlETwexNQ _F_aMnIvZEeuHmrlETwexNQ _F_aMoYvZEeuHmrlETwexNQ" sourceNode="_F_XwV4vZEeuHmrlETwexNQ" targetNode="_F_XwVIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EReference" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/toC1"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/toC1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_F_Y-cYvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_F_Y-covZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_F_ZlgIvZEeuHmrlETwexNQ" sourceNode="_F_XwWovZEeuHmrlETwexNQ" targetNode="_F_Y-cIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_F_ZlgYvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_F_ZlgovZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_F_aMkovZEeuHmrlETwexNQ" sourceNode="_F_XwXYvZEeuHmrlETwexNQ" targetNode="_F_Y-cIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_F_aMk4vZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_F_aMlIvZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_F_aMl4vZEeuHmrlETwexNQ" sourceNode="_F_YXYovZEeuHmrlETwexNQ" targetNode="_F_Y-cIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_F_aMmIvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_F_aMmYvZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_F_aMnIvZEeuHmrlETwexNQ" sourceNode="_F_YXZYvZEeuHmrlETwexNQ" targetNode="_F_Y-cIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_F_aMnYvZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_F_aMnovZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_F_aMoYvZEeuHmrlETwexNQ" sourceNode="_F_YXaIvZEeuHmrlETwexNQ" targetNode="_F_Y-cIvZEeuHmrlETwexNQ"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_F_aMoovZEeuHmrlETwexNQ" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_F_aMo4vZEeuHmrlETwexNQ" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_F_WiMIvZEeuHmrlETwexNQ"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_iDCNYIvvEeu-V9896WqlTA"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_iDKJMIvvEeu-V9896WqlTA" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_iDKJMYvvEeu-V9896WqlTA" type="Sirius" element="_iDCNYIvvEeu-V9896WqlTA" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_iDPowIvvEeu-V9896WqlTA" type="2002" element="_iDLXUIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDPow4vvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_iDPoxIvvEeu-V9896WqlTA" type="7001"> + <children xmi:type="notation:Node" xmi:id="_iDSsEIvvEeu-V9896WqlTA" type="3008" element="_iDLXU4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDTTIIvvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_iDT6MIvvEeu-V9896WqlTA" type="7002"> + <children xmi:type="notation:Node" xmi:id="_iDT6M4vvEeu-V9896WqlTA" type="3008" element="_iDL-YIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDT6NovvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_iDUhQIvvEeu-V9896WqlTA" type="7002"> + <children xmi:type="notation:Node" xmi:id="_iDUhQ4vvEeu-V9896WqlTA" type="3008" element="_iDL-Y4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDUhRovvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_iDUhR4vvEeu-V9896WqlTA" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDUhSIvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDUhSYvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDUhRIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_orcr0ovvEeu-V9896WqlTA" x="201" y="32" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDUhSovvEeu-V9896WqlTA" type="3008" element="_iDL-ZovvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDUhTYvvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_iDUhTovvEeu-V9896WqlTA" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDUhT4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDUhUIvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDUhS4vvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ordS4IvvEeu-V9896WqlTA" x="7" y="32" width="146" height="66"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDUhQYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDUhQovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDT6NIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_orcr0IvvEeu-V9896WqlTA" x="5" y="74" width="364" height="116"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDT6MYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDT6MovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDSsEYvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_orcEwovvEeu-V9896WqlTA" x="5" y="44" width="388" height="276"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDPoxYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDPoxovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDPowYvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_orcEwIvvEeu-V9896WqlTA" x="390" y="90" width="406" height="388"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDPox4vvEeu-V9896WqlTA" type="2002" element="_iDMlcIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDQP0IvvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_iDQP0YvvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDQP0ovvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDQP04vvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDPoyIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ordS5YvvEeu-V9896WqlTA" x="145" y="90" width="150" height="70"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDQP1IvvEeu-V9896WqlTA" type="2002" element="_iDMlc4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDQP14vvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_iDQP2IvvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDQP2YvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDQP2ovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDQP1YvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ordS54vvEeu-V9896WqlTA" x="910" y="90" width="150" height="70"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDQP24vvEeu-V9896WqlTA" type="2002" element="_iDMldovvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDQ24IvvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_iDRd8IvvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDRd8YvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDRd8ovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDQP3IvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ordS6YvvEeu-V9896WqlTA" x="880" y="475" width="150" height="70"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDRd84vvEeu-V9896WqlTA" type="2002" element="_iDNMgIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDRd9ovvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_iDRd94vvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDRd-IvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDRd-YvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDRd9IvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ordS64vvEeu-V9896WqlTA" x="518" y="565" width="150" height="70"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDRd-ovvEeu-V9896WqlTA" type="2002" element="_iDNMg4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDRd_YvvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_iDSFAIvvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_iDSFAYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_iDSFAovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_iDRd-4vvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ord58IvvEeu-V9896WqlTA" x="135" y="565" width="150" height="70"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_iDKJMovvEeu-V9896WqlTA"/> + <edges xmi:type="notation:Edge" xmi:id="_iDVIUIvvEeu-V9896WqlTA" type="4001" element="_iDNzkIvvEeu-V9896WqlTA" source="_iDUhSovvEeu-V9896WqlTA" target="_iDUhQ4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDVIVIvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ordS5IvvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDVIVovvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iDVIV4vvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDVIWIvvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iDVIWYvvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_iDVIUYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_iDVIUovvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_iJh28IvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iDVIU4vvEeu-V9896WqlTA" points="[0, 0, -50, 0]$[50, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDVvYIvvEeu-V9896WqlTA" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDVvYYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_iDVvYovvEeu-V9896WqlTA" type="4001" element="_iDOaoIvvEeu-V9896WqlTA" source="_iDVIUIvvEeu-V9896WqlTA" target="_iDPox4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDVvZovvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ph7n4IvvEeu-V9896WqlTA" x="1" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDWWcIvvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ph7n4YvvEeu-V9896WqlTA" x="2" y="11"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDWWcovvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ph7n4ovvEeu-V9896WqlTA" x="1" y="9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_iDVvY4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_iDVvZIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_iJh28YvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iDVvZYvvEeu-V9896WqlTA" points="[0, 0, 438, 166]$[-438, -166, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDWWdIvvEeu-V9896WqlTA" id="(0.3333333333333333,0.3783783783783784)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDWWdYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_iDWWdovvEeu-V9896WqlTA" type="4001" element="_iDOapYvvEeu-V9896WqlTA" source="_iDVIUIvvEeu-V9896WqlTA" target="_iDQP1IvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDW9gIvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pBqMYIvvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDW9govvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pBqMYYvvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDW9hIvvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pBqMYovvEeu-V9896WqlTA" x="-1" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_iDWWd4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_iDWWeIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_iJh28ovvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iDWWeYvvEeu-V9896WqlTA" points="[1, 0, -309, 166]$[310, -166, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDW9hovvEeu-V9896WqlTA" id="(0.6790123456790124,0.5945945945945946)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDW9h4vvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_iDW9iIvvEeu-V9896WqlTA" type="4001" element="_iDOaqovvEeu-V9896WqlTA" source="_iDVIUIvvEeu-V9896WqlTA" target="_iDQP24vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDXkk4vvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iDXklIvvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDXklYvvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iDXklovvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDXkl4vvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iDXkmIvvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_iDXkkIvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_iDXkkYvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_iJh284vvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iDXkkovvEeu-V9896WqlTA" points="[0, 0, -291, 259]$[10, 0, -281, 259]$[10, -41, -281, 218]$[251, -41, -40, 218]$[251, -259, -40, 0]$[291, -259, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDXkmYvvEeu-V9896WqlTA" id="(0.9313725490196079,1.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDXkmovvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_iDXkm4vvEeu-V9896WqlTA" type="4001" element="_iDPBsovvEeu-V9896WqlTA" source="_iDVIUIvvEeu-V9896WqlTA" target="_iDRd84vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDYLoIvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iDYLoYvvEeu-V9896WqlTA" x="-3" y="-11"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDYLoovvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iDYLo4vvEeu-V9896WqlTA" x="-4" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDYLpIvvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iDYLpYvvEeu-V9896WqlTA" x="-1" y="9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_iDXknIvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_iDXknYvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_iJh29IvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iDXknovvEeu-V9896WqlTA" points="[0, 0, 79, -309]$[-21, 97, 58, -212]$[-99, 235, -20, -74]$[-32, 212, 47, -97]$[-63, 275, 16, -34]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDYLpovvEeu-V9896WqlTA" id="(0.6172839506172839,0.5945945945945946)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDYLp4vvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_iDYLqIvvEeu-V9896WqlTA" type="4001" element="_iDPBt4vvEeu-V9896WqlTA" source="_iDVIUIvvEeu-V9896WqlTA" target="_iDRd-ovvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_iDYysIvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p-fBAIvvEeu-V9896WqlTA" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDYysovvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p-fBAYvvEeu-V9896WqlTA" y="9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_iDYytIvvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p-fBAovvEeu-V9896WqlTA" y="9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_iDYLqYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_iDYLqovvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_iJh29YvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_iDYLq4vvEeu-V9896WqlTA" points="[1, 0, 451, -309]$[-401, 275, 49, -34]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDYytovvEeu-V9896WqlTA" id="(0.38271604938271603,0.5405405405405406)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_iDYyt4vvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_iDPBvIvvEeu-V9896WqlTA" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_iDPBvYvvEeu-V9896WqlTA"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDLXUIvvEeu-V9896WqlTA" name="a"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_orcEwYvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDLXU4vvEeu-V9896WqlTA" name="b"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a/b"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a/b"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_orcEw4vvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDL-YIvvEeu-V9896WqlTA" name="c"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a/b/c"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge/a/b/c"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_orcr0YvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDL-Y4vvEeu-V9896WqlTA" name="C1" incomingEdges="_iDNzkIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_orcr04vvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDL-ZovvEeu-V9896WqlTA" name="C2" outgoingEdges="_iDNzkIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ordS4YvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDMlcIvvEeu-V9896WqlTA" name="op2" incomingEdges="_iDOaoIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op2"/> + <arrangeConstraints>KEEP_LOCATION</arrangeConstraints> + <arrangeConstraints>KEEP_SIZE</arrangeConstraints> + <arrangeConstraints>KEEP_RATIO</arrangeConstraints> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ordS5ovvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDMlc4vvEeu-V9896WqlTA" name="op3" incomingEdges="_iDOapYvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op3"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ordS6IvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDMldovvEeu-V9896WqlTA" name="op4" incomingEdges="_iDOaqovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op4"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ordS6ovvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDNMgIvvEeu-V9896WqlTA" name="op5" incomingEdges="_iDPBsovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op5"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ordS7IvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_iDNMg4vvEeu-V9896WqlTA" name="op1" incomingEdges="_iDPBt4vvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/op1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_ord58YvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_iDNzkIvvEeu-V9896WqlTA" outgoingEdges="_iDOaoIvvEeu-V9896WqlTA _iDOapYvvEeu-V9896WqlTA _iDOaqovvEeu-V9896WqlTA _iDPBsovvEeu-V9896WqlTA _iDPBt4vvEeu-V9896WqlTA" sourceNode="_iDL-ZovvEeu-V9896WqlTA" targetNode="_iDL-Y4vvEeu-V9896WqlTA"> + <target xmi:type="ecore:EReference" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/toC1"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/toC1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_ordS4ovvEeu-V9896WqlTA" size="2"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_ordS44vvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_iDOaoIvvEeu-V9896WqlTA" sourceNode="_iDNzkIvvEeu-V9896WqlTA" targetNode="_iDMlcIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_iDOaoYvvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_iDOaoovvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_iDOapYvvEeu-V9896WqlTA" sourceNode="_iDNzkIvvEeu-V9896WqlTA" targetNode="_iDMlc4vvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_iDOapovvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_iDOap4vvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_iDOaqovvEeu-V9896WqlTA" sourceNode="_iDNzkIvvEeu-V9896WqlTA" targetNode="_iDMldovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_iDOaq4vvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_iDOarIvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_iDPBsovvEeu-V9896WqlTA" sourceNode="_iDNzkIvvEeu-V9896WqlTA" targetNode="_iDNMgIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C1/op5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_iDPBs4vvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_iDPBtIvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_iDPBt4vvEeu-V9896WqlTA" sourceNode="_iDNzkIvvEeu-V9896WqlTA" targetNode="_iDNMg4vvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels2EdgeOnEdge/a/b/c/C2/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_iDPBuIvvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_iDPBuYvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_iDC0cIvvEeu-V9896WqlTA"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels2EdgeOnEdge"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_vX7x8IvvEeu-V9896WqlTA"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_vX9nIIvvEeu-V9896WqlTA" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_vX9nIYvvEeu-V9896WqlTA" type="Sirius" element="_vX7x8IvvEeu-V9896WqlTA" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_vYCfoIvvEeu-V9896WqlTA" type="2002" element="_vX-OMIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYDGsIvvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_vYDGsYvvEeu-V9896WqlTA" type="7001"> + <children xmi:type="notation:Node" xmi:id="_vYDty4vvEeu-V9896WqlTA" type="3008" element="_vX-1QIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYDtzovvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_vYDtz4vvEeu-V9896WqlTA" type="7002"> + <children xmi:type="notation:Node" xmi:id="_vYDt0ovvEeu-V9896WqlTA" type="3008" element="_vX-1Q4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYEU0IvvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_vYEU0YvvEeu-V9896WqlTA" type="7002"> + <children xmi:type="notation:Node" xmi:id="_vYEU1IvvEeu-V9896WqlTA" type="3008" element="_vX-1RovvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYEU14vvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_vYEU2IvvEeu-V9896WqlTA" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYEU2YvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYEU2ovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYEU1YvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uDBIvvEeu-V9896WqlTA" x="591" y="88" width="142" height="62"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYEU24vvEeu-V9896WqlTA" type="3008" element="_vX_cUovvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYEU3ovvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_vYEU34vvEeu-V9896WqlTA" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYEU4IvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYEU4YvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYEU3IvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uDBovvEeu-V9896WqlTA" x="41" y="288" width="142" height="62"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYEU4ovvEeu-V9896WqlTA" type="3008" element="_vX_cVYvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYEU5YvvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_vYEU5ovvEeu-V9896WqlTA" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYEU54vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYEU6IvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYEU44vvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uqEIvvEeu-V9896WqlTA" x="191" y="288" width="142" height="62"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYE74IvvEeu-V9896WqlTA" type="3008" element="_vX_cWIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYE744vvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_vYE75IvvEeu-V9896WqlTA" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYE75YvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYE75ovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYE74YvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uqEovvEeu-V9896WqlTA" x="341" y="288" width="142" height="62"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYE754vvEeu-V9896WqlTA" type="3008" element="_vYADYYvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYE76ovvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_vYE764vvEeu-V9896WqlTA" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYE77IvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYE77YvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYE76IvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uqFIvvEeu-V9896WqlTA" x="491" y="288" width="142" height="62"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYEU0ovvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYEU04vvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYDt04vvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uDAovvEeu-V9896WqlTA" x="12" y="32" width="809" height="432"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYDt0IvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYDt0YvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYDtzIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uDAIvvEeu-V9896WqlTA" x="12" y="32" width="991" height="482"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYDGsovvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYDGs4vvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYCfoYvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1tb8IvvEeu-V9896WqlTA" x="270" y="30" width="1088" height="532"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYDGtIvvEeu-V9896WqlTA" type="2002" element="_vYADZIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYDtwIvvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_vYDtwYvvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYDtwovvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYDtw4vvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYDGtYvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uqFovvEeu-V9896WqlTA" x="50" y="200" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYDtxIvvEeu-V9896WqlTA" type="2002" element="_vYAqcYvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYDtx4vvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_vYDtyIvvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_vYDtyYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_vYDtyovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_vYDtxYvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uqG4vvEeu-V9896WqlTA" x="100" y="350" width="146" height="66"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_vX9nIovvEeu-V9896WqlTA"/> + <edges xmi:type="notation:Edge" xmi:id="_vYE77ovvEeu-V9896WqlTA" type="4001" element="_vYAqdIvvEeu-V9896WqlTA" source="_vYDGtIvvEeu-V9896WqlTA" target="_vYEU1IvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYE78ovvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x1uqGovvEeu-V9896WqlTA" y="-12"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYE79IvvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYE79YvvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYE79ovvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYE794vvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_vYE774vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_vYE78IvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_vbxwIIvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vYE78YvvEeu-V9896WqlTA" points="[72, -2, -706, 0]$[778, -2, 0, 0]"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYE7-YvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_vYE7-ovvEeu-V9896WqlTA" type="4001" element="_vYB4kIvvEeu-V9896WqlTA" source="_vYE77ovvEeu-V9896WqlTA" target="_vYDtxIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYFi8IvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYFi8YvvEeu-V9896WqlTA" x="-4" y="9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYFi8ovvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYFi84vvEeu-V9896WqlTA" x="4" y="-9"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYFi9IvvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYFi9YvvEeu-V9896WqlTA" x="4" y="-9"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_vYE7-4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_vYE7_IvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_vbxwJYvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vYE7_YvvEeu-V9896WqlTA" points="[0, 0, 358, -152]$[-283, 120, 75, -32]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYFi9ovvEeu-V9896WqlTA" id="(0.37423312883435583,0.012345679012345678)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYFi94vvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_vYFi-IvvEeu-V9896WqlTA" type="4001" element="_vYB4lYvvEeu-V9896WqlTA" source="_vYE77ovvEeu-V9896WqlTA" target="_vYEU24vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYGKAIvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYGKAYvvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYGKAovvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYGKA4vvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYGKBIvvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYGKBYvvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_vYFi-YvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_vYFi-ovvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_vbxwIYvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vYFi-4vvEeu-V9896WqlTA" points="[0, 0, -71, -160]$[0, 160, -71, 0]$[71, 160, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYGKBovvEeu-V9896WqlTA" id="(0.558282208588957,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYGKB4vvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_vYGKCIvvEeu-V9896WqlTA" type="4001" element="_vYB4movvEeu-V9896WqlTA" source="_vYE77ovvEeu-V9896WqlTA" target="_vYEU4ovvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYGxEIvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYGxEYvvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYGxEovvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYGxE4vvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYGxFIvvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYGxFYvvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_vYGKCYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_vYGKCovvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_vbxwIovvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vYGKC4vvEeu-V9896WqlTA" points="[0, 0, -111, 0]$[111, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYGxFovvEeu-V9896WqlTA" id="(0.3128834355828221,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYGxF4vvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_vYGxGIvvEeu-V9896WqlTA" type="4001" element="_vYB4n4vvEeu-V9896WqlTA" source="_vYE77ovvEeu-V9896WqlTA" target="_vYE74IvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYGxHIvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYGxHYvvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYGxHovvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYGxH4vvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYGxIIvvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYGxIYvvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_vYGxGYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_vYGxGovvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_vbxwI4vvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vYGxG4vvEeu-V9896WqlTA" points="[0, 0, -81, -240]$[0, 240, -81, 0]$[81, 240, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYHYIIvvEeu-V9896WqlTA" id="(0.49693251533742333,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYHYIYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_vYH_MIvvEeu-V9896WqlTA" type="4001" element="_vYB4pIvvEeu-V9896WqlTA" source="_vYE77ovvEeu-V9896WqlTA" target="_vYE754vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_vYH_NIvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYH_NYvvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYImQIvvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYImQYvvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_vYImQovvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYImQ4vvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_vYH_MYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_vYH_MovvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_vbxwJIvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vYH_M4vvEeu-V9896WqlTA" points="[0, 0, -91, -319]$[0, 319, -91, 0]$[91, 319, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYJNUIvvEeu-V9896WqlTA" id="(0.43558282208588955,0.012345679012345678)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYJNUYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_vYB4qYvvEeu-V9896WqlTA" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_vYB4qovvEeu-V9896WqlTA"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vX-OMIvvEeu-V9896WqlTA" name="a"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCGWkYvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vX-1QIvvEeu-V9896WqlTA" name="b"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCG9oovvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vX-1Q4vvEeu-V9896WqlTA" name="c"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b/c"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b/c"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCG9pYvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vX-1RovvEeu-V9896WqlTA" name="C2" incomingEdges="_vYAqdIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCHksovvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vX_cUovvEeu-V9896WqlTA" name="op2" incomingEdges="_vYB4lYvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCHktYvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vX_cVYvvEeu-V9896WqlTA" name="op3" incomingEdges="_vYB4movvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCHkuIvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vX_cWIvvEeu-V9896WqlTA" name="op4" incomingEdges="_vYB4n4vvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCHku4vvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vYADYYvvEeu-V9896WqlTA" name="op5" incomingEdges="_vYB4pIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCHkvovvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vYADZIvvEeu-V9896WqlTA" name="C1" outgoingEdges="_vYAqdIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/C1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCHkwYvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_vYAqcYvvEeu-V9896WqlTA" name="op1" incomingEdges="_vYB4kIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_zCILwYvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_vYAqdIvvEeu-V9896WqlTA" outgoingEdges="_vYB4kIvvEeu-V9896WqlTA _vYB4lYvvEeu-V9896WqlTA _vYB4movvEeu-V9896WqlTA _vYB4n4vvEeu-V9896WqlTA _vYB4pIvvEeu-V9896WqlTA" sourceNode="_vYADZIvvEeu-V9896WqlTA" targetNode="_vX-1RovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EReference" href="My.ecore#//levels1EdgeOnEdge/C1/toC2"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//levels1EdgeOnEdge/C1/toC2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_zCILw4vvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_zCILxIvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_vYB4kIvvEeu-V9896WqlTA" sourceNode="_vYAqdIvvEeu-V9896WqlTA" targetNode="_vYAqcYvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_vYB4kYvvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_vYB4kovvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_vYB4lYvvEeu-V9896WqlTA" sourceNode="_vYAqdIvvEeu-V9896WqlTA" targetNode="_vX_cUovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_vYB4lovvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_vYB4l4vvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_vYB4movvEeu-V9896WqlTA" sourceNode="_vYAqdIvvEeu-V9896WqlTA" targetNode="_vX_cVYvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_vYB4m4vvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_vYB4nIvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_vYB4n4vvEeu-V9896WqlTA" sourceNode="_vYAqdIvvEeu-V9896WqlTA" targetNode="_vX_cWIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_vYB4oIvvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_vYB4oYvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_vYB4pIvvEeu-V9896WqlTA" sourceNode="_vYAqdIvvEeu-V9896WqlTA" targetNode="_vYADYYvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_vYB4pYvvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_vYB4povvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_vX8ZAIvvEeu-V9896WqlTA"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageReverse']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge"/> + </diagram:DSemanticDiagram> + <diagram:DSemanticDiagram uid="_3YDqMIvvEeu-V9896WqlTA"> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_3YFfYIvvEeu-V9896WqlTA" source="GMF_DIAGRAMS"> + <data xmi:type="notation:Diagram" xmi:id="_3YFfYYvvEeu-V9896WqlTA" type="Sirius" element="_3YDqMIvvEeu-V9896WqlTA" measurementUnit="Pixel"> + <children xmi:type="notation:Node" xmi:id="_3YJw0IvvEeu-V9896WqlTA" type="2002" element="_3YGGcIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YJw04vvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_3YJw1IvvEeu-V9896WqlTA" type="7001"> + <children xmi:type="notation:Node" xmi:id="_3YK_AovvEeu-V9896WqlTA" type="3008" element="_3YGtgIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YK_BYvvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_3YK_BovvEeu-V9896WqlTA" type="7002"> + <children xmi:type="notation:Node" xmi:id="_3YLmAIvvEeu-V9896WqlTA" type="3008" element="_3YGtg4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YLmA4vvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_3YLmBIvvEeu-V9896WqlTA" type="7002"> + <children xmi:type="notation:Node" xmi:id="_3YLmB4vvEeu-V9896WqlTA" type="3008" element="_3YGthovvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YLmCovvEeu-V9896WqlTA" type="5005"/> + <children xmi:type="notation:Node" xmi:id="_3YLmC4vvEeu-V9896WqlTA" type="7002"> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YLmDIvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YLmDYvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YLmCIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_WhovvEeu-V9896WqlTA" x="7" y="32" width="142" height="62"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YLmBYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YLmBovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YLmAYvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_WhIvvEeu-V9896WqlTA" x="50" y="39" width="289" height="397"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YK_B4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YK_CIvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YK_A4vvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_WgovvEeu-V9896WqlTA" x="20" y="54" width="386" height="480"/> + </children> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YJw1YvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YJw1ovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YJw0YvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_WgIvvEeu-V9896WqlTA" x="790" y="20" width="453" height="608"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YJw14vvEeu-V9896WqlTA" type="2002" element="_3YHUkIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YJw2ovvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_3YKX4IvvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YKX4YvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YKX4ovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YJw2IvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_WiIvvEeu-V9896WqlTA" x="20" y="131" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YKX44vvEeu-V9896WqlTA" type="2002" element="_3YHUk4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YKX5ovvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_3YKX54vvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YKX6IvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YKX6YvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YKX5IvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_9k4vvEeu-V9896WqlTA" x="125" y="210" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YKX6ovvEeu-V9896WqlTA" type="2002" element="_3YHUlovvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YKX7YvvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_3YKX7ovvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YKX74vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YKX8IvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YKX64vvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_9lYvvEeu-V9896WqlTA" x="243" y="320" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YKX8YvvEeu-V9896WqlTA" type="2002" element="_3YHUmYvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YK-8IvvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_3YK-8YvvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YK-8ovvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YK-84vvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YKX8ovvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_9l4vvEeu-V9896WqlTA" x="361" y="410" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YK-9IvvEeu-V9896WqlTA" type="2002" element="_3YHUnIvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YK-94vvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_3YK--IvvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YK--YvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YK--ovvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YK-9YvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_9mYvvEeu-V9896WqlTA" x="479" y="520" width="146" height="66"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YK--4vvEeu-V9896WqlTA" type="2002" element="_3YHUn4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YK-_ovvEeu-V9896WqlTA" type="5006"/> + <children xmi:type="notation:Node" xmi:id="_3YK-_4vvEeu-V9896WqlTA" type="7001"> + <styles xmi:type="notation:SortingStyle" xmi:id="_3YK_AIvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FilteringStyle" xmi:id="_3YK_AYvvEeu-V9896WqlTA"/> + </children> + <styles xmi:type="notation:ShapeStyle" xmi:id="_3YK-_IvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_9m4vvEeu-V9896WqlTA" x="595" y="65" width="146" height="66"/> + </children> + <styles xmi:type="notation:DiagramStyle" xmi:id="_3YFfYovvEeu-V9896WqlTA"/> + <edges xmi:type="notation:Edge" xmi:id="_3YLmDovvEeu-V9896WqlTA" type="4001" element="_3YH7oovvEeu-V9896WqlTA" source="_3YJw14vvEeu-V9896WqlTA" target="_3YLmB4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YLmEovvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5V_9kovvEeu-V9896WqlTA" x="-8" y="-12"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YMNEIvvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YMNEYvvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YMNEovvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YMNE4vvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_3YLmD4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_3YLmEIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_3cW7YIvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3YLmEYvvEeu-V9896WqlTA" points="[0, 0, -718, -30]$[718, 30, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YMNFIvvEeu-V9896WqlTA" id="(1.0,0.5)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YMNFYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_3YMNFovvEeu-V9896WqlTA" type="4001" element="_3YIisovvEeu-V9896WqlTA" source="_3YLmDovvEeu-V9896WqlTA" target="_3YKX44vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YMNGovvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YMNG4vvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YMNHIvvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YMNHYvvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YMNHovvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YMNH4vvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_3YMNF4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_3YMNGIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_3cW7YYvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3YMNGYvvEeu-V9896WqlTA" points="[0, 0, -55, -565]$[0, 565, -55, 0]$[55, 565, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YM0IIvvEeu-V9896WqlTA" id="(0.37423312883435583,0.0022271714922048997)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YM0IYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_3YM0IovvEeu-V9896WqlTA" type="4001" element="_3YJJwIvvEeu-V9896WqlTA" source="_3YLmDovvEeu-V9896WqlTA" target="_3YKX6ovvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YM0JovvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YM0J4vvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YM0KIvvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YM0KYvvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YM0KovvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YM0K4vvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_3YM0I4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_3YM0JIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_3cW7YovvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3YM0JYvvEeu-V9896WqlTA" points="[0, 0, -65, 0]$[65, 0, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YNbMIvvEeu-V9896WqlTA" id="(0.3128834355828221,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YNbMYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_3YNbMovvEeu-V9896WqlTA" type="4001" element="_3YJJxYvvEeu-V9896WqlTA" source="_3YLmDovvEeu-V9896WqlTA" target="_3YKX8YvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YNbNovvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YNbN4vvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YOCQIvvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YOCQYvvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YOCQovvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YOCQ4vvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_3YNbM4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_3YNbNIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_3cW7Y4vvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3YNbNYvvEeu-V9896WqlTA" points="[0, 0, -65, -84]$[50, 0, -15, -84]$[50, 84, -15, 0]$[65, 84, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YOpUIvvEeu-V9896WqlTA" id="(0.3128834355828221,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YOpUYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_3YOpUovvEeu-V9896WqlTA" type="4001" element="_3YJJyovvEeu-V9896WqlTA" source="_3YLmDovvEeu-V9896WqlTA" target="_3YK-9IvvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YOpVovvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YOpV4vvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YOpWIvvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YOpWYvvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YOpWovvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YOpW4vvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_3YOpU4vvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_3YOpVIvvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_3cW7ZIvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3YOpVYvvEeu-V9896WqlTA" points="[0, 0, -65, -168]$[40, 0, -25, -168]$[40, 168, -25, 0]$[65, 168, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YPQYIvvEeu-V9896WqlTA" id="(0.3128834355828221,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YPQYYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + <edges xmi:type="notation:Edge" xmi:id="_3YP3cIvvEeu-V9896WqlTA" type="4001" element="_3YJJz4vvEeu-V9896WqlTA" source="_3YLmDovvEeu-V9896WqlTA" target="_3YK--4vvEeu-V9896WqlTA"> + <children xmi:type="notation:Node" xmi:id="_3YP3dIvvEeu-V9896WqlTA" type="6001"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YP3dYvvEeu-V9896WqlTA" y="-10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YP3dovvEeu-V9896WqlTA" type="6002"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YP3d4vvEeu-V9896WqlTA" y="10"/> + </children> + <children xmi:type="notation:Node" xmi:id="_3YP3eIvvEeu-V9896WqlTA" type="6003"> + <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3YP3eYvvEeu-V9896WqlTA" y="10"/> + </children> + <styles xmi:type="notation:ConnectorStyle" xmi:id="_3YP3cYvvEeu-V9896WqlTA"/> + <styles xmi:type="notation:FontStyle" xmi:id="_3YP3covvEeu-V9896WqlTA" fontName="Segoe UI" fontHeight="12"/> + <styles xmi:type="notation:StringValueStyle" xmi:id="_3cW7ZYvvEeu-V9896WqlTA" name="junctionPoints" stringValue="()"/> + <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3YP3c4vvEeu-V9896WqlTA" points="[0, 0, -65, -252]$[30, 0, -35, -252]$[30, 252, -35, 0]$[65, 252, 0, 0]"/> + <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YQegIvvEeu-V9896WqlTA" id="(0.3128834355828221,0.0)"/> + <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3YQegYvvEeu-V9896WqlTA" id="(0.0,0.5)"/> + </edges> + </data> + </ownedAnnotationEntries> + <ownedAnnotationEntries xmi:type="description:AnnotationEntry" uid="_3YJJ1IvvEeu-V9896WqlTA" source="DANNOTATION_CUSTOMIZATION_KEY"> + <data xmi:type="diagram:ComputedStyleDescriptionRegistry" uid="_3YJJ1YvvEeu-V9896WqlTA"/> + </ownedAnnotationEntries> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YGGcIvvEeu-V9896WqlTA" name="a"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_WgYvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YGtgIvvEeu-V9896WqlTA" name="b"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_Wg4vvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YGtg4vvEeu-V9896WqlTA" name="c"> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b/c"/> + <semanticElements xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge/a/b/c"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_WhYvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="114,159,207" foregroundColor="114,159,207"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Packages']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Packages']"/> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YGthovvEeu-V9896WqlTA" name="C2" incomingEdges="_3YH7oovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_Wh4vvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YHUkIvvEeu-V9896WqlTA" name="C1" outgoingEdges="_3YH7oovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/C1"/> + <semanticElements xmi:type="ecore:EClass" href="My.ecore#//levels1EdgeOnEdge/C1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_WiYvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="194,239,255" foregroundColor="194,239,255"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Classes']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Classes']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YHUk4vvEeu-V9896WqlTA" name="op1" incomingEdges="_3YIisovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_9lIvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YHUlovvEeu-V9896WqlTA" name="op2" incomingEdges="_3YJJwIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_9lovvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YHUmYvvEeu-V9896WqlTA" name="op3" incomingEdges="_3YJJxYvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_9mIvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YHUnIvvEeu-V9896WqlTA" name="op4" incomingEdges="_3YJJyovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_9movvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DNodeContainer" uid="_3YHUn4vvEeu-V9896WqlTA" name="op5" incomingEdges="_3YJJz4vvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_5V_9nIvvEeu-V9896WqlTA" labelSize="12" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166" foregroundColor="204,242,166"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:FlatContainerStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@containerMappings[name='Operations']/@style"/> + </ownedStyle> + <actualMapping xmi:type="description_1:ContainerMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@containerMappings[name='Operations']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3YH7oovvEeu-V9896WqlTA" outgoingEdges="_3YIisovvEeu-V9896WqlTA _3YJJwIvvEeu-V9896WqlTA _3YJJxYvvEeu-V9896WqlTA _3YJJyovvEeu-V9896WqlTA _3YJJz4vvEeu-V9896WqlTA" sourceNode="_3YHUkIvvEeu-V9896WqlTA" targetNode="_3YGthovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EReference" href="My.ecore#//levels1EdgeOnEdge/C1/toC2"/> + <semanticElements xmi:type="ecore:EReference" href="My.ecore#//levels1EdgeOnEdge/C1/toC2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_5V_9kIvvEeu-V9896WqlTA" size="2"> + <customFeatures>uid</customFeatures> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRoot']/@defaultLayer/@edgeMappings[name='References']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_5V_9kYvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='References']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3YIisovvEeu-V9896WqlTA" sourceNode="_3YH7oovvEeu-V9896WqlTA" targetNode="_3YHUk4vvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/C1/op1"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_3YIis4vvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_3YIitIvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3YJJwIvvEeu-V9896WqlTA" sourceNode="_3YH7oovvEeu-V9896WqlTA" targetNode="_3YHUlovvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op2"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_3YJJwYvvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_3YJJwovvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3YJJxYvvEeu-V9896WqlTA" sourceNode="_3YH7oovvEeu-V9896WqlTA" targetNode="_3YHUmYvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op3"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_3YJJxovvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_3YJJx4vvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3YJJyovvEeu-V9896WqlTA" sourceNode="_3YH7oovvEeu-V9896WqlTA" targetNode="_3YHUnIvvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op4"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_3YJJy4vvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_3YJJzIvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <ownedDiagramElements xmi:type="diagram:DEdge" uid="_3YJJz4vvEeu-V9896WqlTA" sourceNode="_3YH7oovvEeu-V9896WqlTA" targetNode="_3YHUn4vvEeu-V9896WqlTA"> + <target xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <semanticElements xmi:type="ecore:EOperation" href="My.ecore#//levels1EdgeOnEdge/a/b/c/C2/op5"/> + <ownedStyle xmi:type="diagram:EdgeStyle" uid="_3YJJ0IvvEeu-V9896WqlTA" size="2"> + <description xmi:type="style:EdgeStyleDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']/@style"/> + <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_3YJJ0YvvEeu-V9896WqlTA" labelSize="12" showIcon="false"/> + </ownedStyle> + <actualMapping xmi:type="description_1:EdgeMapping" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer/@edgeMappings[name='OpToRef2']"/> + </ownedDiagramElements> + <description xmi:type="description_1:DiagramDescription" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']"/> + <filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_3YDqMYvvEeu-V9896WqlTA"/> + <activatedLayers xmi:type="description_1:Layer" href="My.odesign#//@ownedViewpoints[name='ElkTestViewpoint']/@ownedRepresentations[name='DiagramEdgeOnEdge_withPackageWithOpAtRootReverse']/@defaultLayer"/> + <target xmi:type="ecore:EPackage" href="My.ecore#//levels1EdgeOnEdge"/> + </diagram:DSemanticDiagram> </xmi:XMI> diff --git a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/layout/SimpleELKLayoutTest.java b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/layout/SimpleELKLayoutTest.java index 4b19c274df..a406ecc248 100644 --- a/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/layout/SimpleELKLayoutTest.java +++ b/plugins/org.eclipse.sirius.tests.junit/src/org/eclipse/sirius/tests/unit/diagram/layout/SimpleELKLayoutTest.java @@ -21,10 +21,12 @@ import java.util.Optional; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.draw2d.Connection; import org.eclipse.draw2d.IFigure; import org.eclipse.draw2d.Label; import org.eclipse.draw2d.geometry.Dimension; import org.eclipse.draw2d.geometry.Point; +import org.eclipse.draw2d.geometry.PointList; import org.eclipse.draw2d.geometry.Rectangle; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EPackage; @@ -46,6 +48,8 @@ import org.eclipse.gmf.runtime.diagram.ui.render.util.DiagramImageUtils; import org.eclipse.gmf.runtime.diagram.ui.requests.ArrangeRequest; import org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx; import org.eclipse.gmf.runtime.draw2d.ui.figures.WrappingLabel; +import org.eclipse.gmf.runtime.draw2d.ui.geometry.LineSeg; +import org.eclipse.gmf.runtime.draw2d.ui.geometry.PointListUtilities; import org.eclipse.gmf.runtime.draw2d.ui.internal.figures.AnimatableScrollPane; import org.eclipse.gmf.runtime.notation.Bounds; import org.eclipse.gmf.runtime.notation.Diagram; @@ -712,11 +716,9 @@ public class SimpleELKLayoutTest extends SiriusDiagramTestCase { assertEquals("The y GMF coordinate of the label of the border node does not correspond to a location under its border node.", borderNodeBounds.height() + 1, gmfLabelLocation.getY()); assertEquals("Even if GMF coordinates are OK, the label of the border node is visually not horizontally centered on its border node (draw2d x coordinate).", - labelBounds.getCenter().x(), - borderNodeBounds.getCenter().x()); + labelBounds.getCenter().x(), borderNodeBounds.getCenter().x()); assertEquals("Even if GMF coordinates are OK, the label of the border node is visually not under the bottom side of its border node (draw2d y coordinate).", - labelBounds.getTop().y(), - borderNodeBounds.getBottom().y() + 1); + labelBounds.getTop().y(), borderNodeBounds.getBottom().y() + 1); } } if (!labelFound) { @@ -938,7 +940,6 @@ public class SimpleELKLayoutTest extends SiriusDiagramTestCase { testArrangeSelectionResultOnSomeContainerChildren("diagramWithContainerAndScroll"); } - /** * Makes sure that the result of an arrange selection of some children of a container respect the following rules: * <UL> @@ -1518,10 +1519,220 @@ public class SimpleELKLayoutTest extends SiriusDiagramTestCase { * The name of the diagram to use */ public void testArrangeAllResultWithEdgeOutsideOfBoundingBox() { - testArrangeAllResult_ForPackageResetOrigin("resetOrigin3", false, true); + testArrangeAllResult_ForPackageResetOrigin("resetOrigin3", true, false); + } + + /** + * Makes sure that the result of an arrange containing an edge on edge respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The edge on edge has 2 sections, and its end point is the only point on the main edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_Simple_EdgeAsTarget() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_subClasses for simpleEdgeOnEdge"); + DEdgeEditPart targetEdgeEditPart = checkEdge("C1", "C2", true); + Connection targetConnection = targetEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsTarget("op1", targetConnection, 3); + } + + /** + * Makes sure that the result of an arrange containing an edge on edge respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The edge on edge, from op1 to other edge, has 2 sections, and its start point is the only point on the main + * edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_Simple_EdgeAsSource() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_subClassesReverse for simpleEdgeOnEdge"); + DEdgeEditPart sourceEdgeEditPart = checkEdge("C1", "C2", true); + Connection sourceConnection = sourceEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsSource("op1", sourceConnection, 3); + } + + /** + * Makes sure that the result of an arrange containing an edge on edge respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The main edge from C3 to C4 is a straight line (2 points on the same y axis)</LI> + * <LI>The edge on edge, from op1 to edge C1-C2, has 2 sections, and its end point is the only point on the main + * edge</LI> + * <LI>The edge on edge, from op3 to edge C1-C2, has 2 sections, and its end point is the only point on the main + * edge</LI> + * <LI>The edge on edge, from op2 to edge C3-C4, has 2 sections, and its end point is the only point on the main + * edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_Complexe_EdgeAsTarget() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_subClasses for complexeEdgeOnEdge"); + DEdgeEditPart targetEdgeEditPart = checkEdge("C1", "C2", true); + Connection targetConnection = targetEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsTarget("op1", targetConnection, 3); + checkEdgeWithEdgeAsTarget("op3", targetConnection, 3); + targetEdgeEditPart = checkEdge("C3", "C4", true); + targetConnection = targetEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsTarget("op2", targetConnection, 3); + } + + /** + * Makes sure that the result of an arrange containing an edge on edge respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The main edge from C3 to C4 is a straight line (2 points on the same y axis)</LI> + * <LI>The edge on edge, from edge C1-C2 to op1, has 2 sections, and its start point is the only point on the main + * edge</LI> + * <LI>The edge on edge, from edge C1-C2 to op3, has 2 sections, and its start point is the only point on the main + * edge</LI> + * <LI>The edge on edge, from edge C3-C4 to op2, has 2 sections, and its start point is the only point on the main + * edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_Complexe_EdgeAsSource() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_subClassesReverse for complexeEdgeOnEdge"); + DEdgeEditPart sourceEdgeEditPart = checkEdge("C1", "C2", true); + Connection sourceConnection = sourceEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsSource("op1", sourceConnection, 3); + checkEdgeWithEdgeAsSource("op3", sourceConnection, 3); + // TODO : I failed to get a layout setting that force edges used as source or target to be straight. This is the + // case here. + // I asked on gitter to see if someone has an idea: https://gitter.im/eclipse/elk?at=6059b3cd88edaa1eb8d56f8d + // In this context, we adapt the test (no check about horizontality and different number of expected points. + sourceEdgeEditPart = checkEdge("C3", "C4", false); + sourceConnection = sourceEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsSource("op2", sourceConnection, 2); } /** + * Makes sure that the result of an arrange containing an edge on edge and with edges with different containing + * levels respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The other edges, pointing to it, are "rectilinear" with expected number of bendpoints, and their end points + * are the only points on the main edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_DifferentLevel1_EdgeAsTarget() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_withPackage for levels1EdgeOnEdge", true, false); + DEdgeEditPart targetEdgeEditPart = checkEdge("C1", "C2", false); + Connection targetConnection = targetEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsTarget("op1", targetConnection, 2); + checkEdgeWithEdgeAsTarget("op2", targetConnection, 5); + checkEdgeWithEdgeAsTarget("op3", targetConnection, 5); + checkEdgeWithEdgeAsTarget("op4", targetConnection, 5); + checkEdgeWithEdgeAsTarget("op5", targetConnection, 5); + } + + /** + * Makes sure that the result of an arrange containing an edge on edge and with edges with different containing + * levels respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The other edges, pointing to it, are "rectilinear" with expected number of bendpoints, and their end points + * are the only points on the main edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_DifferentLevel2_EdgeAsTarget() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_withPackageWithOpAtRoot for levels1EdgeOnEdge"); + DEdgeEditPart targetEdgeEditPart = checkEdge("C1", "C2", true); + Connection targetConnection = targetEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsTarget("op1", targetConnection, 3); + checkEdgeWithEdgeAsTarget("op2", targetConnection, 3); + checkEdgeWithEdgeAsTarget("op3", targetConnection, 3); + checkEdgeWithEdgeAsTarget("op4", targetConnection, 3); + checkEdgeWithEdgeAsTarget("op5", targetConnection, 3); + } + + /** + * Makes sure that the result of an arrange containing an edge on edge and with edges with different containing + * levels respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The other edges, pointing to it, are "rectilinear" with expected number of bendpoints, and their end points + * are the only points on the main edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_DifferentLevel3_EdgeAsTarget() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_withPackageWithOpAtRoot for levels2EdgeOnEdge"); + DEdgeEditPart targetEdgeEditPart = checkEdge("C2", "C1", true); + Connection targetConnection = targetEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsTarget("op1", targetConnection, 3); + checkEdgeWithEdgeAsTarget("op2", targetConnection, 5); + checkEdgeWithEdgeAsTarget("op3", targetConnection, 5); + checkEdgeWithEdgeAsTarget("op4", targetConnection, 5); + checkEdgeWithEdgeAsTarget("op5", targetConnection, 5); + } + + /** + * Makes sure that the result of an arrange containing an edge on edge and with edges with different containing + * levels respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The other edges, starting from it, are "rectilinear" with expected number of bendpoints, and their start + * points are the only points on the main edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_DifferentLevel1_EdgeAsSource() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_withPackageReverse for levels1EdgeOnEdge"); + DEdgeEditPart targetEdgeEditPart = checkEdge("C1", "C2", false); + Connection targetConnection = targetEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsSource("op1", targetConnection, 3); + checkEdgeWithEdgeAsSource("op2", targetConnection, 3); + checkEdgeWithEdgeAsSource("op3", targetConnection, 2); + checkEdgeWithEdgeAsSource("op4", targetConnection, 3); + checkEdgeWithEdgeAsSource("op5", targetConnection, 3); + } + + /** + * Makes sure that the result of an arrange containing an edge on edge and with edges with different containing + * levels respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The other edges, starting from it, are "rectilinear" with expected number of bendpoints, and their start + * points are the only points on the main edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_DifferentLevel2_EdgeAsSource() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_withPackageWithOpAtRootReverse for levels1EdgeOnEdge"); + DEdgeEditPart targetEdgeEditPart = checkEdge("C1", "C2", false); + Connection targetConnection = targetEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsSource("op1", targetConnection, 3); + checkEdgeWithEdgeAsSource("op2", targetConnection, 2); + checkEdgeWithEdgeAsSource("op3", targetConnection, 4); + checkEdgeWithEdgeAsSource("op4", targetConnection, 4); + checkEdgeWithEdgeAsSource("op5", targetConnection, 4); + } + + /** + * Makes sure that the result of an arrange containing an edge on edge and with edges with different containing + * levels respect the following rules: + * <UL> + * <LI>The top left corner of the bounding box is {20, 20}</LI> + * <LI>The main edge from C1 to C2 is a straight line (2 points on the same y axis)</LI> + * <LI>The other edges, starting from it, are "rectilinear" with expected number of bendpoints, and their start + * points are the only points on the main edge</LI> + * <UL> + */ + public void testArrangeAll_edgeOnEdge_DifferentLevel3_EdgeAsSource() { + testArrangeAllResult_ForPackageResetOrigin("diagramEdgeOnEdge_withPackageWithOpAtRootReverse for levels2EdgeOnEdge"); + DEdgeEditPart targetEdgeEditPart = checkEdge("C2", "C1", true); + Connection targetConnection = targetEdgeEditPart.getConnectionFigure(); + checkEdgeWithEdgeAsSource("op1", targetConnection, 5); + checkEdgeWithEdgeAsSource("op2", targetConnection, 5); + checkEdgeWithEdgeAsSource("op3", targetConnection, 3); + checkEdgeWithEdgeAsSource("op4", targetConnection, 5); + checkEdgeWithEdgeAsSource("op5", targetConnection, 5); + } + /** * Makes sure that no diagram element are not in the margin area of {20x20}.<BR/> * This method should be used for diagram on the package "resetOriginCases". * @@ -1562,10 +1773,10 @@ public class SimpleELKLayoutTest extends SiriusDiagramTestCase { // * jumpLinkSize, ie 10 pixels , used in // org.eclipse.gmf.runtime.draw2d.ui.figures.PolylineConnectionEx#getBounds()) // * expand, ie 1 pixel, used in org.eclipse.draw2d.Polyline.getBounds() - if (withHorizontalEdgeCase) { + if (withVerticalEdgeCase) { boundingbox.shrink(15, 0); } - if (withVerticalEdgeCase) { + if (withHorizontalEdgeCase) { boundingbox.shrink(0, 15); } assertEquals("Wrong x coordinate for the bounding box of all diagram elements.", ResetOriginChangeModelOperation.MARGIN, boundingbox.x()); @@ -1798,7 +2009,6 @@ public class SimpleELKLayoutTest extends SiriusDiagramTestCase { return topLeftCorner; } - /** * Move the edit part. * @@ -1817,4 +2027,147 @@ public class SimpleELKLayoutTest extends SiriusDiagramTestCase { editPart.performRequest(request); TestsUtil.synchronizationWithUIThread(); } + + private void checkEdgeWithEdgeAsTarget(String sourceNodeName, Connection targetConnection, int expectedNumberOfPoints) { + DEdgeEditPart edgePointingToAnotherEdge = getEdgeWithNodeAsSource(sourceNodeName); + Connection connectionFigure = edgePointingToAnotherEdge.getConnectionFigure(); + PointList points = connectionFigure.getPoints(); + assertEquals("Wrong number of points for the edge between \"" + sourceNodeName + "\" and another edge.", expectedNumberOfPoints, points.size()); + List<Object> targetLineSegments = PointListUtilities.getLineSegments(targetConnection.getPoints()); + assertTrue("The last point of the egde between \"" + sourceNodeName + "\" and another edge should be on the target edge.", containsPoint(targetLineSegments, points.getLastPoint())); + for (int i = 0; i < points.size() - 1; i++) { + Point pointToTest = points.getPoint(i); + assertFalse("Only the last point of the egde between \"" + sourceNodeName + "\" and another edge should be on the target edge. The point " + pointToTest + " is also on the target edge.", + containsPoint(targetLineSegments, pointToTest)); + } + if (expectedNumberOfPoints == 2) { + assertTrue("The edge between \"" + sourceNodeName + "\" and another edge is not horizontal.", + new LineSeg(connectionFigure.getPoints().getFirstPoint(), connectionFigure.getPoints().getLastPoint()).isHorizontal()); + } else if (expectedNumberOfPoints == 3 || expectedNumberOfPoints == 5) { + for (int i = 0; i < points.size() - 2; i++) { + LineSeg aSegment = new LineSeg(points.getPoint(i), points.getPoint(i + 1)); + LineSeg aFollowingSegment = new LineSeg(points.getPoint(i + 1), points.getPoint(i + 2)); + assertTrue("A segment of the egde between \"" + sourceNodeName + "\" and another edge should make a right angle with its following segment.", + (aSegment.isHorizontal() && aFollowingSegment.isVertical()) || (aSegment.isVertical() && aFollowingSegment.isHorizontal())); + } + } else { + fail(expectedNumberOfPoints + " is not an handled value for the expectedNumberOfPoints parameters."); + } + } + + private void checkEdgeWithEdgeAsSource(String targetNodeName, Connection sourceConnection, int expectedNumberOfPoints) { + DEdgeEditPart edgeStartingFormAnotherEdge = getEdgeWithNodeAsTarget(targetNodeName); + Connection connectionFigure = edgeStartingFormAnotherEdge.getConnectionFigure(); + PointList points = connectionFigure.getPoints(); + assertEquals("Wrong number of points for the edge between another edge and \"" + targetNodeName + "\".", expectedNumberOfPoints, points.size()); + List<Object> sourceLineSegments = PointListUtilities.getLineSegments(sourceConnection.getPoints()); + assertTrue("The first point of the egde between another edge and \"" + targetNodeName + "\" should be on the source edge.", containsPoint(sourceLineSegments, points.getFirstPoint())); + for (int i = 1; i < points.size(); i++) { + Point pointToTest = points.getPoint(i); + assertFalse("Only the first point of the egde between another edge and \"" + targetNodeName + "\" should be on the source edge. The point " + pointToTest + " is also on the source edge.", + containsPoint(sourceLineSegments, pointToTest)); + } + if (expectedNumberOfPoints == 2) { + assertTrue("The edge between another edge and \"" + targetNodeName + "\" is not horizontal.", + new LineSeg(connectionFigure.getPoints().getFirstPoint(), connectionFigure.getPoints().getLastPoint()).isHorizontal()); + } else if (expectedNumberOfPoints == 3 || expectedNumberOfPoints == 4 || expectedNumberOfPoints == 5) { + for (int i = 0; i < points.size() - 2; i++) { + LineSeg aSegment = new LineSeg(points.getPoint(i), points.getPoint(i + 1)); + LineSeg aFollowingSegment = new LineSeg(points.getPoint(i + 1), points.getPoint(i + 2)); + assertTrue("The first segment of the egde between another edge and \"" + targetNodeName + "\" should make a right angle with the second segment.", + (aSegment.isHorizontal() && aFollowingSegment.isVertical()) || (aSegment.isVertical() && aFollowingSegment.isHorizontal())); + } + } else { + fail(expectedNumberOfPoints + " is not an handled value for the expectedNumberOfPoints parameters."); + } + } + + private boolean containsPoint(List<Object> targetLineSegments, Point pointTotest) { + LineSeg lineSeg = PointListUtilities.getNearestSegment(targetLineSegments, pointTotest.x, pointTotest.y); + return lineSeg.containsPoint(pointTotest, 0); + } + + /** + * Check that the edge between <code>sourceNodeName</code> and <code>targetNodeName</code> exists and optionally + * check if it is an horizontal straight line (only two points with same y axis). + * + * @param sourceNodeName + * The name of the source node of the edge + * @param targetNodeName + * The name of the target node of the edge + * @param mustBeHorizontal + * true if we must check that the edge is an horizontal edge, false if we want to check that the edge has + * 3 segments with right angle between each of them. + */ + private DEdgeEditPart checkEdge(String sourceNodeName, String targetNodeName, boolean mustBeHorizontal) { + IGraphicalEditPart sourceNodeEditPart = getDDiagramElement(sourceNodeName); + IGraphicalEditPart targetNodeEditPart = getDDiagramElement(targetNodeName); + + Optional<DEdgeEditPart> edgeEditPart = sourceNodeEditPart.getSourceConnections().stream().filter(DEdgeEditPart.class::isInstance).map(DEdgeEditPart.class::cast) + .filter(deep -> targetNodeEditPart.equals(((DEdgeEditPart) deep).getTarget())).findFirst(); + assertTrue("The diagram should have an edge between \"" + sourceNodeName + "\" and \"" + targetNodeName + "\".", edgeEditPart.isPresent()); + Connection connectionFigure = edgeEditPart.get().getConnectionFigure(); + if (mustBeHorizontal) { + assertEquals("Wrong number of points for the edge between \"" + sourceNodeName + "\" and \"" + targetNodeName + "\".", 2, connectionFigure.getPoints().size()); + assertTrue("The edge between \"" + sourceNodeName + "\" and \"" + targetNodeName + "\" is not horizontal.", + new LineSeg(connectionFigure.getPoints().getFirstPoint(), connectionFigure.getPoints().getLastPoint()).isHorizontal()); + } else { + assertEquals("Wrong number of points for the edge between \"" + sourceNodeName + "\" and \"" + targetNodeName + "\".", 4, connectionFigure.getPoints().size()); + PointList points = connectionFigure.getPoints(); + LineSeg firstSegment = new LineSeg(points.getPoint(0), points.getPoint(1)); + LineSeg secondSegment = new LineSeg(points.getPoint(1), points.getPoint(2)); + LineSeg thirdSegment = new LineSeg(points.getPoint(2), points.getPoint(3)); + assertTrue("The first segment of the egde between \"" + sourceNodeName + "\" and \"" + targetNodeName + "\" should make a right angle with the second segment.", + (firstSegment.isHorizontal() && secondSegment.isVertical()) || (firstSegment.isVertical() && secondSegment.isHorizontal())); + assertTrue("The second segment of the egde between \"" + sourceNodeName + "\" and \"" + targetNodeName + "\" should make a right angle with the third segment.", + (secondSegment.isHorizontal() && thirdSegment.isVertical()) || (secondSegment.isVertical() && thirdSegment.isHorizontal())); + } + return edgeEditPart.get(); + } + + /** + * Get the diagramElement with the current name. + * + * @param nodeName + * The node of the diagram element + * @return the corresponding diagramElement. + */ + protected IGraphicalEditPart getDDiagramElement(String nodeName) { + Optional<DDiagramElement> ddeSource = diagram.getDiagramElements().stream().filter(dde -> dde.getName().equals(nodeName)).findFirst(); + assertTrue("The diagram should have a node named \"" + nodeName + "\".", ddeSource.isPresent()); + IGraphicalEditPart sourceNodeEditPart = getEditPart(ddeSource.get()); + assertTrue("The node for \"" + nodeName + "\" should be a AbstractDiagramContainerEditPart but was a " + sourceNodeEditPart.getClass().getSimpleName(), + sourceNodeEditPart instanceof AbstractDiagramContainerEditPart); + return sourceNodeEditPart; + } + + /** + * Get the first edge having <code>sourceNodeName</code> as source node. + * + * @param sourceNodeName + * The name of the source node of the edge + * @return the first edge having <code>sourceNodeName</code> as source node. + */ + private DEdgeEditPart getEdgeWithNodeAsSource(String sourceNodeName) { + IGraphicalEditPart sourceNodeEditPart = getDDiagramElement(sourceNodeName); + + Optional<DEdgeEditPart> edgeEditPart = sourceNodeEditPart.getSourceConnections().stream().filter(DEdgeEditPart.class::isInstance).map(DEdgeEditPart.class::cast).findFirst(); + assertTrue("The diagram should have an edge starting from \"" + sourceNodeName + "\".", edgeEditPart.isPresent()); + return edgeEditPart.get(); + } + + /** + * Get the first edge having <code>targetNodeName</code> as target node. + * + * @param targetNodeName + * The name of the target node of the edge + * @return the first edge having <code>targetNodeName</code> as target node. + */ + private DEdgeEditPart getEdgeWithNodeAsTarget(String targetNodeName) { + IGraphicalEditPart targetNodeEditPart = getDDiagramElement(targetNodeName); + + Optional<DEdgeEditPart> edgeEditPart = targetNodeEditPart.getTargetConnections().stream().filter(DEdgeEditPart.class::isInstance).map(DEdgeEditPart.class::cast).findFirst(); + assertTrue("The diagram should have an edge ending to \"" + targetNodeName + "\".", edgeEditPart.isPresent()); + return edgeEditPart.get(); + } } |
