code: public final byte[] decompress(byte[] src, int srcOff, int srcLen, int maxDestLen) {
      byte[] decompressed = new byte[maxDestLen];
      final int decompressedLength = decompress(src, srcOff, srcLen, decompressed, 0, maxDestLen);
      if (decompressedLength != decompressed.length) {
        decompressed = Arrays.copyOf(decompressed, decompressedLength);
      }
      return decompressed;
    }
docs: Convenience method which returns <code>src[srcOff:srcOff+srcLen]</code>
  decompressed.
  <p><b><span style="color:red">Warning</span></b>: this method has an
  important overhead due to the fact that it needs to allocate a buffer to
  decompress into, and then needs to resize this buffer to the actual
  decompressed length.</p>
  <p>Here is how this method is implemented:</p>
  <pre>
  byte[] decompressed = new byte[maxDestLen];
  final int decompressedLength = decompress(src, srcOff, srcLen, decompressed, 0, maxDestLen);
  if (decompressedLength != decompressed.length) {
  decompressed = Arrays.copyOf(decompressed, decompressedLength);
  }
  return decompressed;
  </pre>
  
  @param src the compressed data
  @param srcOff the start offset in src
  @param srcLen the exact size of the compressed data
  @param maxDestLen the maximum number of bytes to write in dest
  @return the decompressed data
  @throws LZ4Exception if maxDestLen is too small