@Override public int compareTo(BsonValue<?> obj) { if (obj == this) { return 0; } int diff = BsonTypeComparator.INSTANCE.compare(getType(), obj.getType()); if (diff != 0) { return diff; } if (obj.isObjectId()) { return 1; } assert obj instanceof BsonDbPointer; BsonDbPointer other = (BsonDbPointer) obj; // TODO: Check how MongoDB compares pointers! diff = this.getNamespace().compareTo(other.getNamespace()); if (diff != 0) { return diff; } return this.getId().compareTo(other.getId()); }