code: public static File decompress(CompressionMethod _method, String _compressedFile, String _outputFileName) {
      	if (_method == null || _compressedFile == null) {
      		return null;
      	}
  
      	File inputFile = new File(_compressedFile);
  
          if (!inputFile.exists()) {
              return null;
          }
  
          try {
              Constructor<? extends InputStream> constructor = _method.getInputStreamClass().getConstructor(InputStream.class);
              if (constructor != null) {
              	InputStream inputStream = constructor.newInstance(new FileInputStream(inputFile));
  
                  // write decompressed stream to new file
                  Path destPath = Paths.get(_outputFileName);
                  Files.copy(inputStream, destPath, StandardCopyOption.REPLACE_EXISTING);
                  return destPath.toFile();
  
              }
          } catch (IOException | NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException iOException) {
              LOGGER.error("Cannot uncompress file: ", iOException);
          }
  
          return null;
      }
docs: Extract a file using the given {@link CompressionMethod}.
  @param _method
  @param _compressedFile
  @param _outputFileName
  @return file object which represents the uncompressed file or null on error