public void putByteBuffer(int index, ByteBuffer src, int len) {
assert(len <= src.remaining());
if(src.isDirect()) {
DirectBuffer db = (DirectBuffer) src;
unsafe.copyMemory(null, db.address() + src.position(), base, address+index, len);
} else if(src.hasArray()) {
byte[] srcArray = src.array();
unsafe.copyMemory(srcArray, ARRAY_BYTE_BASE_OFFSET + src.position(), base, address+index, len);
} else {
if(base != null) {