Program: 93548
Project: 93548
Buggy source:
@SuppressWarnings("String_Node_Str") @Test public void testLeftAddRightAdd_RtL_2() throws IOException {
  final Resource left=input.getLeftAddRightAddLeftConflictScope();
  final Resource right=input.getLeftAddRightAddRightConflictScope();
  final Resource origin=input.getLeftAddRightAddOriginConflictScope();
  final IComparisonScope scope=new DefaultComparisonScope(left,right,origin);
  Comparison comparison=EMFCompare.builder().build().compare(scope);
  List<Diff> differences=comparison.getDifferences();
  assertEquals(6,differences.size());
  final String featureName="String_Node_Str";
  final Diff diffNodeCLeft=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.LEFT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeCRight=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.RIGHT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeDLeft=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.LEFT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeDRight=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.RIGHT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeELeft=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.LEFT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeFRight=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.RIGHT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  mergerRegistry.getHighestRankingMerger(diffNodeCRight).copyRightToLeft(diffNodeCRight,new BasicMonitor());
  final EObject leftNodeC=getNodeNamed(left,"String_Node_Str");
  assertNotNull(leftNodeC);
  final EObject leftNodeA=getNodeNamed(left,"String_Node_Str");
  assertNotNull(leftNodeA);
  final EObject leftNodeB=getNodeNamed(left,"String_Node_Str");
  assertNotNull(leftNodeB);
  final EObject leftNodeD=getNodeNamed(left,"String_Node_Str");
  assertNull(leftNodeD);
  final EObject leftNodeF=getNodeNamed(left,"String_Node_Str");
  assertNull(leftNodeF);
  final EStructuralFeature feature=leftNodeA.eClass().getEStructuralFeature(featureName);
  assertNotNull(feature);
  final EList<Node> containmentRef1s=((Node)leftNodeA).getContainmentRef1();
  assertFalse(containmentRef1s.contains(leftNodeC));
  final EList<Node> bContainmentRef1s=((Node)leftNodeB).getContainmentRef1();
  assertTrue(bContainmentRef1s.contains(leftNodeC));
  assertEquals(DifferenceState.MERGED,diffNodeCLeft.getState());
  assertEquals(DifferenceState.MERGED,diffNodeCRight.getState());
  assertEquals(DifferenceState.MERGED,diffNodeDLeft.getState());
  assertEquals(DifferenceState.UNRESOLVED,diffNodeDRight.getState());
  assertEquals(DifferenceState.MERGED,diffNodeELeft.getState());
  assertEquals(DifferenceState.UNRESOLVED,diffNodeFRight.getState());
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") @Test public void testLeftAddRightAdd_RtL_2() throws IOException {
  final Resource left=input.getLeftAddRightAddLeftConflictScope();
  final Resource right=input.getLeftAddRightAddRightConflictScope();
  final Resource origin=input.getLeftAddRightAddOriginConflictScope();
  final IComparisonScope scope=new DefaultComparisonScope(left,right,origin);
  Comparison comparison=EMFCompare.builder().build().compare(scope);
  List<Diff> differences=comparison.getDifferences();
  assertEquals(6,differences.size());
  final String featureName="String_Node_Str";
  final Diff diffNodeCLeft=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.LEFT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeCRight=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.RIGHT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeDLeft=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.LEFT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeDRight=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.RIGHT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeELeft=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.LEFT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  final Diff diffNodeFRight=Iterators.find(differences.iterator(),and(fromSide(DifferenceSource.RIGHT),ofKind(DifferenceKind.ADD),referenceValueMatch(featureName,"String_Node_Str",true)));
  mergerRegistry.getHighestRankingMerger(diffNodeCRight).copyRightToLeft(diffNodeCRight,new BasicMonitor());
  final EObject leftNodeC=getNodeNamed(left,"String_Node_Str");
  assertNotNull(leftNodeC);
  final EObject leftNodeA=getNodeNamed(left,"String_Node_Str");
  assertNotNull(leftNodeA);
  final EObject leftNodeB=getNodeNamed(left,"String_Node_Str");
  assertNotNull(leftNodeB);
  final EObject leftNodeD=getNodeNamed(left,"String_Node_Str");
  assertNull(leftNodeD);
  final EObject leftNodeF=getNodeNamed(left,"String_Node_Str");
  assertNull(leftNodeF);
  final EStructuralFeature feature=leftNodeA.eClass().getEStructuralFeature(featureName);
  assertNotNull(feature);
  final EList<Node> containmentRef1s=((Node)leftNodeA).getContainmentRef1();
  assertFalse(containmentRef1s.contains(leftNodeC));
  final EList<Node> bContainmentRef1s=((Node)leftNodeB).getContainmentRef1();
  assertTrue(bContainmentRef1s.contains(leftNodeC));
  assertEquals(DifferenceState.MERGED,diffNodeCLeft.getState());
  assertEquals(DifferenceState.MERGED,diffNodeCRight.getState());
  assertEquals(DifferenceState.MERGED,diffNodeDLeft.getState());
  assertEquals(DifferenceState.MERGED,diffNodeDRight.getState());
  assertEquals(DifferenceState.MERGED,diffNodeELeft.getState());
  assertEquals(DifferenceState.UNRESOLVED,diffNodeFRight.getState());
}