code: synchronized void setInputFromSavedData() {
      uncompressedDirectBufOff = 0;
      uncompressedDirectBufLen = userBufLen;
      if (uncompressedDirectBufLen > directBufferSize) {
        uncompressedDirectBufLen = directBufferSize;
      }
  
      // Reinitialize lzma's input direct buffer
      uncompressedDirectBuf.rewind();
      ((ByteBuffer)uncompressedDirectBuf).put(userBuf, userBufOff,  
                                              uncompressedDirectBufLen);
  
      // Note how much data is being fed to lzma
      userBufOff += uncompressedDirectBufLen;
      userBufLen -= uncompressedDirectBufLen;
    }
docs: If a write would exceed the capacity of the direct buffers, it is set
  aside to be loaded by this function while the compressed data are
  consumed.