code: public static int writeUnsignedLong(byte[] target, int offset, long value) {
          return writeLong(target, offset, value ^ Long.MIN_VALUE);
      }
docs: Writes the given 64-bit Unsigned Long to the given byte array at the given offset. This value can then be
  deserialized using {@link #readUnsignedLong}. This method is not interoperable with {@link #readLong}.
  
  The advantage of serializing as Unsigned Long (vs. a normal Signed Long) is that the serialization will have the
  same natural order as the input value type (i.e., if compared using a lexicographic bitwise comparator such as
  ByteArrayComparator, it will have the same ordering as the typical Long type).
  
  @param target The byte array to write to.
  @param offset The offset within the byte array to write at.
  @param value  The (signed) value to write. The value will be converted into the range [0, 2^64-1] before
  serialization by flipping the high order bit (so positive values will begin with 1 and negative values
  will begin with 0).
  @return The number of bytes written.