List<MergeRange> () { for (MergeRange range : myIterable) { int start1 = range.start1; int start2 = range.start2; int start3 = range.start3; int end1 = range.end1; int end2 = range.end2; int end3 = range.end3; if (isLeadingTrailingSpace(myText1, start1)) { start1 = trimStart(myText1, start1, end1); } if (isLeadingTrailingSpace(myText1, end1 - 1)) { end1 = trimEnd(myText1, start1, end1); } if (isLeadingTrailingSpace(myText2, start2)) { start2 = trimStart(myText2, start2, end2); } if (isLeadingTrailingSpace(myText2, end2 - 1)) { end2 = trimEnd(myText2, start2, end2); } if (isLeadingTrailingSpace(myText3, start3)) { start3 = trimStart(myText3, start3, end3); } if (isLeadingTrailingSpace(myText3, end3 - 1)) { end3 = trimEnd(myText3, start3, end3); } MergeRange trimmed = new MergeRange(start1, end1, start2, end2, start3, end3); if (!trimmed.isEmpty() && !isEquals(myText1, myText2, myText3, trimmed)) { myChanges.add(trimmed); } } return myChanges; }