@NotNull
    public DiffIterable build() {
      for (Range range : myIterable.iterateChanges()) {
        int start1 = range.start1;
        int start2 = range.start2;
        int end1 = range.end1;
        int end2 = range.end2;

        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);
        }

        Range trimmed = new Range(start1, end1, start2, end2);

        if (!trimmed.isEmpty() &&
            !isEquals(myText1, myText2, trimmed)) {
          myChanges.add(trimmed);
        }
      }

      return create(myChanges, myText1.length(), myText2.length());
    }
@NotNull
    public DiffIterable build()