code: synchronized void setInputFromSavedData() {
      if (0 >= userBufLen) {
        return;
      }
      finished = false;
  
      uncompressedDirectBufLen = Math.min(userBufLen, directBufferSize);
      ((ByteBuffer) uncompressedDirectBuf).put(userBuf, userBufOff,
          uncompressedDirectBufLen);
  
      // Note how much data is being fed to lz4
      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.