Program: 93700
Project: 93700
Buggy source:
/** 
 * Return the specified matched   {@link EObject} from the one given.
 * @param from The original  {@link EObject}.
 * @param side side of the object we seek. Must be one of <ul> <li> {@link #ANCESTOR_OBJECT}</li> <li>  {@link #LEFT_OBJECT}</li> <li>  {@link #RIGHT_OBJECT}</li> </ul> .
 * @return The matched EObject.
 * @throws IllegalArgumentException Thrown if <code>side</code> is invalid.
 */
protected EObject getMatchedEObject(EObject from,int side) throws IllegalArgumentException {
  if (side != LEFT_OBJECT && side != RIGHT_OBJECT && side != ANCESTOR_OBJECT)   throw new IllegalArgumentException(EMFCompareDiffMessages.getString("String_Node_Str"));
  EObject matchedEObject=null;
  if (matchCrossReferencer != null) {
    for (    final Setting setting : matchCrossReferencer.get(from)) {
      if (setting.getEObject() instanceof Match2Elements) {
        if (side == LEFT_OBJECT) {
          matchedEObject=((Match2Elements)setting.getEObject()).getLeftElement();
        }
 else         if (side == RIGHT_OBJECT) {
          matchedEObject=((Match2Elements)setting.getEObject()).getRightElement();
        }
 else         if (setting.getEObject() instanceof Match3Elements) {
          matchedEObject=((Match3Elements)setting.getEObject()).getOriginElement();
        }
      }
    }
  }
 else {
    final Match2Elements matchElem=eObjectToMatch.get(from);
    if (matchElem != null) {
      if (side == LEFT_OBJECT) {
        matchedEObject=matchElem.getLeftElement();
      }
 else       if (side == RIGHT_OBJECT) {
        matchedEObject=matchElem.getRightElement();
      }
 else       if (side == ANCESTOR_OBJECT && matchElem instanceof Match3Elements) {
        matchedEObject=((Match3Elements)matchElem).getOriginElement();
      }
    }
  }
  return matchedEObject;
}

Fixed version (ground truth):
/** 
 * Return the specified matched   {@link EObject} from the one given.
 * @param from The original  {@link EObject}.
 * @param side side of the object we seek. Must be one of <ul> <li> {@link #ANCESTOR_OBJECT}</li> <li>  {@link #LEFT_OBJECT}</li> <li>  {@link #RIGHT_OBJECT}</li> </ul> .
 * @return The matched EObject.
 * @throws IllegalArgumentException Thrown if <code>side</code> is invalid.
 */
protected EObject getMatchedEObject(EObject from,int side) throws IllegalArgumentException {
  if (side != LEFT_OBJECT && side != RIGHT_OBJECT && side != ANCESTOR_OBJECT) {
    throw new IllegalArgumentException(EMFCompareDiffMessages.getString("String_Node_Str"));
  }
  EObject matchedEObject=null;
  if (matchCrossReferencer != null) {
    for (    final Setting setting : matchCrossReferencer.get(from)) {
      if (setting.getEObject() instanceof Match2Elements) {
        if (side == LEFT_OBJECT) {
          matchedEObject=((Match2Elements)setting.getEObject()).getLeftElement();
        }
 else         if (side == RIGHT_OBJECT) {
          matchedEObject=((Match2Elements)setting.getEObject()).getRightElement();
        }
 else         if (setting.getEObject() instanceof Match3Elements) {
          matchedEObject=((Match3Elements)setting.getEObject()).getOriginElement();
        }
      }
    }
  }
 else {
    final Match2Elements matchElem=eObjectToMatch.get(from);
    if (matchElem != null) {
      if (side == LEFT_OBJECT) {
        matchedEObject=matchElem.getLeftElement();
      }
 else       if (side == RIGHT_OBJECT) {
        matchedEObject=matchElem.getRightElement();
      }
 else       if (side == ANCESTOR_OBJECT && matchElem instanceof Match3Elements) {
        matchedEObject=((Match3Elements)matchElem).getOriginElement();
      }
    }
  }
  return matchedEObject;
}