private EdgeMapping getEdgeMappingReconnector() {
    EdgeMapping bestMapping = null;
    DiagramElementMapping sourceMapping = null;
    DiagramElementMapping targetMapping = null;

    if (tool.getReconnectionKind() == ReconnectionKind.RECONNECT_BOTH_LITERAL) {
      if (edge.getTargetNode() == reconnectionSource) {
        sourceMapping = getMapping(reconnectionTarget);
        targetMapping = getMapping(oldTarget);
      } else {
        sourceMapping = getMapping(oldSource);
        targetMapping = getMapping(reconnectionTarget);
      }
    } else if (tool.getReconnectionKind() == ReconnectionKind.RECONNECT_SOURCE_LITERAL) {
      sourceMapping = getMapping(reconnectionTarget);
      targetMapping = getMapping(oldTarget);
    } else if (tool.getReconnectionKind() == ReconnectionKind.RECONNECT_TARGET_LITERAL) {
      sourceMapping = getMapping(oldSource);
      targetMapping = getMapping(reconnectionTarget);
    }
    if (sourceMapping != null && targetMapping != null) {
      final Iterator<EdgeMapping> iterMappings = tool.getMappings().iterator();
      while (iterMappings.hasNext()) {
        final EdgeMapping currentMapping = iterMappings.next();
        if (currentMapping.getTargetMapping().contains(targetMapping)
            && currentMapping.getSourceMapping().contains(sourceMapping)) {
          bestMapping = currentMapping;
          if (currentMapping.equals(edge.getActualMapping())) {
            break;
          }
        }
      }
    }

    return bestMapping;
  }