/**
   * {@inheritDoc}
   *
   * @see
   *     org.eclipse.emf.compare.uml2.diff.internal.extension.IDiffExtensionFactory#create(org.eclipse.emf.compare.diff.metamodel.DiffElement,
   *     org.eclipse.emf.ecore.util.EcoreUtil.CrossReferencer)
   */
  public AbstractDiffExtension create(
      DiffElement input, EcoreUtil.CrossReferencer crossReferencer) {
    final ModelElementChangeLeftTarget changeLeftTarget = (ModelElementChangeLeftTarget) input;
    final Message message = (Message) changeLeftTarget.getLeftElement();

    final UMLMessageChangeLeftTarget ret =
        UML2DiffFactory.eINSTANCE.createUMLMessageChangeLeftTarget();

    final MessageEnd receiveEvent = message.getReceiveEvent();
    if (receiveEvent != null) {
      hideEvent(receiveEvent, ret, crossReferencer);
    }

    final MessageEnd sendEvent = message.getSendEvent();
    if (sendEvent != null) {
      hideEvent(sendEvent, ret, crossReferencer);
    }

    ret.getHideElements().add(changeLeftTarget);
    ret.getRequires().add(changeLeftTarget);

    ret.setRemote(changeLeftTarget.isRemote());
    ret.setRightParent(changeLeftTarget.getRightParent());
    ret.setLeftElement(changeLeftTarget.getLeftElement());

    return ret;
  }
 public static boolean canExist(Message message, Element source, Element target) {
   MessageSort messageSort = null;
   if (message != null) {
     messageSort = message.getMessageSort();
   }
   return canExist(message, messageSort, source, target);
 }
 public static boolean canReorientTarget(Message message, Element newTarget) {
   if (message == null || newTarget == null) {
     return false;
   }
   Element source = null;
   MessageEnd sendEvent = message.getSendEvent();
   if (sendEvent instanceof OccurrenceSpecification) {
     EList<Lifeline> covereds = ((OccurrenceSpecification) sendEvent).getCovereds();
     if (!covereds.isEmpty()) {
       source = covereds.get(0);
     }
   } else if (sendEvent instanceof Gate
       // special handling of SyncMessages due to #425666
       && MessageSort.SYNCH_CALL_LITERAL != message.getMessageSort()) {
     source = ((Gate) sendEvent).getOwner();
   }
   return canExist(message, source, newTarget);
 }
 private static String getValue(Message e, int paramIndex, Parameter parameter) {
   try {
     EList<ValueSpecification> arguments = e.getArguments();
     if (arguments.size() > paramIndex) {
       return ValueSpecificationUtil.getSpecificationValue(arguments.get(paramIndex));
     }
   } catch (Exception e1) {
   }
   return null;
 }
 /**
  *
  * <!-- begin-user-doc -->
  * <!-- end-user-doc -->
  *
  * @generated
  */
 @Override
 public Message getBase_Message() {
   if (base_Message != null && base_Message.eIsProxy()) {
     InternalEObject oldBase_Message = (InternalEObject) base_Message;
     base_Message = (Message) eResolveProxy(oldBase_Message);
     if (base_Message != oldBase_Message) {
       if (eNotificationRequired()) {
         eNotify(
             new ENotificationImpl(
                 this,
                 Notification.RESOLVE,
                 TimePackage.TIMED_PROCESSING__BASE_MESSAGE,
                 oldBase_Message,
                 base_Message));
       }
     }
   }
   return base_Message;
 }