int (XBreakpointGroup o) { if (getName().equals(o.getName())) { return 0; } if (o instanceof XBreakpointTypeGroup) { if (((XBreakpointTypeGroup)o).myBreakpointType instanceof XLineBreakpointType) { if (myBreakpointType instanceof XLineBreakpointType) { int res = ((XLineBreakpointType<?>)((XBreakpointTypeGroup)o).myBreakpointType).getPriority() - ((XLineBreakpointType<?>)myBreakpointType).getPriority(); if (res != 0) { return res; } } else { // line breakpoints should be on top return 1; } } else if (myBreakpointType instanceof XLineBreakpointType) { return -1; } return Long.compare(indexOfType(myBreakpointType), indexOfType(((XBreakpointTypeGroup)o).getBreakpointType())); } return -o.compareTo(this); }