code: public static int rawUncompress(byte[] input, int inputOffset, int inputLength, Object output, int outputOffset)
              throws IOException
      {
          if (input == null || output == null) {
              throw new NullPointerException("input or output is null");
          }
          return impl.rawUncompress(input, inputOffset, inputLength, output, outputOffset);
      }
docs: Uncompress the content in the input buffer. The uncompressed data is
  written to the output buffer.
  <p/>
  Note that if you pass the wrong data or the range [inputOffset,
  inputOffset + inputLength) that cannot be uncompressed, your JVM might
  crash due to the access violation exception issued in the native code
  written in C++. To avoid this type of crash, use
  {@link #isValidCompressedBuffer(byte[], int, int)} first.
  
  @param input input byte array
  @param inputOffset byte offset in the input byte array
  @param inputLength byte length of the input data
  @param output output buffer, MUST be a primitive type array
  @param outputOffset byte offset in the output buffer
  @return the byte size of the uncompressed data
  @throws IOException when failed to uncompress the input data