public UnsignedLong increment() {
        final long newVal = value + 1;
        checkUpperBound(newVal);
        return new UnsignedLong(newVal, unsignedBytes);
    }
Represents an unsigned long that fits in length bytes. If a length of 8
is used then it can only represent numbers up to {@link Long#MAX_VALUE}.
See {@link UnsignedBytesInstances} for max values for different byte lengths.
stroom-lmdb/src/main/java/stroom/lmdb/serde/UnsignedLong.java