public int compareTo(VcsRevisionNumber o) { // boundary cases if (this == o) { return 0; } if (!(o instanceof HgRevisionNumber)) { return -1; } final HgRevisionNumber other = (HgRevisionNumber) o; if (changeset.equals(other.changeset)) { return 0; } // compare revision numbers. final int revCompare = java.lang.Long.valueOf(getRevisionNumber()) .compareTo(java.lang.Long.valueOf(other.getRevisionNumber())); if (revCompare != 0) { return revCompare; } // If they are equal, the working revision is greater. if (isWorkingVersion) { return other.isWorkingVersion ? 0 : 1; } else { return other.isWorkingVersion ? -1 : 0; } }