}
// ---- Navigating and resolving Diffs
private Diff getNextVisibleDiff(boolean down, boolean deep) {
Diff diff = null;
MergeSourceViewer part = getNavigationPart();
if (part == null)
return null;
Point s = part.getSelectedRange();
char leg = getLeg(part);
for (;;) {
diff = null;
diff = internalGetNextDiff(down, deep, part, s);
if (diff != null && diff.getKind() == RangeDifference.ANCESTOR
&& !isAncestorVisible()) {
Position position = diff.getPosition(leg);
s = new Point(position.getOffset(), position.getLength());
diff = null;
continue;
}
break;