Program: 160602
Project: 160602
Buggy source:
private void cleanIdentifierMap(Map<String,List<IdEObject>> identifierMap){
  for (  String identifier : identifierMap.keySet()) {
    List<IdEObject> list=identifierMap.get(identifier);
    if (list.size() > 1) {
      IdEObject newestObject=list.get(list.size() - 1);
      for (      EAttribute eAttribute : newestObject.eClass().getEAllAttributes()) {
        if (eAttribute.isMany()) {
        }
 else {
          if (!newestObject.eIsSet(eAttribute)) {
            for (int i=list.size() - 2; i >= 0; i--) {
              IdEObject olderObject=list.get(i);
              if (olderObject.eIsSet(eAttribute)) {
                newestObject.eSet(eAttribute,olderObject.eGet(eAttribute));
                break;
              }
            }
          }
        }
      }
      for (      EReference eReference : newestObject.eClass().getEAllReferences()) {
        if (eReference.isMany()) {
        }
 else {
          if (!newestObject.eIsSet(eReference)) {
            for (int i=list.size() - 2; i >= 0; i--) {
              IdEObject olderObject=list.get(i);
              if (olderObject.eIsSet(eReference)) {
                newestObject.eSet(eReference,olderObject.eGet(eReference));
                referenceCounter.addReference(new ReferenceCounter.SingleReference(newestObject,(IdEObject)olderObject.eGet(eReference),eReference));
                break;
              }
            }
          }
        }
      }
      for (      IdEObject idEObject : list) {
        if (idEObject != newestObject) {
          removeReplaceLinks(newestObject,idEObject);
        }
      }
    }
    processedIdentifiers.add(identifier);
  }
}

Fixed version (ground truth):
@SuppressWarnings({"String_Node_Str","String_Node_Str"}) private void cleanIdentifierMap(Map<String,List<IdEObject>> identifierMap){
  for (  String identifier : identifierMap.keySet()) {
    List<IdEObject> list=identifierMap.get(identifier);
    if (list.size() > 1) {
      IdEObject newestObject=list.get(list.size() - 1);
      for (      EAttribute eAttribute : newestObject.eClass().getEAllAttributes()) {
        if (eAttribute.isMany()) {
        }
 else {
          if (!newestObject.eIsSet(eAttribute)) {
            for (int i=list.size() - 2; i >= 0; i--) {
              IdEObject olderObject=list.get(i);
              if (olderObject.eIsSet(eAttribute)) {
                newestObject.eSet(eAttribute,olderObject.eGet(eAttribute));
                break;
              }
            }
          }
        }
      }
      for (      EReference eReference : newestObject.eClass().getEAllReferences()) {
        if (eReference.isMany()) {
          if (!newestObject.eIsSet(eReference)) {
            for (int i=list.size() - 2; i >= 0; i--) {
              IdEObject olderObject=list.get(i);
              if (olderObject.eIsSet(eReference)) {
                List<?> l=(List<?>)newestObject.eGet(eReference);
                List a=(List)olderObject.eGet(eReference);
                l.addAll(a);
                a.clear();
                referenceCounter.addReference(new ReferenceCounter.MultiReference(newestObject,(IdEObject)olderObject.eGet(eReference),eReference));
                break;
              }
            }
          }
        }
 else {
          if (!newestObject.eIsSet(eReference)) {
            for (int i=list.size() - 2; i >= 0; i--) {
              IdEObject olderObject=list.get(i);
              if (olderObject.eIsSet(eReference)) {
                newestObject.eSet(eReference,olderObject.eGet(eReference));
                referenceCounter.addReference(new ReferenceCounter.SingleReference(newestObject,(IdEObject)olderObject.eGet(eReference),eReference));
                break;
              }
            }
          }
        }
      }
      for (      IdEObject idEObject : list) {
        if (idEObject != newestObject) {
          removeReplaceLinks(newestObject,idEObject);
        }
      }
    }
  }
}