private void checkUpperBound(final long value) {
        if (value > unsignedBytes.getMaxVal()) {
            throw new IllegalArgumentException("value must be <= " + unsignedBytes.getMaxVal());
        }
    }
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