Program: 93648
Project: 93648
Buggy source:
/** 
 * This will be called from   {@link #checkConflict(Comparison,Diff,Iterable)} in order to detectconflicts on a Diff that is of type "CHANGE" or "MOVE". <p> Those can only conflict with other Diffs of the same type on the same reference. </p>
 * @param comparison The originating comparison of those diffs.
 * @param diff The diff which we are to check for conflicts.
 * @param candidates The list of candidates for a conflict. This list only contains Diff from the side opposite to  {@code diff}.
 */
protected void checkFeatureMoveConflict(Comparison comparison,Diff diff,Iterable<Diff> candidates){
  final Object changedValue;
  final EStructuralFeature feature;
  if (diff instanceof ReferenceChange) {
    changedValue=((ReferenceChange)diff).getValue();
    feature=((ReferenceChange)diff).getReference();
  }
 else {
    changedValue=((AttributeChange)diff).getValue();
    feature=((AttributeChange)diff).getAttribute();
  }
  final Iterable<Diff> refinedCandidates=Iterables.filter(candidates,new Predicate<Diff>(){
    public boolean apply(    Diff input){
      boolean apply=false;
      if (input != null && input.getKind() == DifferenceKind.MOVE) {
        if (input instanceof ReferenceChange) {
          apply=((ReferenceChange)input).getReference() == feature;
        }
 else         if (input instanceof AttributeChange) {
          apply=((AttributeChange)input).getAttribute() == feature;
        }
      }
      return apply;
    }
  }
);
  for (  Diff candidate : refinedCandidates) {
    final Object candidateValue;
    if (candidate instanceof ReferenceChange) {
      candidateValue=((ReferenceChange)candidate).getValue();
    }
 else {
      candidateValue=((AttributeChange)candidate).getValue();
    }
    if (diff.getMatch() == candidate.getMatch() && helper.matchingValues(comparison,changedValue,candidateValue)) {
      if (matchingIndices(comparison,diff.getMatch(),feature,changedValue,candidateValue)) {
        conflictOn(comparison,diff,candidate,ConflictKind.PSEUDO);
      }
 else {
        conflictOn(comparison,diff,candidate,ConflictKind.REAL);
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * This will be called from   {@link #checkConflict(Comparison,Diff,Iterable)} in order to detectconflicts on a Diff that is of type "CHANGE" or "MOVE". <p> Those can only conflict with other Diffs of the same type on the same reference. </p>
 * @param comparison The originating comparison of those diffs.
 * @param diff The diff which we are to check for conflicts.
 * @param candidates The list of candidates for a conflict. This list only contains Diff from the side opposite to  {@code diff}.
 */
protected void checkFeatureMoveConflict(Comparison comparison,Diff diff,Iterable<Diff> candidates){
  final Object changedValue;
  final EStructuralFeature feature;
  if (diff instanceof ReferenceChange) {
    changedValue=((ReferenceChange)diff).getValue();
    feature=((ReferenceChange)diff).getReference();
  }
 else   if (diff instanceof AttributeChange) {
    changedValue=((AttributeChange)diff).getValue();
    feature=((AttributeChange)diff).getAttribute();
  }
 else {
    return;
  }
  final Iterable<Diff> refinedCandidates=Iterables.filter(candidates,new Predicate<Diff>(){
    public boolean apply(    Diff input){
      boolean apply=false;
      if (input != null && input.getKind() == DifferenceKind.MOVE) {
        if (input instanceof ReferenceChange) {
          apply=((ReferenceChange)input).getReference() == feature;
        }
 else         if (input instanceof AttributeChange) {
          apply=((AttributeChange)input).getAttribute() == feature;
        }
      }
      return apply;
    }
  }
);
  for (  Diff candidate : refinedCandidates) {
    final Object candidateValue;
    if (candidate instanceof ReferenceChange) {
      candidateValue=((ReferenceChange)candidate).getValue();
    }
 else {
      candidateValue=((AttributeChange)candidate).getValue();
    }
    if (diff.getMatch() == candidate.getMatch() && helper.matchingValues(comparison,changedValue,candidateValue)) {
      if (matchingIndices(comparison,diff.getMatch(),feature,changedValue,candidateValue)) {
        conflictOn(comparison,diff,candidate,ConflictKind.PSEUDO);
      }
 else {
        conflictOn(comparison,diff,candidate,ConflictKind.REAL);
      }
    }
  }
}