public int compare(CheckedTreeNode o1, CheckedTreeNode o2) { final int w1 = getWeight(o1); final int w2 = getWeight(o2); if (w1 != w2) { return w1 - w2; } final TreeDescriptor d1 = (TreeDescriptor) o1.getUserObject(); final TreeDescriptor d2 = (TreeDescriptor) o2.getUserObject(); if (d1 instanceof BreakpointDescriptor && d2 instanceof BreakpointDescriptor) { return 0; } return d1.getDisplayString().compareTo(d2.getDisplayString()); }