public static UUID decodeBinaryToUuid(final byte[] data, final byte type, final UuidRepresentation uuidRepresentation) { if (data.length != 16) { throw new BsonSerializationException(String.format("Expected length to be 16, not %d.", data.length)); } if (type == BsonBinarySubType.UUID_LEGACY.getValue()) { switch(uuidRepresentation) { case C_SHARP_LEGACY: reverseByteArray(data, 0, 4); reverseByteArray(data, 4, 2); reverseByteArray(data, 6, 2); break; case JAVA_LEGACY: reverseByteArray(data, 0, 8); reverseByteArray(data, 8, 8); break; case PYTHON_LEGACY: case STANDARD: break; default: throw new BSONException("Unexpected UUID representation"); } } return new UUID(readLongFromArrayBigEndian(data, 0), readLongFromArrayBigEndian(data, 8)); }