public void read(byte[] buffer, int length) { if (resumeRead()) { Buff buff = Buff.getOrCreate(); buff.position(Buff.getLargestUnsplitable()); byte[] temp = _randomSplitter.read(buffer, 0, length, buff.remaining()); buff.putImmutably(temp, 0, temp.length); buff.limit(buff.position() + temp.length); if (Debug.ENABLED && buff.remaining() == 0) buff.lock(buff.limit()); read(buff); buff.recycle(); suspendRead(); } }