public int compare(Object o1, Object o2) { Mark m1 = ((Mark)o1); Mark m2 = ((Mark)o2); try { int offDiff = m1.getOffset() - m2.getOffset(); if (offDiff != 0) { return offDiff; } else { return m1.getBiasAsInt() - m2.getBiasAsInt(); } } catch (InvalidMarkException e) { throw new IllegalStateException(e.toString()); } }