private static void copyMemory(final Object src, final long srcAddress, final Object dest, final long destAddress, final int length) {
        // The Unsafe Javadoc specifies that the transfer size is 8 iff length % 8 == 0
        // so ensure that we copy big chunks whenever possible, even at the expense of two separate copy operations
        int bytesToCopy = length - (length % 8);
        Holder.unsafe.copyMemory(src, srcAddress, dest, destAddress, bytesToCopy);
        Holder.unsafe.copyMemory(src, srcAddress + bytesToCopy, dest, destAddress + bytesToCopy, length - bytesToCopy);
    }
Transfers data from the specified array into this buffer starting at
the specified absolute {@code index}.

@throws IndexOutOfBoundsException if the specified {@code index} is less than {@code 0},
if the specified {@code sourceIndex} is less than {@code 0},
if {@code index + length} is greater than
{@code this.length()}, or
if {@code sourceIndex + length} is greater than {@code source.length}
embulk-core/src/main/java/org/embulk/exec/Slice.java