Program: 93654
Project: 93654
Buggy source:
/** 
 * Checks whether the given   {@link Match}'s sides have changed resources. This will only be called for  {@link Match} elements referencing the root(s) of an EMF Resource.
 * @param match The match that is to be checked.
 */
protected void checkResourceAttachment(Match match){
  final Comparison comparison=match.getComparison();
  if (comparison.getMatchedResources().isEmpty()) {
    return;
  }
  if (match.getLeft() == null && match.getRight() == null) {
    final String uri=match.getOrigin().eResource().getURI().toString();
    getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.LEFT);
    getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.RIGHT);
  }
 else   if (match.getLeft() == null || match.getRight() == null) {
    if (comparison.isThreeWay() && match.getLeft() == null) {
      final String uri=match.getOrigin().eResource().getURI().toString();
      getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.LEFT);
    }
 else     if (comparison.isThreeWay() && match.getRight() != null) {
      final String uri=match.getRight().eResource().getURI().toString();
      getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.RIGHT);
    }
 else     if (match.getLeft() == null) {
      final String uri=match.getRight().eResource().getURI().toString();
      getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.LEFT);
    }
 else {
      final String uri=match.getLeft().eResource().getURI().toString();
      getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.ADD,DifferenceSource.LEFT);
    }
  }
}

Fixed version (ground truth):
/** 
 * Checks whether the given   {@link Match}'s sides have changed resources. This will only be called for  {@link Match} elements referencing the root(s) of an EMF Resource.
 * @param match The match that is to be checked.
 */
protected void checkResourceAttachment(Match match){
  final Comparison comparison=match.getComparison();
  if (comparison.getMatchedResources().isEmpty()) {
    return;
  }
  if (match.getLeft() == null && match.getRight() == null) {
    final String uri=match.getOrigin().eResource().getURI().toString();
    getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.LEFT);
    getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.RIGHT);
  }
 else   if (match.getLeft() == null || match.getRight() == null) {
    if (comparison.isThreeWay() && match.getLeft() == null) {
      final String uri=match.getOrigin().eResource().getURI().toString();
      getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.LEFT);
    }
 else     if (comparison.isThreeWay()) {
      if (match.getOrigin() != null) {
        final String uri=match.getOrigin().eResource().getURI().toString();
        getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.RIGHT);
      }
 else {
        final String uri=match.getLeft().eResource().getURI().toString();
        getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.ADD,DifferenceSource.LEFT);
      }
    }
 else     if (match.getLeft() == null) {
      final String uri=match.getRight().eResource().getURI().toString();
      getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.DELETE,DifferenceSource.LEFT);
    }
 else {
      final String uri=match.getLeft().eResource().getURI().toString();
      getDiffProcessor().resourceAttachmentChange(match,uri,DifferenceKind.ADD,DifferenceSource.LEFT);
    }
  }
}