private static void insert(TextEdit parent, ReplaceEdit edit, List<ReplaceEdit> edits) { if (!parent.hasChildren()) { parent.addChild(edit); return; } TextEdit[] children= parent.getChildren(); // First dive down to find the right parent. int removed= 0; for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; if (child.covers(edit)) { insert(child, edit, edits); return; } else if (edit.covers(child)) { parent.removeChild(i - removed++); edit.addChild(child); } else { IRegion intersect= intersect(edit, child); if (intersect != null) { ReplaceEdit[] splits= splitEdit(edit, intersect); insert(child, splits[0], edits); edits.add(splits[1]); return; } } } parent.addChild(edit); }
private static void insert(TextEdit parent, ReplaceEdit edit, List<ReplaceEdit> edits) { if (!parent.hasChildren()) { parent.addChild(edit); return; } TextEdit[] children= parent.getChildren(); // First dive down to find the right parent. int removed= 0; for (int i= 0; i < children.length; i++) { TextEdit child= children[i]; if (child.covers(edit)) { insert(child, edit, edits); return; } else if (edit.covers(child)) { parent.removeChild(i - removed++); edit.addChild(child); } else { IRegion intersect= intersect(edit, child); if (intersect != null) { ReplaceEdit[] splits= splitEdit(edit, intersect); insert(child, splits[0], edits); edits.add(splits[1]); return; } } } parent.addChild(edit); }