[497702] Fix edge selection problem

* bordered node expanded zone when edge selected now does take in
consideration the size of the node with the zoom.
* The minimum length the edge must have to use expanded nodes is now
constant whereas it increased regarding the difference between node size
and minimum selectable requirement.
* The computing on the edge selection has been updated to select node
expanded only if edge selectable zone is present. 

Change-Id: Ia6c28cd624dd73a668aa595b512161de9451e0ba
Signed-off-by: pguilet <pierre.guilet@obeo.fr>
diff --git a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/api/part/AbstractDiagramEdgeEditPart.java b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/api/part/AbstractDiagramEdgeEditPart.java
index 4375323..1fd6cb7 100644
--- a/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/api/part/AbstractDiagramEdgeEditPart.java
+++ b/plugins/org.eclipse.sirius.diagram.ui/src-diag/org/eclipse/sirius/diagram/ui/edit/api/part/AbstractDiagramEdgeEditPart.java
@@ -63,6 +63,7 @@
 import org.eclipse.sirius.diagram.ui.tools.internal.graphical.edit.policies.SiriusConnectionEndPointEditPolicy;
 import org.eclipse.sirius.diagram.ui.tools.internal.routers.SiriusBendpointConnectionRouter;
 import org.eclipse.sirius.diagram.ui.tools.internal.ruler.SiriusSnapToHelperUtil;
+import org.eclipse.sirius.ext.gmf.runtime.editparts.GraphicalHelper;
 import org.eclipse.sirius.ext.gmf.runtime.editpolicies.SiriusSnapFeedbackPolicy;
 import org.eclipse.sirius.viewpoint.description.tool.AbstractToolDescription;
 import org.eclipse.sirius.viewpoint.description.tool.PaneBasedSelectionWizardDescription;
@@ -78,6 +79,19 @@
 public abstract class AbstractDiagramEdgeEditPart extends ConnectionNodeEditPart implements IDiagramEdgeEditPart {
 
     /**
+     * The minimum length(width or height) the edge box must have to be
+     * considered as selectable.
+     */
+    private static final int EDGE_MINIMUM_LENGTH = 20;
+
+    /**
+     * The minimum thickness the edge box at top, bottom, left or right position
+     * of the union of the nodes boxes must have to be considered as selectable
+     * zone.
+     */
+    private static final int EDGE_MINIMUM_THICKNESS = 20;
+
+    /**
      * Define the minimum selection box size for the source and target of the
      * edge (if source or target is bordered node), to fix the horizontal and
      * vertical increment around which the selection of this edge select the
@@ -712,7 +726,12 @@
      * CreateUnspecifiedTypeConnectionRequest is used to create a NoteAtachment
      * directly from the Note.
      * 
+     * The returned edit part can be this edge one or the target or source's one
+     * if this edge part is over the nodes ones.
+     * 
      * @see org.eclipse.gmf.runtime.diagram.ui.editparts.ConnectionNodeEditPart#getTargetEditPart(org.eclipse.gef.Request)
+     * 
+     *      T
      */
     @Override
     public EditPart getTargetEditPart(final Request request) {
@@ -726,42 +745,158 @@
         if (tool instanceof RequestDescription || tool instanceof SelectionWizardDescription || tool instanceof PaneBasedSelectionWizardDescription) {
             return this;
         } else if (request instanceof SelectionRequest) {
-            // if there is the source of the target near this edge select it.
+            boolean expandSource = false;
+            boolean expandTarget = false;
+            Rectangle sourceBoundsWithMargin = null;
+            Rectangle targetBoundsWithMargin = null;
+            int horizontalSourceIncrement = 0;
+            int verticalSourceIncrement = 0;
+            int horizontalTargetIncrement = 0;
+            int verticalTargetIncrement = 0;
+            Rectangle sourceBounds = null;
+            Rectangle targetBounds = null;
+
+            // We compute the bounds of the source edit part with margins if it
+            // is too small.
             if (getSource() instanceof AbstractBorderItemEditPart) {
-                final IFigure sourceFigure = ((AbstractBorderItemEditPart) getSource()).getFigure();
-                final int horizontalIncrement = SOURCE_TARGET_MINIMUM_SIZE_SELECTION > sourceFigure.getSize().width ? SOURCE_TARGET_MINIMUM_SIZE_SELECTION - sourceFigure.getSize().width : 0;
-                final int verticalIncrement = SOURCE_TARGET_MINIMUM_SIZE_SELECTION > sourceFigure.getSize().height ? SOURCE_TARGET_MINIMUM_SIZE_SELECTION - sourceFigure.getSize().height : 0;
-                final Rectangle rectWithMarges = sourceFigure.getBounds().getExpanded(horizontalIncrement, verticalIncrement);
-                sourceFigure.translateToAbsolute(rectWithMarges);
-                // in very specific cases (Note attachment on specific
-                // edges)
-                // request.getLocation() can be null
-                Point location = ((SelectionRequest) request).getLocation();
-                if (location != null && rectWithMarges.contains(location)) {
+                sourceBounds = GraphicalHelper.getAbsoluteBounds((IGraphicalEditPart) getSource());
+                // The method used to add margins doubles the given horizontal
+                // and vertical so we divide these values to always have the
+                // same minimum selection box.
+                horizontalSourceIncrement = SOURCE_TARGET_MINIMUM_SIZE_SELECTION > sourceBounds.width ? Math.round((SOURCE_TARGET_MINIMUM_SIZE_SELECTION - sourceBounds.width) / 2) : 0;
+                verticalSourceIncrement = SOURCE_TARGET_MINIMUM_SIZE_SELECTION > sourceBounds.height ? Math.round((SOURCE_TARGET_MINIMUM_SIZE_SELECTION - sourceBounds.height) / 2) : 0;
+
+                if (horizontalSourceIncrement > 0 || verticalSourceIncrement > 0) {
+                    expandSource = true;
+                    sourceBoundsWithMargin = sourceBounds.getExpanded(horizontalSourceIncrement, verticalSourceIncrement);
+                } else {
+                    sourceBoundsWithMargin = sourceBounds;
+                }
+            }
+            // We compute the bounds of the target edit part with margins if it
+            // is too small.
+            if (getTarget() instanceof AbstractBorderItemEditPart) {
+                targetBounds = GraphicalHelper.getAbsoluteBounds((IGraphicalEditPart) getTarget());
+                horizontalTargetIncrement = SOURCE_TARGET_MINIMUM_SIZE_SELECTION > targetBounds.width ? Math.round((SOURCE_TARGET_MINIMUM_SIZE_SELECTION - targetBounds.width) / 2) : 0;
+                verticalTargetIncrement = SOURCE_TARGET_MINIMUM_SIZE_SELECTION > targetBounds.height ? Math.round((SOURCE_TARGET_MINIMUM_SIZE_SELECTION - targetBounds.height) / 2) : 0;
+
+                if (horizontalTargetIncrement > 0 || verticalTargetIncrement > 0) {
+                    expandTarget = true;
+                    targetBoundsWithMargin = targetBounds.getExpanded(horizontalTargetIncrement, verticalTargetIncrement);
+                } else {
+                    targetBoundsWithMargin = targetBounds;
+                }
+
+            }
+
+            // We test if an edge selectable zone exists with the margined
+            // source and target edit part. Margins can be zero if parts are big
+            // enough.
+            boolean isEdgeSelectableZonePresent = false;
+            if (expandTarget || expandSource) {
+                Rectangle edgeBounds = GraphicalHelper.getAbsoluteBounds(this);
+                isEdgeSelectableZonePresent = isEdgeSelectableZonePresent(edgeBounds, sourceBoundsWithMargin, targetBoundsWithMargin);
+            }
+
+            Point location = ((SelectionRequest) request).getLocation();
+            if (location != null) {
+                boolean returnSource = isEdgeSelectableZonePresent && sourceBoundsWithMargin != null && sourceBoundsWithMargin.contains(location);
+                returnSource = returnSource || (sourceBounds != null && sourceBounds.contains(location));
+                if (returnSource) {
+                    // The mouse is located in the margined source part and an
+                    // edge selectable zone is present. So the considered
+                    // selection is the source one.
                     result = getSource();
+                } else if (result == null) {
+                    boolean returnTarget = isEdgeSelectableZonePresent && targetBoundsWithMargin != null && targetBoundsWithMargin.contains(location);
+                    returnTarget = returnTarget || (targetBounds != null && targetBounds.contains(location));
+                    if (returnTarget) {
+                        // The mouse is located in the margined target part and
+                        // an edge selectable zone is present. So the considered
+                        // selection is the target one.
+                        result = getTarget();
+                    }
                 }
             }
-            if (result == null && getTarget() instanceof AbstractBorderItemEditPart) {
-                final IFigure targetFigure = ((AbstractBorderItemEditPart) getTarget()).getFigure();
-                final int horizontalIncrement = SOURCE_TARGET_MINIMUM_SIZE_SELECTION > targetFigure.getSize().width ? SOURCE_TARGET_MINIMUM_SIZE_SELECTION - targetFigure.getSize().width : 0;
-                final int verticalIncrement = SOURCE_TARGET_MINIMUM_SIZE_SELECTION > targetFigure.getSize().height ? SOURCE_TARGET_MINIMUM_SIZE_SELECTION - targetFigure.getSize().height : 0;
-                final Rectangle rectWithMarges = targetFigure.getBounds().getExpanded(horizontalIncrement, verticalIncrement);
-                targetFigure.translateToAbsolute(rectWithMarges);
-                // in very specific cases (Note attachment on specific
-                // edges)
-                // request.getLocation() can be null
-                Point location = ((SelectionRequest) request).getLocation();
-                if (location != null && rectWithMarges.contains(((SelectionRequest) request).getLocation())) {
-                    result = getTarget();
-                }
-            }
+
         }
         if (result == null) {
+            // The mouse is located in the edge bounds but not in the margined
+            // source and target one so we return it.
             result = super.getTargetEditPart(request);
         }
         return result;
     }
 
+    /**
+     * Returns true if the edge represented by the given bounds has a zone with
+     * the minimum width or height allowing its selection.
+     * 
+     * Either the edge has a box outside the one formed by the union of the
+     * nodes boxes that meets the minimum requirement that is a thickness of
+     * {@link AbstractDiagramEdgeEditPart#EDGE_MINIMUM_THICKNESS}.
+     * 
+     * Or it does not. In this case we compute the edge length from its box by
+     * taking in consideration the margin expansions of the nodes boxes. The
+     * computing is done based on the worst scenario of nodes occupation over
+     * the edge. The computing depends on the existence of source and target
+     * bounds. If both exist, then the worst scenario is the boxes of the two
+     * nodes are upon the edge's one. In this case, the edge's box is considered
+     * as selectable if its bound width or height is greater than the minimum
+     * considered when removed from the width or height of the margined nodes.
+     * If only one node exists, then the worst scenario is one node is
+     * completely over the edge. In this case, the edge's box is considered as
+     * selectable if its width or height is greater than the minimum considered
+     * when removed from the minimum width or height of the unique margined
+     * node.
+     * 
+     * @param edgeBounds
+     *            the {@link Rectangle} encapsulating the selected edge.
+     * @param sourceBoundsWithMargins
+     *            the {@link Rectangle} encapsulating the source part of the
+     *            selected edge.
+     * @param targetBoundsWithMargins
+     *            the {@link Rectangle} encapsulating the target part of the
+     *            selected edge.
+     * @return true if the edge represented by the given bounds has the minimum
+     *         width or height allowing its selection. False otherwise.
+     */
+    private boolean isEdgeSelectableZonePresent(Rectangle edgeBounds, Rectangle sourceBoundsWithMargins, Rectangle targetBoundsWithMargins) {
+        if (sourceBoundsWithMargins == null && targetBoundsWithMargins == null) {
+            return true;
+        } else {
+            boolean isEdgeSelectableZonePresent = false;
+            if (sourceBoundsWithMargins != null && targetBoundsWithMargins != null) {
+                // We check that the edge is selectable on the edge boxes not in
+                // the union of nodes boxes in all directions (top, bottom,
+                // left, right).
+                Rectangle sourceTargetUnionBox = sourceBoundsWithMargins.getUnion(targetBoundsWithMargins);
+                // compute left box
+                isEdgeSelectableZonePresent = isEdgeSelectableZonePresent || (sourceTargetUnionBox.x - edgeBounds.x > EDGE_MINIMUM_THICKNESS);
+
+                // compute right box
+                isEdgeSelectableZonePresent = isEdgeSelectableZonePresent || ((edgeBounds.x + edgeBounds.width) - (sourceTargetUnionBox.x + sourceTargetUnionBox.width) > EDGE_MINIMUM_THICKNESS);
+
+                // compute top box
+                isEdgeSelectableZonePresent = isEdgeSelectableZonePresent || (sourceTargetUnionBox.y - edgeBounds.y > EDGE_MINIMUM_THICKNESS);
+
+                // compute bottom box
+                isEdgeSelectableZonePresent = isEdgeSelectableZonePresent || ((edgeBounds.y + edgeBounds.height) - (sourceTargetUnionBox.y + sourceTargetUnionBox.height) > EDGE_MINIMUM_THICKNESS);
+
+            }
+            if (!isEdgeSelectableZonePresent) {
+                // there are no edge boxes selectable outside of the box made of
+                // the union of the nodes boxes. So we checks we have the
+                // minimum width or height between the two nodes boxes with
+                // maximum margins.
+                isEdgeSelectableZonePresent = sourceBoundsWithMargins == null || targetBoundsWithMargins == null
+                        ? edgeBounds.width - SOURCE_TARGET_MINIMUM_SIZE_SELECTION >= EDGE_MINIMUM_LENGTH || edgeBounds.height - SOURCE_TARGET_MINIMUM_SIZE_SELECTION > EDGE_MINIMUM_LENGTH
+                        : edgeBounds.width - (SOURCE_TARGET_MINIMUM_SIZE_SELECTION * 2) >= EDGE_MINIMUM_LENGTH || edgeBounds.height - (SOURCE_TARGET_MINIMUM_SIZE_SELECTION * 2) >= EDGE_MINIMUM_LENGTH;
+            }
+            return isEdgeSelectableZonePresent;
+        }
+    }
+
     @Override
     public Object getAdapter(Class key) {
         if (key == SnapToHelper.class) {
diff --git a/plugins/org.eclipse.sirius.tests.swtbot.support/src/org/eclipse/sirius/tests/swtbot/support/api/business/UIDiagramRepresentation.java b/plugins/org.eclipse.sirius.tests.swtbot.support/src/org/eclipse/sirius/tests/swtbot/support/api/business/UIDiagramRepresentation.java
index cf3fa6f..a1992a4 100644
--- a/plugins/org.eclipse.sirius.tests.swtbot.support/src/org/eclipse/sirius/tests/swtbot/support/api/business/UIDiagramRepresentation.java
+++ b/plugins/org.eclipse.sirius.tests.swtbot.support/src/org/eclipse/sirius/tests/swtbot/support/api/business/UIDiagramRepresentation.java
@@ -47,6 +47,11 @@
         ZOOM_50("50%", 0.5),
 
         /**
+         * Zoom 75%.
+         */
+        ZOOM_75("75%", 0.75),
+
+        /**
          * Zoom 100%.
          */
         ZOOM_100("100%", 1.0),
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/3358.aird b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/3358.aird
new file mode 100644
index 0000000..9ce017c
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/3358.aird
@@ -0,0 +1,884 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<viewpoint:DAnalysis xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:diagram="http://www.eclipse.org/sirius/diagram/1.1.0" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:viewpoint="http://www.eclipse.org/sirius/1.1.0" xsi:schemaLocation="http://www.eclipse.org/sirius/description/1.1.0 http://www.eclipse.org/sirius/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description http://www.eclipse.org/sirius/diagram/description/style/1.1.0 http://www.eclipse.org/sirius/diagram/1.1.0#//description/style" xmi:id="_qgswEE2TEeakleECKSbEyQ" selectedViews="_rJzXcE2TEeakleECKSbEyQ" version="11.1.0.201606300900">
+  <semanticResources>3358.ecore</semanticResources>
+  <ownedViews xmi:type="viewpoint:DView" xmi:id="_rJzXcE2TEeakleECKSbEyQ">
+    <viewpoint xmi:type="description:Viewpoint" href="3358.odesign#//@ownedViewpoints[name='3358']"/>
+    <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" xmi:id="_rKod4E2TEeakleECKSbEyQ" name="diagram_3358" representation="_rKpE8E2TEeakleECKSbEyQ">
+      <description xmi:type="description_1:DiagramDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']"/>
+      <target xmi:type="ecore:EPackage" href="3358.ecore#/"/>
+    </ownedRepresentationDescriptors>
+    <ownedRepresentations xmi:type="diagram:DSemanticDiagram" xmi:id="_rKpE8E2TEeakleECKSbEyQ" name="diagram_3358">
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_rKpE8U2TEeakleECKSbEyQ" source="DANNOTATION_CUSTOMIZATION_KEY">
+        <data xmi:type="diagram:ComputedStyleDescriptionRegistry" xmi:id="_rKpE8k2TEeakleECKSbEyQ"/>
+      </ownedAnnotationEntries>
+      <ownedAnnotationEntries xmi:type="description:AnnotationEntry" xmi:id="_rK4VgE2TEeakleECKSbEyQ" source="GMF_DIAGRAMS">
+        <data xmi:type="notation:Diagram" xmi:id="_rK4VgU2TEeakleECKSbEyQ" type="Sirius" element="_rKpE8E2TEeakleECKSbEyQ" measurementUnit="Pixel">
+          <children xmi:type="notation:Node" xmi:id="_rK9OAE2TEeakleECKSbEyQ" type="2002" element="_rKpE802TEeakleECKSbEyQ">
+            <children xmi:type="notation:Node" xmi:id="_rLD7sE2TEeakleECKSbEyQ" type="5006"/>
+            <children xmi:type="notation:Node" xmi:id="_rLFw4E2TEeakleECKSbEyQ" type="7001">
+              <children xmi:type="notation:Node" xmi:id="_rLKCUE2TEeakleECKSbEyQ" type="3008" element="_rKpE9U2TEeakleECKSbEyQ">
+                <children xmi:type="notation:Node" xmi:id="_rLKpYE2TEeakleECKSbEyQ" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_rLOTwE2TEeakleECKSbEyQ" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_rLOTwU2TEeakleECKSbEyQ"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_rLOTwk2TEeakleECKSbEyQ"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_rLVBcE2TEeakleECKSbEyQ" type="3012" element="_rKpE9k2TEeakleECKSbEyQ">
+                  <children xmi:type="notation:Node" xmi:id="_rLXdsE2TEeakleECKSbEyQ" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_rLXdsU2TEeakleECKSbEyQ" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_rLfZgE2TEeakleECKSbEyQ" type="3005" element="_rKpE902TEeakleECKSbEyQ">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_rLfZgU2TEeakleECKSbEyQ" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rLfZgk2TEeakleECKSbEyQ"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_rLVBcU2TEeakleECKSbEyQ" fontName="Segoe UI" fontHeight="8" lineColor="10011046"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rLVBck2TEeakleECKSbEyQ" x="58" y="6" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_rLKCUU2TEeakleECKSbEyQ" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rLKCUk2TEeakleECKSbEyQ" x="50" y="69" width="68" height="50"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_rLPh4E2TEeakleECKSbEyQ" type="3008" element="_rKpE-U2TEeakleECKSbEyQ">
+                <children xmi:type="notation:Node" xmi:id="_rLQI8E2TEeakleECKSbEyQ" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_rLQwAE2TEeakleECKSbEyQ" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_rLQwAU2TEeakleECKSbEyQ"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_rLQwAk2TEeakleECKSbEyQ"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_rLgAkE2TEeakleECKSbEyQ" type="3012" element="_rKpE-k2TEeakleECKSbEyQ">
+                  <children xmi:type="notation:Node" xmi:id="_rLgnoE2TEeakleECKSbEyQ" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_rLgnoU2TEeakleECKSbEyQ" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_rLh1wE2TEeakleECKSbEyQ" type="3005" element="_rKpE-02TEeakleECKSbEyQ">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_rLh1wU2TEeakleECKSbEyQ" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rLh1wk2TEeakleECKSbEyQ"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_rLgAkU2TEeakleECKSbEyQ" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rLgAkk2TEeakleECKSbEyQ" x="3" y="10" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_rLPh4U2TEeakleECKSbEyQ" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rLPh4k2TEeakleECKSbEyQ" x="161" y="64" width="60" height="48"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_rLQwA02TEeakleECKSbEyQ" type="3008" element="_rKpE_U2TEeakleECKSbEyQ">
+                <children xmi:type="notation:Node" xmi:id="_rLRXEE2TEeakleECKSbEyQ" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_rLRXEU2TEeakleECKSbEyQ" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_rLRXEk2TEeakleECKSbEyQ"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_rLRXE02TEeakleECKSbEyQ"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_rLQwBE2TEeakleECKSbEyQ" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rLQwBU2TEeakleECKSbEyQ" x="85" y="1216"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_rLR-IE2TEeakleECKSbEyQ" type="3008" element="_rKpE_02TEeakleECKSbEyQ">
+                <children xmi:type="notation:Node" xmi:id="_rLSlME2TEeakleECKSbEyQ" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_rLSlMU2TEeakleECKSbEyQ" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_rLSlMk2TEeakleECKSbEyQ"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_rLSlM02TEeakleECKSbEyQ"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_OFI_gE3BEeaLwfxB3LP_RQ" type="3012" element="_OFBDsE3BEeaLwfxB3LP_RQ">
+                  <children xmi:type="notation:Node" xmi:id="_OFJmkE3BEeaLwfxB3LP_RQ" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_OFJmkU3BEeaLwfxB3LP_RQ" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_OFJmkk3BEeaLwfxB3LP_RQ" type="3005" element="_OFBDsU3BEeaLwfxB3LP_RQ">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_OFJmk03BEeaLwfxB3LP_RQ" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OFJmlE3BEeaLwfxB3LP_RQ"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_OFI_gU3BEeaLwfxB3LP_RQ" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OFI_gk3BEeaLwfxB3LP_RQ" x="38" y="25" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_rLR-IU2TEeakleECKSbEyQ" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rLR-Ik2TEeakleECKSbEyQ" x="70" y="127" width="48" height="48"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_rLTMQE2TEeakleECKSbEyQ" type="3008" element="_rKpFAU2TEeakleECKSbEyQ">
+                <children xmi:type="notation:Node" xmi:id="_rLTzUE2TEeakleECKSbEyQ" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_rLTzUU2TEeakleECKSbEyQ" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_rLTzUk2TEeakleECKSbEyQ"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_rLTzU02TEeakleECKSbEyQ"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_NZ1YsE3BEeaLwfxB3LP_RQ" type="3012" element="_NZsOwE3BEeaLwfxB3LP_RQ">
+                  <children xmi:type="notation:Node" xmi:id="_NZ3N4E3BEeaLwfxB3LP_RQ" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_NZ3N4U3BEeaLwfxB3LP_RQ" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_NZ5qIE3BEeaLwfxB3LP_RQ" type="3005" element="_NZs10E3BEeaLwfxB3LP_RQ">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_NZ5qIU3BEeaLwfxB3LP_RQ" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NZ5qIk3BEeaLwfxB3LP_RQ"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_NZ1_wE3BEeaLwfxB3LP_RQ" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NZ1_wU3BEeaLwfxB3LP_RQ" x="3" y="22" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_rLTMQU2TEeakleECKSbEyQ" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rLTMQk2TEeakleECKSbEyQ" x="150" y="127" width="52" height="51"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_9bFg8E5YEeaITJAJbUiGEA" type="3008" element="_9agSIE5YEeaITJAJbUiGEA">
+                <children xmi:type="notation:Node" xmi:id="_9bOq4E5YEeaITJAJbUiGEA" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_9bRuME5YEeaITJAJbUiGEA" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_9bRuMU5YEeaITJAJbUiGEA"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_9bRuMk5YEeaITJAJbUiGEA"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_CMn9UE5ZEeaITJAJbUiGEA" type="3012" element="_CMVCYE5ZEeaITJAJbUiGEA">
+                  <children xmi:type="notation:Node" xmi:id="_CMrnsE5ZEeaITJAJbUiGEA" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_CMrnsU5ZEeaITJAJbUiGEA" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_CM0xoE5ZEeaITJAJbUiGEA" type="3005" element="_CMVCYU5ZEeaITJAJbUiGEA">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_CM0xoU5ZEeaITJAJbUiGEA" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CM0xok5ZEeaITJAJbUiGEA"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_CMn9UU5ZEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CMn9Uk5ZEeaITJAJbUiGEA" x="31" y="39" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_9bFg8U5YEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9bFg8k5YEeaITJAJbUiGEA" x="279" y="23" width="57" height="49"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="__IgFAE5YEeaITJAJbUiGEA" type="3008" element="__IQNYE5YEeaITJAJbUiGEA">
+                <children xmi:type="notation:Node" xmi:id="__IgsEE5YEeaITJAJbUiGEA" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="__IgsEU5YEeaITJAJbUiGEA" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="__IgsEk5YEeaITJAJbUiGEA"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="__IgsE05YEeaITJAJbUiGEA"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_CrGCAE5ZEeaITJAJbUiGEA" type="3012" element="_Cq2KYE5ZEeaITJAJbUiGEA">
+                  <children xmi:type="notation:Node" xmi:id="_CrGpEE5ZEeaITJAJbUiGEA" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_CrGpEU5ZEeaITJAJbUiGEA" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_CrGpEk5ZEeaITJAJbUiGEA" type="3005" element="_Cq2KYU5ZEeaITJAJbUiGEA">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_CrGpE05ZEeaITJAJbUiGEA" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CrGpFE5ZEeaITJAJbUiGEA"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_CrGCAU5ZEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CrGCAk5ZEeaITJAJbUiGEA" x="28" y="3" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="__IgFAU5YEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="__IgFAk5YEeaITJAJbUiGEA" x="282" y="127" width="52" height="48"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_NpFZkE5ZEeaITJAJbUiGEA" type="3008" element="_NozFsE5ZEeaITJAJbUiGEA">
+                <children xmi:type="notation:Node" xmi:id="_NpFZk05ZEeaITJAJbUiGEA" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_NpGAoE5ZEeaITJAJbUiGEA" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_NpGAoU5ZEeaITJAJbUiGEA"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_NpGAok5ZEeaITJAJbUiGEA"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_QyPi4E5ZEeaITJAJbUiGEA" type="3012" element="_Qx_rQE5ZEeaITJAJbUiGEA">
+                  <children xmi:type="notation:Node" xmi:id="_QyQJ8E5ZEeaITJAJbUiGEA" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_QyQJ8U5ZEeaITJAJbUiGEA" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_QyQxAE5ZEeaITJAJbUiGEA" type="3005" element="_QyASUE5ZEeaITJAJbUiGEA">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_QyQxAU5ZEeaITJAJbUiGEA" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyQxAk5ZEeaITJAJbUiGEA"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_QyPi4U5ZEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyPi4k5ZEeaITJAJbUiGEA" x="31" y="40" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_NpFZkU5ZEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NpFZkk5ZEeaITJAJbUiGEA" x="363" y="22" width="53" height="50"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_O3V8cE5ZEeaITJAJbUiGEA" type="3008" element="_O3DBgE5ZEeaITJAJbUiGEA">
+                <children xmi:type="notation:Node" xmi:id="_O3WjgE5ZEeaITJAJbUiGEA" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_O3WjgU5ZEeaITJAJbUiGEA" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_O3Wjgk5ZEeaITJAJbUiGEA"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_O3Wjg05ZEeaITJAJbUiGEA"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_QVtX4E5ZEeaITJAJbUiGEA" type="3012" element="_QVeHUE5ZEeaITJAJbUiGEA">
+                  <children xmi:type="notation:Node" xmi:id="_QVt-8E5ZEeaITJAJbUiGEA" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_QVt-8U5ZEeaITJAJbUiGEA" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_QVumAE5ZEeaITJAJbUiGEA" type="3005" element="_QVeuYE5ZEeaITJAJbUiGEA">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_QVumAU5ZEeaITJAJbUiGEA" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QVumAk5ZEeaITJAJbUiGEA"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_QVtX4U5ZEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QVtX4k5ZEeaITJAJbUiGEA" x="26" y="3" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_O3V8cU5ZEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O3V8ck5ZEeaITJAJbUiGEA" x="370" y="94" width="53" height="49"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_Ss9G0E5_Eea8mczBvLtT0g" type="3008" element="_SsbiYE5_Eea8mczBvLtT0g">
+                <children xmi:type="notation:Node" xmi:id="_StCmYE5_Eea8mczBvLtT0g" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_StDNcE5_Eea8mczBvLtT0g" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_StDNcU5_Eea8mczBvLtT0g"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_StDNck5_Eea8mczBvLtT0g"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_VNDsEE5_Eea8mczBvLtT0g" type="3012" element="_VMvjAE5_Eea8mczBvLtT0g">
+                  <children xmi:type="notation:Node" xmi:id="_VNE6ME5_Eea8mczBvLtT0g" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_VNE6MU5_Eea8mczBvLtT0g" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_VNIkkE5_Eea8mczBvLtT0g" type="3005" element="_VMwKEE5_Eea8mczBvLtT0g">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_VNIkkU5_Eea8mczBvLtT0g" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VNIkkk5_Eea8mczBvLtT0g"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_VNDsEU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VNDsEk5_Eea8mczBvLtT0g" x="50" y="25" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_Ss9t4E5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ss9t4U5_Eea8mczBvLtT0g" x="83" y="274" width="60" height="64"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_UAKbIE5_Eea8mczBvLtT0g" type="3008" element="_T_1rAE5_Eea8mczBvLtT0g">
+                <children xmi:type="notation:Node" xmi:id="_UALCME5_Eea8mczBvLtT0g" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_UALCMU5_Eea8mczBvLtT0g" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_UALCMk5_Eea8mczBvLtT0g"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_UALCM05_Eea8mczBvLtT0g"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_Vw-RcE5_Eea8mczBvLtT0g" type="3012" element="_Vwko0E5_Eea8mczBvLtT0g">
+                  <children xmi:type="notation:Node" xmi:id="_Vw-4gE5_Eea8mczBvLtT0g" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_Vw-4gU5_Eea8mczBvLtT0g" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_Vw_fkE5_Eea8mczBvLtT0g" type="3005" element="_Vwko0U5_Eea8mczBvLtT0g">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_Vw_fkU5_Eea8mczBvLtT0g" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vw_fkk5_Eea8mczBvLtT0g"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_Vw-RcU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Vw-Rck5_Eea8mczBvLtT0g" x="3" y="28" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_UAKbIU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UAKbIk5_Eea8mczBvLtT0g" x="170" y="274" width="56" height="60"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_qz4qkE5_Eea8mczBvLtT0g" type="3008" element="_qzlvoE5_Eea8mczBvLtT0g">
+                <children xmi:type="notation:Node" xmi:id="_qz4qk05_Eea8mczBvLtT0g" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_qz5RoE5_Eea8mczBvLtT0g" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_qz5RoU5_Eea8mczBvLtT0g"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_qz5Rok5_Eea8mczBvLtT0g"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_tTHGEE5_Eea8mczBvLtT0g" type="3012" element="_tSxH0E5_Eea8mczBvLtT0g">
+                  <children xmi:type="notation:Node" xmi:id="_tTHtIE5_Eea8mczBvLtT0g" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_tTHtIU5_Eea8mczBvLtT0g" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_tTHtIk5_Eea8mczBvLtT0g" type="3005" element="_tSxu4E5_Eea8mczBvLtT0g">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_tTHtI05_Eea8mczBvLtT0g" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tTHtJE5_Eea8mczBvLtT0g"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_tTHGEU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tTHGEk5_Eea8mczBvLtT0g" x="29" y="49" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_qz4qkU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qz4qkk5_Eea8mczBvLtT0g" x="276" y="239" width="63" height="59"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_ss5aoE5_Eea8mczBvLtT0g" type="3008" element="_ssmfsE5_Eea8mczBvLtT0g">
+                <children xmi:type="notation:Node" xmi:id="_ss6BsE5_Eea8mczBvLtT0g" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_ss6BsU5_Eea8mczBvLtT0g" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_ss6Bsk5_Eea8mczBvLtT0g"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_ss6owE5_Eea8mczBvLtT0g"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_tyHWQE5_Eea8mczBvLtT0g" type="3012" element="_tx1CYE5_Eea8mczBvLtT0g">
+                  <children xmi:type="notation:Node" xmi:id="_tyH9UE5_Eea8mczBvLtT0g" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_tyH9UU5_Eea8mczBvLtT0g" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_tyJLcE5_Eea8mczBvLtT0g" type="3005" element="_tx1CYU5_Eea8mczBvLtT0g">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_tyJLcU5_Eea8mczBvLtT0g" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tyJLck5_Eea8mczBvLtT0g"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_tyHWQU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tyHWQk5_Eea8mczBvLtT0g" x="25" y="3" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_ss5aoU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ss5aok5_Eea8mczBvLtT0g" x="282" y="324" width="60" height="60"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_8DX1YE5_Eea8mczBvLtT0g" type="3008" element="_8DGvoE5_Eea8mczBvLtT0g">
+                <children xmi:type="notation:Node" xmi:id="_8DYccE5_Eea8mczBvLtT0g" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_8DYccU5_Eea8mczBvLtT0g" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_8DYcck5_Eea8mczBvLtT0g"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_8DYcc05_Eea8mczBvLtT0g"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_99L2sE5_Eea8mczBvLtT0g" type="3012" element="_9847wE5_Eea8mczBvLtT0g">
+                  <children xmi:type="notation:Node" xmi:id="_99L2s05_Eea8mczBvLtT0g" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_99L2tE5_Eea8mczBvLtT0g" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_99MdwE5_Eea8mczBvLtT0g" type="3005" element="_985i0E5_Eea8mczBvLtT0g">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_99MdwU5_Eea8mczBvLtT0g" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_99Mdwk5_Eea8mczBvLtT0g"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_99L2sU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_99L2sk5_Eea8mczBvLtT0g" x="46" y="26" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_8DX1YU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8DX1Yk5_Eea8mczBvLtT0g" x="75" y="373" width="56" height="56"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_9D9vsE5_Eea8mczBvLtT0g" type="3008" element="_9Drb0E5_Eea8mczBvLtT0g">
+                <children xmi:type="notation:Node" xmi:id="_9D9vs05_Eea8mczBvLtT0g" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_9D-WwE5_Eea8mczBvLtT0g" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_9D-WwU5_Eea8mczBvLtT0g"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_9D-Wwk5_Eea8mczBvLtT0g"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_9htboE5_Eea8mczBvLtT0g" type="3012" element="_9hVoME5_Eea8mczBvLtT0g">
+                  <children xmi:type="notation:Node" xmi:id="_9huCsE5_Eea8mczBvLtT0g" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_9huCsU5_Eea8mczBvLtT0g" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_9huCsk5_Eea8mczBvLtT0g" type="3005" element="_9hWPQE5_Eea8mczBvLtT0g">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_9huCs05_Eea8mczBvLtT0g" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9huCtE5_Eea8mczBvLtT0g"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_9htboU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9htbok5_Eea8mczBvLtT0g" x="3" y="26" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_9D9vsU5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9D9vsk5_Eea8mczBvLtT0g" x="159" y="375" width="52" height="52"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_Hov9EE6AEea8mczBvLtT0g" type="3008" element="_Hob0AE6AEea8mczBvLtT0g">
+                <children xmi:type="notation:Node" xmi:id="_Hov9E06AEea8mczBvLtT0g" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_HowkIE6AEea8mczBvLtT0g" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_HowkIU6AEea8mczBvLtT0g"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_HowkIk6AEea8mczBvLtT0g"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_J4bgsE6AEea8mczBvLtT0g" type="3012" element="_J4GJgE6AEea8mczBvLtT0g">
+                  <children xmi:type="notation:Node" xmi:id="_J4bgs06AEea8mczBvLtT0g" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_J4bgtE6AEea8mczBvLtT0g" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_J4bgtU6AEea8mczBvLtT0g" type="3005" element="_J4GJgU6AEea8mczBvLtT0g">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_J4bgtk6AEea8mczBvLtT0g" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4bgt06AEea8mczBvLtT0g"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_J4bgsU6AEea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4bgsk6AEea8mczBvLtT0g" x="31" y="50" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_Hov9EU6AEea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Hov9Ek6AEea8mczBvLtT0g" x="399" y="239" width="60" height="60"/>
+              </children>
+              <children xmi:type="notation:Node" xmi:id="_I3yjEE6AEea8mczBvLtT0g" type="3008" element="_I3WeME6AEea8mczBvLtT0g">
+                <children xmi:type="notation:Node" xmi:id="_I3zKIE6AEea8mczBvLtT0g" type="5005"/>
+                <children xmi:type="notation:Node" xmi:id="_I3zKIU6AEea8mczBvLtT0g" type="7002">
+                  <styles xmi:type="notation:SortingStyle" xmi:id="_I3zKIk6AEea8mczBvLtT0g"/>
+                  <styles xmi:type="notation:FilteringStyle" xmi:id="_I3zKI06AEea8mczBvLtT0g"/>
+                </children>
+                <children xmi:type="notation:Node" xmi:id="_JciO4E6AEea8mczBvLtT0g" type="3012" element="_JcOs4E6AEea8mczBvLtT0g">
+                  <children xmi:type="notation:Node" xmi:id="_Jci18E6AEea8mczBvLtT0g" type="5010">
+                    <layoutConstraint xmi:type="notation:Location" xmi:id="_Jci18U6AEea8mczBvLtT0g" y="5"/>
+                  </children>
+                  <children xmi:type="notation:Node" xmi:id="_Jci18k6AEea8mczBvLtT0g" type="3005" element="_JcOs4U6AEea8mczBvLtT0g">
+                    <styles xmi:type="notation:ShapeStyle" xmi:id="_Jci1806AEea8mczBvLtT0g" fontName="Segoe UI"/>
+                    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jci19E6AEea8mczBvLtT0g"/>
+                  </children>
+                  <styles xmi:type="notation:ShapeStyle" xmi:id="_JciO4U6AEea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                  <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JciO4k6AEea8mczBvLtT0g" x="27" y="3" width="5" height="5"/>
+                </children>
+                <styles xmi:type="notation:ShapeStyle" xmi:id="_I3yjEU6AEea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_I3yjEk6AEea8mczBvLtT0g" x="403" y="330" width="56" height="49"/>
+              </children>
+              <styles xmi:type="notation:SortingStyle" xmi:id="_rLFw4U2TEeakleECKSbEyQ"/>
+              <styles xmi:type="notation:FilteringStyle" xmi:id="_rLFw4k2TEeakleECKSbEyQ"/>
+            </children>
+            <styles xmi:type="notation:ShapeStyle" xmi:id="_rK9OAU2TEeakleECKSbEyQ" fontName="Segoe UI" fontHeight="8"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rK9OAk2TEeakleECKSbEyQ" x="-220" y="-35" width="1297" height="1063"/>
+          </children>
+          <styles xmi:type="notation:DiagramStyle" xmi:id="_rK4Vgk2TEeakleECKSbEyQ"/>
+          <edges xmi:type="notation:Edge" xmi:id="_3CkCcE3FEeapKa6g4htD_Q" type="4001" element="_3CYcQE3FEeapKa6g4htD_Q" source="_rLgAkE2TEeakleECKSbEyQ" target="_rLVBcE2TEeakleECKSbEyQ">
+            <children xmi:type="notation:Node" xmi:id="_3Cl3oE3FEeapKa6g4htD_Q" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Cl3oU3FEeapKa6g4htD_Q" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_3CmesE3FEeapKa6g4htD_Q" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3CnFwE3FEeapKa6g4htD_Q" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_3Cns0E3FEeapKa6g4htD_Q" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Cns0U3FEeapKa6g4htD_Q" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_3CkpgE3FEeapKa6g4htD_Q"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_3CkpgU3FEeapKa6g4htD_Q" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Ckpgk3FEeapKa6g4htD_Q" points="[-2, 0, 54, -1]$[-53, 0, 3, -1]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3CoT4E3FEeapKa6g4htD_Q" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3CoT4U3FEeapKa6g4htD_Q" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_4N_60E3FEeapKa6g4htD_Q" type="4001" element="_4N5NIE3FEeapKa6g4htD_Q" source="_NZ1YsE3BEeaLwfxB3LP_RQ" target="_OFI_gE3BEeaLwfxB3LP_RQ">
+            <children xmi:type="notation:Node" xmi:id="_4N_61E3FEeapKa6g4htD_Q" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4N_61U3FEeapKa6g4htD_Q" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_4OAh4E3FEeapKa6g4htD_Q" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4OAh4U3FEeapKa6g4htD_Q" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_4OAh4k3FEeapKa6g4htD_Q" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4OAh403FEeapKa6g4htD_Q" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_4N_60U3FEeapKa6g4htD_Q"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_4N_60k3FEeapKa6g4htD_Q" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4N_6003FEeapKa6g4htD_Q" points="[-2, 0, 43, -3]$[-42, 2, 3, -1]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4OAh5E3FEeapKa6g4htD_Q" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4OAh5U3FEeapKa6g4htD_Q" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_F9hcEE5ZEeaITJAJbUiGEA" type="4001" element="_F9HMYE5ZEeaITJAJbUiGEA" source="_CMn9UE5ZEeaITJAJbUiGEA" target="_CrGCAE5ZEeaITJAJbUiGEA">
+            <children xmi:type="notation:Node" xmi:id="_F9kfYE5ZEeaITJAJbUiGEA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F9kfYU5ZEeaITJAJbUiGEA" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_F9m7oE5ZEeaITJAJbUiGEA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F9nisE5ZEeaITJAJbUiGEA" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_F9nisU5ZEeaITJAJbUiGEA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_F9nisk5ZEeaITJAJbUiGEA" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_F9hcEU5ZEeaITJAJbUiGEA"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_F9hcEk5ZEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F9hcE05ZEeaITJAJbUiGEA" points="[0, 3, 0, -65]$[0, 66, 0, -2]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F9qmAE5ZEeaITJAJbUiGEA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F9qmAU5ZEeaITJAJbUiGEA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_a-psgE5ZEeaITJAJbUiGEA" type="4001" element="_a-SgIE5ZEeaITJAJbUiGEA" source="_QyPi4E5ZEeaITJAJbUiGEA" target="_QVtX4E5ZEeaITJAJbUiGEA">
+            <children xmi:type="notation:Node" xmi:id="_a-qTkE5ZEeaITJAJbUiGEA" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a-qTkU5ZEeaITJAJbUiGEA" x="9" y="-9"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_a-qTkk5ZEeaITJAJbUiGEA" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a-qTk05ZEeaITJAJbUiGEA" x="2" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_a-qTlE5ZEeaITJAJbUiGEA" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_a-qTlU5ZEeaITJAJbUiGEA" x="-2" y="12"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_a-psgU5ZEeaITJAJbUiGEA"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_a-psgk5ZEeaITJAJbUiGEA" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_a-psg05ZEeaITJAJbUiGEA" points="[0, 0, -2, -35]$[1, 33, -1, -2]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a-q6oE5ZEeaITJAJbUiGEA" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_a-q6oU5ZEeaITJAJbUiGEA" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_ZT4-kE5_Eea8mczBvLtT0g" type="4001" element="_ZTeu4E5_Eea8mczBvLtT0g" source="_Vw-RcE5_Eea8mczBvLtT0g" target="_VNDsEE5_Eea8mczBvLtT0g">
+            <children xmi:type="notation:Node" xmi:id="_ZT6MsE5_Eea8mczBvLtT0g" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b8ib0E5_Eea8mczBvLtT0g" x="-2" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_ZT6zwE5_Eea8mczBvLtT0g" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b8ib0U5_Eea8mczBvLtT0g" x="-11" y="-2"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_ZT7a0E5_Eea8mczBvLtT0g" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b8ib0k5_Eea8mczBvLtT0g" x="15"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_ZT4-kU5_Eea8mczBvLtT0g"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_ZT4-kk5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZT4-k05_Eea8mczBvLtT0g" points="[0, -2, 40, 1]$[0, -31, 40, -28]$[-40, -31, 0, -28]$[-40, -5, 0, -2]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZT8B4E5_Eea8mczBvLtT0g" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ZT8B4U5_Eea8mczBvLtT0g" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_vYNKUE5_Eea8mczBvLtT0g" type="4001" element="_vX5oUE5_Eea8mczBvLtT0g" source="_tTHGEE5_Eea8mczBvLtT0g" target="_tyHWQE5_Eea8mczBvLtT0g">
+            <children xmi:type="notation:Node" xmi:id="_vYNxYE5_Eea8mczBvLtT0g" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYNxYU5_Eea8mczBvLtT0g" x="-21" y="7"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_vYNxYk5_Eea8mczBvLtT0g" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYNxY05_Eea8mczBvLtT0g" x="2" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_vYNxZE5_Eea8mczBvLtT0g" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vYNxZU5_Eea8mczBvLtT0g" x="1" y="-10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_vYNKUU5_Eea8mczBvLtT0g"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_vYNKUk5_Eea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vYNKU05_Eea8mczBvLtT0g" points="[0, -1, -2, -40]$[32, 0, 30, -39]$[32, 39, 30, 0]$[2, 39, 0, 0]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYNxZk5_Eea8mczBvLtT0g" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vYNxZ05_Eea8mczBvLtT0g" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_AcOE8E6AEea8mczBvLtT0g" type="4001" element="_Ab6i8E6AEea8mczBvLtT0g" source="_9htboE5_Eea8mczBvLtT0g" target="_99L2sE5_Eea8mczBvLtT0g">
+            <children xmi:type="notation:Node" xmi:id="_AcOsAE6AEea8mczBvLtT0g" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AcOsAU6AEea8mczBvLtT0g" y="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_AcOsAk6AEea8mczBvLtT0g" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AcOsA06AEea8mczBvLtT0g" x="10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_AcOsBE6AEea8mczBvLtT0g" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AcOsBU6AEea8mczBvLtT0g" x="-6"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_AcOE8U6AEea8mczBvLtT0g"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_AcOE8k6AEea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AcOE806AEea8mczBvLtT0g" points="[-1, 0, 40, 2]$[0, 35, 41, 37]$[-41, 35, 0, 37]$[-41, -2, 0, 0]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AcOsBk6AEea8mczBvLtT0g" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AcOsB06AEea8mczBvLtT0g" id="(0.5,0.5)"/>
+          </edges>
+          <edges xmi:type="notation:Edge" xmi:id="_LXccYE6AEea8mczBvLtT0g" type="4001" element="_LXHFME6AEea8mczBvLtT0g" source="_J4bgsE6AEea8mczBvLtT0g" target="_JciO4E6AEea8mczBvLtT0g">
+            <children xmi:type="notation:Node" xmi:id="_LXdDcE6AEea8mczBvLtT0g" type="6001">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LXdDcU6AEea8mczBvLtT0g" x="-25" y="-7"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_LXdDck6AEea8mczBvLtT0g" type="6002">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LXdDc06AEea8mczBvLtT0g" x="-4" y="-10"/>
+            </children>
+            <children xmi:type="notation:Node" xmi:id="_LXdDdE6AEea8mczBvLtT0g" type="6003">
+              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LXdDdU6AEea8mczBvLtT0g" y="10"/>
+            </children>
+            <styles xmi:type="notation:ConnectorStyle" xmi:id="_LXccYU6AEea8mczBvLtT0g"/>
+            <styles xmi:type="notation:FontStyle" xmi:id="_LXccYk6AEea8mczBvLtT0g" fontName="Segoe UI" fontHeight="8"/>
+            <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LXccY06AEea8mczBvLtT0g" points="[-2, -1, -2, -45]$[-39, 0, -39, -44]$[-39, 44, -39, 0]$[-2, 43, -2, -1]"/>
+            <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LXdDdk6AEea8mczBvLtT0g" id="(0.5,0.5)"/>
+            <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LXdDd06AEea8mczBvLtT0g" id="(0.5,0.5)"/>
+          </edges>
+        </data>
+      </ownedAnnotationEntries>
+      <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_rKpE802TEeakleECKSbEyQ" name="subpackage1">
+        <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1"/>
+        <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1"/>
+        <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+        <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+        <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+        <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_rKpE9E2TEeakleECKSbEyQ" borderSize="1" borderSizeComputationExpression="1" backgroundColor="204,242,166">
+          <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@style"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']"/>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_rKpE9U2TEeakleECKSbEyQ" name="sp3">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp3"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp3"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_rKpE9k2TEeakleECKSbEyQ" name="C1" incomingEdges="_3CYcQE3FEeapKa6g4htD_Q" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp3/C1"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp3/C1"/>
+            <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+            <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+            <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_rKpE902TEeakleECKSbEyQ" borderColor="166,193,152" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <customFeatures>borderColor</customFeatures>
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_rKpE-E2TEeakleECKSbEyQ" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_rKpE-U2TEeakleECKSbEyQ" name="sp4">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp4"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp4"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_rKpE-k2TEeakleECKSbEyQ" name="C2" outgoingEdges="_3CYcQE3FEeapKa6g4htD_Q" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp4/C2"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp4/C2"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_rKpE-02TEeakleECKSbEyQ" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_rKpE_E2TEeakleECKSbEyQ" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_rKpE_U2TEeakleECKSbEyQ" name="sp5">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp5"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp5"/>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_rKpE_k2TEeakleECKSbEyQ" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_rKpE_02TEeakleECKSbEyQ" name="sp6">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp6"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp6"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_OFBDsE3BEeaLwfxB3LP_RQ" name="C4" incomingEdges="_4N5NIE3FEeapKa6g4htD_Q" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp6/C4"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp6/C4"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_OFBDsU3BEeaLwfxB3LP_RQ" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_rKpFAE2TEeakleECKSbEyQ" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_rKpFAU2TEeakleECKSbEyQ" name="sp7">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp7"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp7"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_NZsOwE3BEeaLwfxB3LP_RQ" name="C3" outgoingEdges="_4N5NIE3FEeapKa6g4htD_Q" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp7/C3"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp7/C3"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_NZs10E3BEeaLwfxB3LP_RQ" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_rKpFAk2TEeakleECKSbEyQ" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_9agSIE5YEeaITJAJbUiGEA" name="sp8">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp8"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp8"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_CMVCYE5ZEeaITJAJbUiGEA" name="C6" outgoingEdges="_F9HMYE5ZEeaITJAJbUiGEA" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp8/C6"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp8/C6"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_CMVCYU5ZEeaITJAJbUiGEA" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_9ag5ME5YEeaITJAJbUiGEA" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="__IQNYE5YEeaITJAJbUiGEA" name="sp9">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp9"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp9"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_Cq2KYE5ZEeaITJAJbUiGEA" name="C7" incomingEdges="_F9HMYE5ZEeaITJAJbUiGEA" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp9/C7"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp9/C7"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_Cq2KYU5ZEeaITJAJbUiGEA" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="__IQNYU5YEeaITJAJbUiGEA" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_NozFsE5ZEeaITJAJbUiGEA" name="sp10">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp10"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp10"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_Qx_rQE5ZEeaITJAJbUiGEA" name="C9" outgoingEdges="_a-SgIE5ZEeaITJAJbUiGEA" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp10/C9"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp10/C9"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_QyASUE5ZEeaITJAJbUiGEA" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_NozFsU5ZEeaITJAJbUiGEA" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_O3DBgE5ZEeaITJAJbUiGEA" name="sp11">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp11"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp11"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_QVeHUE5ZEeaITJAJbUiGEA" name="C8" incomingEdges="_a-SgIE5ZEeaITJAJbUiGEA" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp11/C8"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp11/C8"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_QVeuYE5ZEeaITJAJbUiGEA" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_O3DokE5ZEeaITJAJbUiGEA" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_SsbiYE5_Eea8mczBvLtT0g" name="sp12">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp12"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp12"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_VMvjAE5_Eea8mczBvLtT0g" name="C10" incomingEdges="_ZTeu4E5_Eea8mczBvLtT0g" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp12/C10"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp12/C10"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_VMwKEE5_Eea8mczBvLtT0g" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_SscwgE5_Eea8mczBvLtT0g" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_T_1rAE5_Eea8mczBvLtT0g" name="sp13">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp13"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp13"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_Vwko0E5_Eea8mczBvLtT0g" name="C11" outgoingEdges="_ZTeu4E5_Eea8mczBvLtT0g" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp13/C11"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp13/C11"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_Vwko0U5_Eea8mczBvLtT0g" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_T_2SEE5_Eea8mczBvLtT0g" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_qzlvoE5_Eea8mczBvLtT0g" name="sp14">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp14"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp14"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_tSxH0E5_Eea8mczBvLtT0g" name="C12" outgoingEdges="_vX5oUE5_Eea8mczBvLtT0g" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp14/C12"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp14/C12"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_tSxu4E5_Eea8mczBvLtT0g" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_qzlvoU5_Eea8mczBvLtT0g" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_ssmfsE5_Eea8mczBvLtT0g" name="sp15">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp15"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp15"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_tx1CYE5_Eea8mczBvLtT0g" name="C13" incomingEdges="_vX5oUE5_Eea8mczBvLtT0g" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp15/C13"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp15/C13"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_tx1CYU5_Eea8mczBvLtT0g" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_ssnGwE5_Eea8mczBvLtT0g" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_8DGvoE5_Eea8mczBvLtT0g" name="sp16">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp16"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp16"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_9847wE5_Eea8mczBvLtT0g" name="C15" incomingEdges="_Ab6i8E6AEea8mczBvLtT0g" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp16/C15"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp16/C15"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_985i0E5_Eea8mczBvLtT0g" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_8DHWsE5_Eea8mczBvLtT0g" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_9Drb0E5_Eea8mczBvLtT0g" name="sp17">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp17"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp17"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_9hVoME5_Eea8mczBvLtT0g" name="C14" outgoingEdges="_Ab6i8E6AEea8mczBvLtT0g" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp17/C14"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp17/C14"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_9hWPQE5_Eea8mczBvLtT0g" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_9DsC4E5_Eea8mczBvLtT0g" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_Hob0AE6AEea8mczBvLtT0g" name="sp18">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp18"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp18"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_J4GJgE6AEea8mczBvLtT0g" name="C17" outgoingEdges="_LXHFME6AEea8mczBvLtT0g" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp18/C17"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp18/C17"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_J4GJgU6AEea8mczBvLtT0g" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+          <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+          <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_HocbEE6AEea8mczBvLtT0g" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+        <ownedDiagramElements xmi:type="diagram:DNodeContainer" xmi:id="_I3WeME6AEea8mczBvLtT0g" name="sp19">
+          <target xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp19"/>
+          <semanticElements xmi:type="ecore:EPackage" href="3358.ecore#//subpackage1/sp19"/>
+          <ownedBorderedNodes xmi:type="diagram:DNode" xmi:id="_JcOs4E6AEea8mczBvLtT0g" name="C16" incomingEdges="_LXHFME6AEea8mczBvLtT0g" width="-1" height="-1" resizeKind="NSEW">
+            <target xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp19/C16"/>
+            <semanticElements xmi:type="ecore:EClass" href="3358.ecore#//subpackage1/sp19/C16"/>
+            <ownedStyle xmi:type="diagram:WorkspaceImage" xmi:id="_JcOs4U6AEea8mczBvLtT0g" labelPosition="node" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <description xmi:type="style:WorkspaceImageDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']/@style"/>
+            </ownedStyle>
+            <actualMapping xmi:type="description_1:NodeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']"/>
+          </ownedBorderedNodes>
+          <ownedStyle xmi:type="diagram:FlatContainerStyle" xmi:id="_I3WeMU6AEea8mczBvLtT0g" borderSize="1" borderSizeComputationExpression="1">
+            <description xmi:type="style:FlatContainerStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@style"/>
+          </ownedStyle>
+          <actualMapping xmi:type="description_1:ContainerMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']"/>
+        </ownedDiagramElements>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_3CYcQE3FEeapKa6g4htD_Q" sourceNode="_rKpE-k2TEeakleECKSbEyQ" targetNode="_rKpE9k2TEeakleECKSbEyQ">
+        <target xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp4/C2/ref2"/>
+        <semanticElements xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp4/C2/ref2"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_3CZDUE3FEeapKa6g4htD_Q" size="2" centered="Both">
+          <description xmi:type="style:EdgeStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']/@style"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_3CZDUU3FEeapKa6g4htD_Q"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_4N5NIE3FEeapKa6g4htD_Q" sourceNode="_NZsOwE3BEeaLwfxB3LP_RQ" targetNode="_OFBDsE3BEeaLwfxB3LP_RQ">
+        <target xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp7/C3/ref3"/>
+        <semanticElements xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp7/C3/ref3"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_4N5NIU3FEeapKa6g4htD_Q" size="2" centered="Both">
+          <description xmi:type="style:EdgeStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']/@style"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_4N5NIk3FEeapKa6g4htD_Q"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_F9HMYE5ZEeaITJAJbUiGEA" sourceNode="_CMVCYE5ZEeaITJAJbUiGEA" targetNode="_Cq2KYE5ZEeaITJAJbUiGEA">
+        <target xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp8/C6/ref4"/>
+        <semanticElements xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp8/C6/ref4"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_F9HMYU5ZEeaITJAJbUiGEA" size="2" centered="Both">
+          <description xmi:type="style:EdgeStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']/@style"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_F9HMYk5ZEeaITJAJbUiGEA"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_a-SgIE5ZEeaITJAJbUiGEA" sourceNode="_Qx_rQE5ZEeaITJAJbUiGEA" targetNode="_QVeHUE5ZEeaITJAJbUiGEA">
+        <target xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp10/C9/ref5"/>
+        <semanticElements xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp10/C9/ref5"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_a-SgIU5ZEeaITJAJbUiGEA" size="2" centered="Both">
+          <description xmi:type="style:EdgeStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']/@style"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_a-SgIk5ZEeaITJAJbUiGEA"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_ZTeu4E5_Eea8mczBvLtT0g" sourceNode="_Vwko0E5_Eea8mczBvLtT0g" targetNode="_VMvjAE5_Eea8mczBvLtT0g">
+        <target xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp13/C11/ref6"/>
+        <semanticElements xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp13/C11/ref6"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_ZTfV8E5_Eea8mczBvLtT0g" size="2" centered="Both">
+          <description xmi:type="style:EdgeStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']/@style"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_ZTfV8U5_Eea8mczBvLtT0g"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_vX5oUE5_Eea8mczBvLtT0g" sourceNode="_tSxH0E5_Eea8mczBvLtT0g" targetNode="_tx1CYE5_Eea8mczBvLtT0g">
+        <target xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp14/C12/ref7"/>
+        <semanticElements xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp14/C12/ref7"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_vX5oUU5_Eea8mczBvLtT0g" size="2" centered="Both">
+          <description xmi:type="style:EdgeStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']/@style"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_vX5oUk5_Eea8mczBvLtT0g"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_Ab6i8E6AEea8mczBvLtT0g" sourceNode="_9hVoME5_Eea8mczBvLtT0g" targetNode="_9847wE5_Eea8mczBvLtT0g">
+        <target xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp17/C14/ref8"/>
+        <semanticElements xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp17/C14/ref8"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_Ab6i8U6AEea8mczBvLtT0g" size="2" centered="Both">
+          <description xmi:type="style:EdgeStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']/@style"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_Ab6i8k6AEea8mczBvLtT0g"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']"/>
+      </ownedDiagramElements>
+      <ownedDiagramElements xmi:type="diagram:DEdge" xmi:id="_LXHFME6AEea8mczBvLtT0g" sourceNode="_J4GJgE6AEea8mczBvLtT0g" targetNode="_JcOs4E6AEea8mczBvLtT0g">
+        <target xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp18/C17/ref9"/>
+        <semanticElements xmi:type="ecore:EReference" href="3358.ecore#//subpackage1/sp18/C17/ref9"/>
+        <ownedStyle xmi:type="diagram:EdgeStyle" xmi:id="_LXHFMU6AEea8mczBvLtT0g" size="2" centered="Both">
+          <description xmi:type="style:EdgeStyleDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']/@style"/>
+          <centerLabelStyle xmi:type="diagram:CenterLabelStyle" xmi:id="_LXHFMk6AEea8mczBvLtT0g"/>
+        </ownedStyle>
+        <actualMapping xmi:type="description_1:EdgeMapping" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']"/>
+      </ownedDiagramElements>
+      <description xmi:type="description_1:DiagramDescription" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']"/>
+      <filterVariableHistory xmi:type="diagram:FilterVariableHistory" xmi:id="_rKpFBk2TEeakleECKSbEyQ"/>
+      <activatedLayers xmi:type="description_1:Layer" href="3358.odesign#//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer"/>
+      <target xmi:type="ecore:EPackage" href="3358.ecore#/"/>
+    </ownedRepresentations>
+  </ownedViews>
+</viewpoint:DAnalysis>
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/3358.ecore b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/3358.ecore
new file mode 100644
index 0000000..8498652
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/3358.ecore
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="package" nsURI="package" nsPrefix="package">
+  <eSubpackages name="subpackage1" nsURI="subpackage1" nsPrefix="subpackage1">
+    <eSubpackages name="sp3">
+      <eClassifiers xsi:type="ecore:EClass" name="C1"/>
+    </eSubpackages>
+    <eSubpackages name="sp4">
+      <eClassifiers xsi:type="ecore:EClass" name="C2">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ref2" eType="#//subpackage1/sp3/C1"/>
+      </eClassifiers>
+    </eSubpackages>
+    <eSubpackages name="sp5"/>
+    <eSubpackages name="sp6">
+      <eClassifiers xsi:type="ecore:EClass" name="C4"/>
+    </eSubpackages>
+    <eSubpackages name="sp7">
+      <eClassifiers xsi:type="ecore:EClass" name="C3">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ref3" eType="#//subpackage1/sp6/C4"/>
+      </eClassifiers>
+    </eSubpackages>
+    <eSubpackages name="sp8">
+      <eClassifiers xsi:type="ecore:EClass" name="C6">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ref4" eType="#//subpackage1/sp9/C7"/>
+      </eClassifiers>
+    </eSubpackages>
+    <eSubpackages name="sp9">
+      <eClassifiers xsi:type="ecore:EClass" name="C7"/>
+    </eSubpackages>
+    <eSubpackages name="sp10">
+      <eClassifiers xsi:type="ecore:EClass" name="C9">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ref5" eType="#//subpackage1/sp11/C8"/>
+      </eClassifiers>
+    </eSubpackages>
+    <eSubpackages name="sp11">
+      <eClassifiers xsi:type="ecore:EClass" name="C8"/>
+    </eSubpackages>
+    <eSubpackages name="sp12">
+      <eClassifiers xsi:type="ecore:EClass" name="C10"/>
+    </eSubpackages>
+    <eSubpackages name="sp13">
+      <eClassifiers xsi:type="ecore:EClass" name="C11">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ref6" eType="#//subpackage1/sp12/C10"/>
+      </eClassifiers>
+    </eSubpackages>
+    <eSubpackages name="sp14">
+      <eClassifiers xsi:type="ecore:EClass" name="C12">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ref7" eType="#//subpackage1/sp15/C13"/>
+      </eClassifiers>
+    </eSubpackages>
+    <eSubpackages name="sp15">
+      <eClassifiers xsi:type="ecore:EClass" name="C13"/>
+    </eSubpackages>
+    <eSubpackages name="sp16">
+      <eClassifiers xsi:type="ecore:EClass" name="C15"/>
+    </eSubpackages>
+    <eSubpackages name="sp17">
+      <eClassifiers xsi:type="ecore:EClass" name="C14">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ref8" eType="#//subpackage1/sp16/C15"/>
+      </eClassifiers>
+    </eSubpackages>
+    <eSubpackages name="sp18">
+      <eClassifiers xsi:type="ecore:EClass" name="C17">
+        <eStructuralFeatures xsi:type="ecore:EReference" name="ref9" eType="#//subpackage1/sp19/C16"/>
+      </eClassifiers>
+    </eSubpackages>
+    <eSubpackages name="sp19">
+      <eClassifiers xsi:type="ecore:EClass" name="C16"/>
+    </eSubpackages>
+  </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/3358.odesign b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/3358.odesign
new file mode 100644
index 0000000..f283c92
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/3358.odesign
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<description:Group xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:description="http://www.eclipse.org/sirius/description/1.1.0" xmlns:description_1="http://www.eclipse.org/sirius/diagram/description/1.1.0" xmlns:style="http://www.eclipse.org/sirius/diagram/description/style/1.1.0" xmlns:tool="http://www.eclipse.org/sirius/diagram/description/tool/1.1.0" xmlns:tool_1="http://www.eclipse.org/sirius/description/tool/1.1.0" name="SmallBorderedNodes" version="11.0.0.201601261200">
+  <ownedViewpoints name="3358" modelFileExtension="*.ecore">
+    <ownedRepresentations xsi:type="description_1:DiagramDescription" name="diagram_3358" domainClass="ecore.EPackage" enablePopupBars="true">
+      <metamodel href="http://www.eclipse.org/emf/2002/Ecore#/"/>
+      <defaultLayer name="Default">
+        <edgeMappings name="EReference" sourceMapping="//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass'] //@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']" targetMapping="//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass'] //@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']" targetFinderExpression="aql:self.eType" sourceFinderExpression="aql:self.eContainer()" domainClass="ecore.EReference" useDomainElement="true">
+          <style sizeComputationExpression="2" endsCentering="Both">
+            <strokeColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='gray']"/>
+            <centerLabelStyleDescription>
+              <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </centerLabelStyleDescription>
+          </style>
+        </edgeMappings>
+        <containerMappings name="container" semanticCandidatesExpression="aql:self.eContents()->first()" domainClass="ecore.EPackage">
+          <subContainerMappings name="SubPackage" semanticCandidatesExpression="aql:self.eContents()" domainClass="ecore.EPackage">
+            <borderedNodeMappings name="EClass" semanticCandidatesExpression="feature:eContents" domainClass="ecore.EClass">
+              <style xsi:type="style:WorkspaceImageDescription" sizeComputationExpression="-1" labelPosition="node" resizeKind="NSEW" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+                <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+                <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+              </style>
+            </borderedNodeMappings>
+            <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1">
+              <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='white']"/>
+              <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_gray']"/>
+            </style>
+          </subContainerMappings>
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1">
+            <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_gray']"/>
+          </style>
+        </containerMappings>
+        <containerMappings name="SubPackage" semanticCandidatesExpression="aql:self.eContents()->excluding(self.eContents()->first())" domainClass="ecore.EPackage">
+          <borderedNodeMappings name="EClass" semanticCandidatesExpression="aql:self.eContents()" domainClass="ecore.EClass">
+            <style xsi:type="style:WorkspaceImageDescription" sizeComputationExpression="-1" labelPosition="node" resizeKind="NSEW" workspacePath="/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png">
+              <borderColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+              <labelColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='black']"/>
+            </style>
+          </borderedNodeMappings>
+          <style xsi:type="style:FlatContainerStyleDescription" borderSizeComputationExpression="1">
+            <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='white']"/>
+            <foregroundColor xsi:type="description:SystemColor" href="environment:/viewpoint#//@systemColors/@entries[name='light_gray']"/>
+          </style>
+        </containerMappings>
+        <toolSections name="Tools">
+          <ownedTools xsi:type="tool:ContainerCreationDescription" name="CreatePackage" containerMappings="//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container'] //@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='SubPackage'] //@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']">
+            <variable name="container"/>
+            <viewVariable name="containerView"/>
+            <initialOperation>
+              <firstModelOperations xsi:type="tool_1:CreateInstance" typeName="ecore.EPackage" referenceName="eSubpackages">
+                <subModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:instance">
+                  <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="aql:'sp'.concat((self.eResource().getContents()->first().eAllContents()->filter(ecore::EPackage)->size()+1).toString())"/>
+                </subModelOperations>
+              </firstModelOperations>
+            </initialOperation>
+          </ownedTools>
+          <ownedTools xsi:type="tool:NodeCreationDescription" name="CreateEClass" nodeMappings="//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass'] //@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@containerMappings[name='container']/@subContainerMappings[name='SubPackage']/@borderedNodeMappings[name='EClass']">
+            <variable name="container"/>
+            <viewVariable name="containerView"/>
+            <initialOperation>
+              <firstModelOperations xsi:type="tool_1:CreateInstance" typeName="ecore.EClass" referenceName="eClassifiers">
+                <subModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:instance">
+                  <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="aql:'C'.concat((self.eResource().getContents()->first().eAllContents()->filter(ecore::EClass)->size()+1).toString())"/>
+                </subModelOperations>
+              </firstModelOperations>
+            </initialOperation>
+          </ownedTools>
+          <ownedTools xsi:type="tool:EdgeCreationDescription" name="Creation Edge" edgeMappings="//@ownedViewpoints[name='3358']/@ownedRepresentations[name='diagram_3358']/@defaultLayer/@edgeMappings[name='EReference']">
+            <sourceVariable name="source"/>
+            <targetVariable name="target"/>
+            <sourceViewVariable name="sourceView"/>
+            <targetViewVariable name="targetView"/>
+            <initialOperation>
+              <firstModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:source">
+                <subModelOperations xsi:type="tool_1:CreateInstance" typeName="ecore.EReference" referenceName="eReferences">
+                  <subModelOperations xsi:type="tool_1:ChangeContext" browseExpression="var:instance">
+                    <subModelOperations xsi:type="tool_1:SetValue" featureName="eType" valueExpression="var:target"/>
+                    <subModelOperations xsi:type="tool_1:SetValue" featureName="name" valueExpression="aql:'ref'.concat((self.eResource().getContents()->first().eAllContents()->filter(ecore::EReference)->size()+1).toString())"/>
+                  </subModelOperations>
+                </subModelOperations>
+              </firstModelOperations>
+            </initialOperation>
+          </ownedTools>
+        </toolSections>
+      </defaultLayer>
+    </ownedRepresentations>
+  </ownedViewpoints>
+</description:Group>
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png
new file mode 100644
index 0000000..36c440f
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/data/unit/edgeSelection/smallImage.png
Binary files differ
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/EdgeSelectionTest.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/EdgeSelectionTest.java
new file mode 100644
index 0000000..0c16a28
--- /dev/null
+++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/EdgeSelectionTest.java
@@ -0,0 +1,1099 @@
+/*******************************************************************************
+ * Copyright (c) 2016 THALES GLOBAL SERVICES.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.sirius.tests.swtbot;
+
+import org.eclipse.draw2d.geometry.Point;
+import org.eclipse.draw2d.geometry.Rectangle;
+import org.eclipse.sirius.diagram.DDiagram;
+import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramEdgeEditPart;
+import org.eclipse.sirius.diagram.ui.internal.edit.parts.DNode4EditPart;
+import org.eclipse.sirius.tests.swtbot.support.api.AbstractSiriusSwtBotGefTestCase;
+import org.eclipse.sirius.tests.swtbot.support.api.business.UIDiagramRepresentation.ZoomLevel;
+import org.eclipse.sirius.tests.swtbot.support.api.business.UILocalSession;
+import org.eclipse.sirius.tests.swtbot.support.api.business.UIResource;
+import org.eclipse.sirius.tests.swtbot.support.api.condition.CheckSelectedCondition;
+import org.eclipse.sirius.tests.swtbot.support.api.editor.SWTBotSiriusDiagramEditor;
+import org.eclipse.swtbot.eclipse.gef.finder.widgets.SWTBotGefEditPart;
+
+/**
+ * Tests the method
+ * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+ * . The returned edit part can be either the edge one or the source and target
+ * ones. It depends on the position of the mouse. If the mouse is over the node
+ * expanded until 20px or over the minimum selection zone around a small node
+ * and the edge box has a big enough selectable zone, then the node's part must
+ * be return. Otherwise, the edge part must be returned.
+ * 
+ * The location given by {@link SWTBotSiriusDiagramEditor} are integer. The
+ * method tested uses precise. So when testing the selection limits between edge
+ * and nodes, it is possible to have a -1 or +1 regarding the case.
+ * 
+ * @author pguilet
+ */
+public class EdgeSelectionTest extends AbstractSiriusSwtBotGefTestCase {
+
+    /**
+     * Number of pixels to remove or add from a mouse position to click on the
+     * last pixel of a node with a computed expanded zone in the side the edge
+     * is attached to it.
+     */
+    private static final int LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE = 7;
+
+    /**
+     * Number of pixels to remove or add from a mouse position to click on the
+     * first pixel of the edge after the last pixel of a node with a computed
+     * expanded zone.
+     */
+    private static final int LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE = 8;
+
+    private static final String FILE_DIR = "/";
+
+    private static final String VIEWPOINT_NAME = "3358";
+
+    private static final String DIAGRAM_INSTANCE_NAME = "diagram_3358";
+
+    private static final String DIAGRAM_DESCRIPTION = "diagram_3358";
+
+    private static final String MODEL_FILE = "3358.ecore";
+
+    private static final String SESSION_FILE = "3358.aird";
+
+    private static final String VSM_FILE = "3358.odesign";
+
+    private static final String DATA_UNIT_DIR = "data/unit/edgeSelection/";
+
+    private SWTBotSiriusDiagramEditor editor;
+
+    private UIResource sessionAirdResource;
+
+    private UILocalSession localSession;
+
+    @Override
+    protected void onSetUpBeforeClosingWelcomePage() throws Exception {
+        copyFileToTestProject(Activator.PLUGIN_ID, DATA_UNIT_DIR, MODEL_FILE, SESSION_FILE, VSM_FILE);
+    }
+
+    @Override
+    protected void onSetUpAfterOpeningDesignerPerspective() throws Exception {
+        sessionAirdResource = new UIResource(designerProject, FILE_DIR, SESSION_FILE);
+        localSession = designerPerspective.openSessionFromFile(sessionAirdResource, true);
+
+    }
+
+    private void openDiagram(String descriptionName, String instanceName, ZoomLevel zoomLevel) {
+        editor = (SWTBotSiriusDiagramEditor) openRepresentation(localSession.getOpenedSession(), descriptionName, instanceName, DDiagram.class);
+        editor.zoom(zoomLevel);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the right. The edge is displayed horizontally. The edge
+     * has the minimum size of 20px to be considered as selectable whereas we
+     * have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the last pixel of the expanded zone over the
+     * edge that is attached to the source node on the left side. The returned
+     * part must be the source node.
+     */
+    public void testSimpleCaseHorizontallyNodeSelectionEdgeSelectableZonePresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C2");
+        Point sourceNodePartLocation = editor.getLocation(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, sourceNodePart.part().getParent());
+        editor.click(new Point(sourceNodePartLocation.x - LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE, sourceNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the right. The edge is displayed horizontally. The edge
+     * has the minimum size of 20px to be considered as selectable whereas we
+     * have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the first pixel after the last pixel of the
+     * expanded node zone over the edge. The returned part must be the edge one.
+     */
+    public void testSimpleCaseHorizontallyEdgeSelectionEdgeSelectableZonePresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C2");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) sourceNodePart.part().getParent()).getSourceConnections().get(0);
+        Point sourceNodePartLocation = editor.getLocation(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(sourceNodePartLocation.x - LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE, sourceNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the right. The edge is displayed horizontally. The edge
+     * has not the minimum size of 20px to be considered as selectable whereas
+     * we have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the last pixel of the source node figure over
+     * the edge attached to it on the left side. The returned part must be the
+     * source node.
+     */
+    public void testSimpleCaseHorizontallyNodeSelectionEdgeSelectableZoneNotPresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C3");
+        Point sourceNodePartLocation = editor.getLocation(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, sourceNodePart.part().getParent());
+        // we add +1 because the absolute location has a number behind ','
+        editor.click(new Point(sourceNodePartLocation.x + 1, sourceNodePartLocation.y + 1));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the right. The edge is displayed horizontally. The edge
+     * has not the minimum size of 20px to be considered as selectable whereas
+     * we have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the first pixel after the last pixel of the
+     * source node's left side. The returned part must be the edge one because
+     * we don't take in consideration the expanded nodes size in this situation
+     * to have a selectable edge.
+     */
+    public void testSimpleCaseHorizontallyEdgeSelectionEdgeSelectableZoneNotPresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C3");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) sourceNodePart.part().getParent()).getSourceConnections().get(0);
+        Point sourceNodePartLocation = editor.getLocation(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(sourceNodePartLocation.x - 1, sourceNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case style *-----* : where the nodes are images of 5px.
+     * Source node is on the right. The edge is displayed vertically. The edge
+     * has the minimum size of 20px to be considered as selectable whereas we
+     * have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the last pixel of the expanded zone over the
+     * edge that is attached to the target node on the right side. The returned
+     * part must be the target node.
+     */
+    public void testSimpleCaseHorizontallyTargetNodeSelectionEdgeSelectableZonePresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C1");
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, targetNodePart.part().getParent());
+        editor.click(new Point((targetNodePartLocation.x + targetNodePartLocation.width) + LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE, targetNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the right. The edge is displayed horizontally. The edge
+     * has the minimum size of 20px to be considered as selectable whereas we
+     * have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the first pixel after the last pixel of the
+     * expanded target node zone over the edge on the right side of the node.
+     * The returned part must be the edge one.
+     */
+    public void testSimpleCaseHorizontallyEdgeSelectionOnTargetNodeEdgeSelectableZonePresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C1");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) targetNodePart.part().getParent()).getTargetConnections().get(0);
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point((targetNodePartLocation.x + targetNodePartLocation.width) + LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE, targetNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the right. The edge is displayed horizontally. The edge
+     * has not the minimum size of 20px to be considered as selectable whereas
+     * we have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the last pixel of the target node figure over
+     * the edge attached to it on the right side. The returned part must be the
+     * target node.
+     */
+    public void testSimpleCaseHorizontallyTargetNodeSelectionEdgeSelectableZoneNotPresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C4");
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, targetNodePart.part().getParent());
+        editor.click(new Point((targetNodePartLocation.x + targetNodePartLocation.width) - 1, targetNodePartLocation.y + 1));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the right. The edge is displayed horizontally. The edge
+     * has not the minimum size of 20px to be considered as selectable whereas
+     * we have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the first pixel after the last pixel of the
+     * target node's right side. The returned part must be the edge one because
+     * we don't take in consideration the expanded nodes size in this situation
+     * to have a selectable edge.
+     */
+    public void testSimpleCaseHorizontallyEdgeSelectionOnTargetNodeEdgeSelectableZoneNotPresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C4");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) targetNodePart.part().getParent()).getTargetConnections().get(0);
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point((targetNodePartLocation.x + targetNodePartLocation.width) + 1, targetNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the top. The edge is displayed vertically. The edge has
+     * the minimum size of 20px to be considered as selectable whereas we have
+     * virtually expanded the node size from 5px to 20px to compute this area.
+     * Zoom is 75%, edge is in a container with scroll and main screen is also
+     * scrolled. We click on the last pixel of the expanded zone over the edge
+     * that is attached to the source node on the bottom side. The returned part
+     * must be the source node.
+     */
+    public void testSimpleCaseVerticallyNodeSelectionEdgeSelectableZonePresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C6");
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, sourceNodePart.part().getParent());
+        editor.click(new Point(sourceNodePartLocation.x, (sourceNodePartLocation.y + sourceNodePartLocation.height) + LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the top. The edge is displayed vertically. The edge has
+     * the minimum size of 20px to be considered as selectable whereas we have
+     * virtually expanded the node size from 5px to 20px to compute this area.
+     * Zoom is 75%, edge is in a container with scroll and main screen is also
+     * scrolled. We click on the first pixel after the last pixel of the
+     * expanded node zone over the edge at the bottom side. The returned part
+     * must be the edge one.
+     */
+    public void testSimpleCaseVerticallyEdgeSelectionEdgeSelectableZonePresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C6");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) sourceNodePart.part().getParent()).getSourceConnections().get(0);
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(sourceNodePartLocation.x, (sourceNodePartLocation.y + sourceNodePartLocation.height) + LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the top. The edge is displayed vertically. The edge has
+     * not the minimum size of 20px to be considered as selectable whereas we
+     * have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the last pixel of the source node figure over
+     * the edge attached to it on the bottom side. The returned part must be the
+     * source node.
+     */
+    public void testSimpleCaseVerticallyNodeSelectionEdgeSelectableZoneNotPresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C6");
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, sourceNodePart.part().getParent());
+        // we add +1 because the absolute location has a number behind ','
+        editor.click(new Point(sourceNodePartLocation.x + 1, (sourceNodePartLocation.y + sourceNodePartLocation.height)));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the top. The edge is displayed vertically. The edge has
+     * not the minimum size of 20px to be considered as selectable whereas we
+     * have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the first pixel after the last pixel of the
+     * source node's bottom side. The returned part must be the edge one because
+     * we don't take in consideration the expanded nodes size in this situation
+     * to have a selectable edge.
+     */
+    public void testSimpleCaseVerticallyEdgeSelectionEdgeSelectableZoneNotPresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C9");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) sourceNodePart.part().getParent()).getSourceConnections().get(0);
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(sourceNodePartLocation.x, (sourceNodePartLocation.y + sourceNodePartLocation.height) + 1));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the top. The edge is displayed vertically. The edge has
+     * the minimum size of 20px to be considered as selectable whereas we have
+     * virtually expanded the node size from 5px to 20px to compute this area.
+     * Zoom is 75%, edge is in a container with scroll and main screen is also
+     * scrolled. We click on the last pixel of the expanded zone over the edge
+     * that is attached to the target node on the top side. The returned part
+     * must be the target node.
+     */
+    public void testSimpleCaseVerticallyTargetNodeSelectionEdgeSelectableZonePresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C7");
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, targetNodePart.part().getParent());
+        editor.click(new Point(targetNodePartLocation.x, targetNodePartLocation.y - LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the top. The edge is displayed vertically. The edge has
+     * the minimum size of 20px to be considered as selectable whereas we have
+     * virtually expanded the node size from 5px to 20px to compute this area.
+     * Zoom is 75%, edge is in a container with scroll and main screen is also
+     * scrolled. We click on the first pixel after the last pixel of the
+     * expanded target node zone over the edge on the top side of the node. The
+     * returned part must be the edge one.
+     */
+    public void testSimpleCaseVerticallyEdgeSelectionOnTargetNodeEdgeSelectableZonePresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C7");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) targetNodePart.part().getParent()).getTargetConnections().get(0);
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(targetNodePartLocation.x, targetNodePartLocation.y - LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the top. The edge is displayed vertically. The edge has
+     * not the minimum size of 20px to be considered as selectable whereas we
+     * have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the last pixel of the target node figure over
+     * the edge attached to it on the top side. The returned part must be the
+     * target node.
+     */
+    public void testSimpleCaseVerticallyTargetNodeSelectionEdgeSelectableZoneNotPresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C8");
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, targetNodePart.part().getParent());
+        // we add +1 because the absolute location has a number behind ','
+        editor.click(new Point(targetNodePartLocation.x + 1, targetNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * Source node is on the top. The edge is displayed vertically. The edge has
+     * not the minimum size of 20px to be considered as selectable whereas we
+     * have virtually expanded the node size from 5px to 20px to compute this
+     * area. Zoom is 75%, edge is in a container with scroll and main screen is
+     * also scrolled. We click on the first pixel after the last pixel of the
+     * target node's at top side position. The returned part must be the edge
+     * one because we don't take in consideration the expanded nodes size in
+     * this situation to have a selectable edge.
+     */
+    public void testSimpleCaseVerticallyEdgeSelectionOnTargetNodeEdgeSelectableZoneNotPresent() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C8");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) targetNodePart.part().getParent()).getTargetConnections().get(0);
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(targetNodePartLocation.x, targetNodePartLocation.y - 1));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is vertically aligned to the source one and the top of
+     * the edge is oriented to the right. Nodes are images of 5px. Source node
+     * is on the top. The edge is displayed vertically. Zoom is 75%, edge is in
+     * a container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the right position of the union box of
+     * the two nodes.
+     * 
+     * We click on the last pixel of the expanded zone over the edge that is
+     * attached to the target node on the right side. The returned part must be
+     * the target node.
+     */
+    public void testTargetNodeSelectionWithExtraSelectableZoneAtRightPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C13");
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, targetNodePart.part().getParent());
+        editor.click(new Point(targetNodePartLocation.x + targetNodePartLocation.width + LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE, targetNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is vertically aligned to the source one and the top of
+     * the edge is oriented to the right. Nodes are images of 5px. Source node
+     * is on the top. The edge is displayed vertically. Zoom is 75%, edge is in
+     * a container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the right position of the union box of
+     * the two nodes.
+     * 
+     * We click on the last pixel of the expanded zone over the edge that is
+     * attached to the source node on the right side. The returned part must be
+     * the source node.
+     */
+    public void testSourceNodeSelectionWithExtraSelectableZoneAtRightPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C12");
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, sourceNodePart.part().getParent());
+
+        editor.click(new Point(sourceNodePartLocation.x + sourceNodePartLocation.width + LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE, sourceNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is vertically aligned to the source one and the top of
+     * the edge is oriented to the right. Nodes are images of 5px. Source node
+     * is on the top. The edge is displayed vertically. Zoom is 75%, edge is in
+     * a container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the right position of the union box of
+     * the two nodes.
+     * 
+     * We click on the pixel after the last pixel of the expanded zone over the
+     * edge that is attached to the source node on the right side. The returned
+     * part must be the edge.
+     */
+    public void testEdgeSelectionNextToSourceNodeWithExtraSelectableZoneAtRightPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C12");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) sourceNodePart.part().getParent()).getSourceConnections().get(0);
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        // we add +1 because the absolute location has a number behind ','
+        editor.click(new Point(sourceNodePartLocation.x + sourceNodePartLocation.width + LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE, sourceNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is vertically aligned to the source one and the top of
+     * the edge is oriented to the right. Nodes are images of 5px. Source node
+     * is on the top. The edge is displayed vertically. Zoom is 75%, edge is in
+     * a container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the right position of the union box of
+     * the two nodes.
+     * 
+     * We click on the pixel after the last pixel of the expanded zone over the
+     * edge that is attached to the target node on the right side. The returned
+     * part must be the edge.
+     */
+    public void testEdgeSelectionNextToTargetNodeWithExtraSelectableZoneAtRightPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C13");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) targetNodePart.part().getParent()).getTargetConnections().get(0);
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(targetNodePartLocation.x + targetNodePartLocation.width + LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE, targetNodePartLocation.y - 1));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is vertically aligned to the source one and the top of
+     * the edge is oriented to the left. Nodes are images of 5px. Source node is
+     * on the top. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the left position of the union box of
+     * the two nodes.
+     * 
+     * We click on the last pixel of the expanded zone over the edge that is
+     * attached to the target node on the left side. The returned part must be
+     * the target node.
+     */
+    public void testTargetNodeSelectionWithExtraSelectableZoneAtLeftPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C16");
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, targetNodePart.part().getParent());
+        editor.click(new Point(targetNodePartLocation.x - LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE, targetNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is vertically aligned to the source one and the top of
+     * the edge is oriented to the left. Nodes are images of 5px. Source node is
+     * on the top. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the left position of the union box of
+     * the two nodes.
+     * 
+     * We click on the last pixel of the expanded zone over the edge that is
+     * attached to the source node on the left side. The returned part must be
+     * the source node.
+     */
+    public void testSourceNodeSelectionWithExtraSelectableZoneAtLeftPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C17");
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, sourceNodePart.part().getParent());
+
+        editor.click(new Point(sourceNodePartLocation.x - LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE, sourceNodePartLocation.y + 2));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is vertically aligned to the source one and the top of
+     * the edge is oriented to the left. Nodes are images of 5px. Source node is
+     * on the top. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the left position of the union box of
+     * the two nodes.
+     * 
+     * We click on the pixel after the last pixel of the expanded zone over the
+     * edge that is attached to the source node on the left side. The returned
+     * part must be the edge.
+     */
+    public void testEdgeSelectionNextToSourceNodeWithExtraSelectableZoneAtLeftPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C17");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) sourceNodePart.part().getParent()).getSourceConnections().get(0);
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(sourceNodePartLocation.x - LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE, sourceNodePartLocation.y));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is vertically aligned to the source one and the top of
+     * the edge is oriented to the left. Nodes are images of 5px. Source node is
+     * on the top. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the left position of the union box of
+     * the two nodes.
+     * 
+     * We click on the pixel after the last pixel of the expanded zone over the
+     * edge that is attached to the target node on the left side. The returned
+     * part must be the edge.
+     */
+    public void testEdgeSelectionNextToTargetNodeWithExtraSelectableZoneAtLeftPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C16");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) targetNodePart.part().getParent()).getTargetConnections().get(0);
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(targetNodePartLocation.x - LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE, targetNodePartLocation.y - 1));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is horizontally aligned to the source one and the top of
+     * the edge is oriented to the top. Nodes are images of 5px. Source node is
+     * on the right. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the top position of the union box of the
+     * two nodes.
+     * 
+     * We click on the last pixel of the expanded zone over the edge that is
+     * attached to the target node on the top side. The returned part must be
+     * the target node.
+     */
+    public void testTargetNodeSelectionWithExtraSelectableZoneAtTopPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C10");
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, targetNodePart.part().getParent());
+        editor.click(new Point(targetNodePartLocation.x, targetNodePartLocation.y - LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is horizontally aligned to the source one and the top of
+     * the edge is oriented to the top. Nodes are images of 5px. Source node is
+     * on the right. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the top position of the union box of the
+     * two nodes.
+     * 
+     * We click on the last pixel of the expanded zone over the edge that is
+     * attached to the source node on the down side. The returned part must be
+     * the source node.
+     */
+    public void testSourceNodeSelectionWithExtraSelectableZoneAtTopPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C11");
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, sourceNodePart.part().getParent());
+        editor.click(new Point(sourceNodePartLocation.x, sourceNodePartLocation.y - LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is horizontally aligned to the source one and the top of
+     * the edge is oriented to the top. Nodes are images of 5px. Source node is
+     * on the right. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the top position of the union box of the
+     * two nodes.
+     * 
+     * We click on the pixel after the last pixel of the expanded zone over the
+     * edge that is attached to the source node on the top side. The returned
+     * part must be the edge.
+     */
+    public void testEdgeSelectionNextToSourceNodeWithExtraSelectableZoneAtTopPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C11");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) sourceNodePart.part().getParent()).getSourceConnections().get(0);
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+
+        editor.click(new Point(sourceNodePartLocation.x, sourceNodePartLocation.y - LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is horizontally aligned to the source one and the top of
+     * the edge is oriented to the top. Nodes are images of 5px. Source node is
+     * on the right. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the top position of the union box of the
+     * two nodes.
+     * 
+     * We click on the pixel after the last pixel of the expanded zone over the
+     * edge that is attached to the target node on the down side. The returned
+     * part must be the edge.
+     */
+    public void testEdgeSelectionNextToTargetNodeWithExtraSelectableZoneAtTopPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C10");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) targetNodePart.part().getParent()).getTargetConnections().get(0);
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(targetNodePartLocation.x, targetNodePartLocation.y - LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is horizontally aligned to the source one and the top of
+     * the edge is oriented to the top. Nodes are images of 5px. Source node is
+     * on the right. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the bottom position of the union box of
+     * the two nodes.
+     * 
+     * We click on the last pixel of the expanded zone over the edge that is
+     * attached to the target node on the bottom side. The returned part must be
+     * the target node.
+     */
+    public void testTargetNodeSelectionWithExtraSelectableZoneAtBottomPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C15");
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, targetNodePart.part().getParent());
+        editor.click(new Point(targetNodePartLocation.x, targetNodePartLocation.y + targetNodePartLocation.height + LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is horizontally aligned to the source one and the top of
+     * the edge is oriented to the top. Nodes are images of 5px. Source node is
+     * on the right. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the bottom position of the union box of
+     * the two nodes.
+     * 
+     * We click on the last pixel of the expanded zone over the edge that is
+     * attached to the source node on the bottom side. The returned part must be
+     * the source node.
+     */
+    public void testSourceNodeSelectionWithExtraSelectableZoneAtBottomPosition() {
+
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C14");
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, sourceNodePart.part().getParent());
+        editor.click(new Point(sourceNodePartLocation.x, sourceNodePartLocation.y + sourceNodePartLocation.height + LENGTH_TO_REACH_LAST_PIXEL_OF_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is horizontally aligned to the source one and the top of
+     * the edge is oriented to the top. Nodes are images of 5px. Source node is
+     * on the right. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the bottom position of the union box of
+     * the two nodes.
+     * 
+     * We click on the pixel after the last pixel of the expanded zone over the
+     * edge that is attached to the source node on the bottom side. The returned
+     * part must be the edge.
+     */
+    public void testEdgeSelectionNextToSourceNodeWithExtraSelectableZoneAtBottomPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C14");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) sourceNodePart.part().getParent()).getSourceConnections().get(0);
+        Rectangle sourceNodePartLocation = editor.getBounds(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+
+        editor.click(new Point(sourceNodePartLocation.x + 2, sourceNodePartLocation.y + sourceNodePartLocation.height + LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with the following case : ._|¨|_.
+     * 
+     * The target node is horizontally aligned to the source one and the top of
+     * the edge is oriented to the top. Nodes are images of 5px. Source node is
+     * on the right. The edge is displayed vertically. Zoom is 75%, edge is in a
+     * container with scroll and main screen is also scrolled.
+     * 
+     * The edge has not the minimum size of 20px to be considered as selectable
+     * whereas we have virtually expanded the node size from 5px to 20px to
+     * compute this area.
+     * 
+     * But we have a selectable area at the bottom position of the union box of
+     * the two nodes.
+     * 
+     * We click on the pixel after the last pixel of the expanded zone over the
+     * edge that is attached to the target node on the bottom side. The returned
+     * part must be the edge.
+     */
+    public void testEdgeSelectionNextToTargetNodeWithExtraSelectableZoneAtBottomPosition() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_75);
+
+        SWTBotGefEditPart targetNodePart = editor.getEditPart("C15");
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) targetNodePart.part().getParent()).getTargetConnections().get(0);
+        Rectangle targetNodePartLocation = editor.getBounds(targetNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(targetNodePartLocation.x, targetNodePartLocation.y + targetNodePartLocation.height + LENGTH_TO_REACH_FIRST_EDGE_PIXEL_AFTER_EXPANDED_NODE));
+        bot.waitUntil(checkc1Selected);
+
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * 
+     * Source node is on the right. The edge is displayed horizontally.
+     * 
+     * The edge has the minimum size of 20px to be considered as selectable.
+     * area. Edge is in a container with scroll and main screen is also
+     * scrolled.
+     * 
+     * Zoom is 400% making the node image to have a size of 20px that means no
+     * expanded zone is computed during selection.
+     * 
+     * We click on the first pixel on the left side of the zoomed source node.
+     * 
+     * The selecting element must be the source node.
+     */
+    public void testExpansionZoneWithZoomedImagesEdgeSelection() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_400);
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C2");
+        editor.reveal(sourceNodePart.part());
+        Point sourceNodePartLocation = editor.getLocation(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, sourceNodePart.part().getParent());
+        editor.click(new Point(sourceNodePartLocation.x + 1, sourceNodePartLocation.y + 1));
+        bot.waitUntil(checkc1Selected);
+    }
+
+    /**
+     * 
+     * Tests the edge selection(
+     * {@link AbstractDiagramEdgeEditPart#getTargetEditPart(org.eclipse.gef.Request)}
+     * ) with a simple case : *----------* where the nodes are images of 5px.
+     * 
+     * Source node is on the right. The edge is displayed horizontally.
+     * 
+     * The edge has the minimum size of 20px to be considered as selectable.
+     * area. Edge is in a container with scroll and main screen is also
+     * scrolled.
+     * 
+     * Zoom is 400% making the node image to have a size of 20px that means no
+     * expanded zone is computed during selection.
+     * 
+     * We click on the pixel after the last pixel of the zoomed source node (at
+     * left).
+     * 
+     * The selecting element must be the edge.
+     */
+    public void testExpansionZoneWithZoomedImagesSourceNodeSelection() {
+        openDiagram(DIAGRAM_DESCRIPTION, DIAGRAM_INSTANCE_NAME, ZoomLevel.ZOOM_400);
+
+        SWTBotGefEditPart sourceNodePart = editor.getEditPart("C2");
+        editor.reveal(sourceNodePart.part());
+        AbstractDiagramEdgeEditPart edgePart = (AbstractDiagramEdgeEditPart) ((DNode4EditPart) sourceNodePart.part().getParent()).getSourceConnections().get(0);
+        Point sourceNodePartLocation = editor.getLocation(sourceNodePart);
+
+        CheckSelectedCondition checkc1Selected = new CheckSelectedCondition(editor, edgePart);
+        editor.click(new Point(sourceNodePartLocation.x - 1, sourceNodePartLocation.y + 1));
+        bot.waitUntil(checkc1Selected);
+    }
+
+}
diff --git a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java
index 927dd70..e79171c 100644
--- a/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java
+++ b/plugins/org.eclipse.sirius.tests.swtbot/src/org/eclipse/sirius/tests/swtbot/suite/AllTestSuite.java
@@ -152,6 +152,7 @@
         suite.addTestSuite(LineStyleTest.class);
         suite.addTestSuite(CompartmentsCreationTest.class);
         suite.addTestSuite(CompartmentsDragAndDropTest.class);
+        suite.addTestSuite(EdgeSelectionTest.class);
     }
 
     /**
@@ -289,14 +290,15 @@
      *            the suite into which to add the tests.
      */
     public static void addPart2(TestSuite suite) {
-        // The ViewpointProjectCreationTest should be done before the others ones:
+        // The ViewpointProjectCreationTest should be done before the others
+        // ones:
         // to verify the behavior when a specifier first launches the product.
         suite.addTestSuite(ViewpointSpecificationProjectCreationTest.class);
-        
+
         addGerritPart2(suite);
         STDSwtbotTestSuite.addPart2(suite);
         TableSwtbotTestSuite.addPart2(suite);
-        
+
         suite.addTestSuite(CustomizationPropertySectionsTests.class);
         suite.addTestSuite(GoToMarkerTraceabilityWithUserInteractionTest.class);
         suite.addTestSuite(NoteCreationWithSnapToGridTest.class);