private FDifference compareMethodLists( List<MethodDescription> leftMethods, List<MethodDescription> rightMethods, FDObject source) { FDifference diff = null; for (MethodDescription leftMethod : leftMethods) { MethodDescription rightMethod = (MethodDescription) basis.getFromList(rightMethods, leftMethod); if (rightMethod != null) { diff = compareMethods(diff, leftMethod, rightMethod); } else { // Deleted method FDifference delDiff = new FDifference(FDKind.DeletedElement, FDRating.Conflict); delDiff.setSource(leftMethod); delDiff.setDescription( "The method with signature '" + leftMethod.getSignature().toString() + "' was removed in version " + this.getRightVersion()); if (diff == null) { diff = new FDifference(FDKind.ChangedElement, FDRating.Conflict); } diff.addDifference(delDiff); } } for (MethodDescription rightMethod : rightMethods) { MethodDescription leftMethod = (MethodDescription) basis.getFromList(leftMethods, rightMethod); if (leftMethod == null) { // New method FDifference addDiff = new FDifference(FDKind.CreatedElement, FDRating.Warning); addDiff.setSource(rightMethod); addDiff.setDescription( "The method with signature '" + rightMethod.getSignature().toString() + "' was added in version " + this.getRightVersion()); if (diff == null) { diff = new FDifference(FDKind.ChangedElement, FDRating.Conflict); } diff.addDifference(addDiff); } } if (diff != null) { diff.setSource(source); diff.setDescription("Method signatures have changed in version " + this.getRightVersion()); } return diff; }