public int compute(final long address, final int offset, final int length)
    {
        try
        {
            return (int)UPDATE_DIRECT_BYTE_BUFFER.invokeExact(address, offset, offset + length /* end */);
        }
        catch (final Throwable t)
        {
            LangUtil.rethrowUnchecked(t);
            return -1;
        }
    }
@Test
    void compute() throws ReflectiveOperationException
    {
        final Random random = new Random(54893045794L);
        final int offset = 7;
        final ByteBuffer buffer = ByteBuffer.allocateDirect(1024 + offset);
        final long address = address(buffer);

        for (int i = 1; i <= 1024; i++)
        {
            final int length = i;
            final byte[] data = new byte[length];
            random.nextBytes(data);
            buffer.clear().position(offset);
            buffer.put(data);
            buffer.flip().position(offset);
            final Checksum crc32c = (Checksum)constructor.newInstance();
            method.invoke(crc32c, buffer);
            final int checksum = (int)crc32c.getValue();
            assertEquals(checksum, INSTANCE.compute(address, offset, length), () -> "Failed on length: " + length);
        }
    }