docs: public static long copy(InputStream inputStream, OutputStream outputStream) throws IOException, IllegalArgumentException
    {
      Params.notNull(inputStream, "Input stream");
      Params.notNull(outputStream, "Output stream");
      Params.isFalse(inputStream instanceof ZipInputStream, "Input stream is ZIP.");
      Params.isFalse(outputStream instanceof ZipOutputStream, "Output stream is ZIP.");
  
      if(!(inputStream instanceof BufferedInputStream)) {
        inputStream = new BufferedInputStream(inputStream);
      }
      if(!(outputStream instanceof BufferedOutputStream)) {
        outputStream = new BufferedOutputStream(outputStream);
      }
  
      long bytes = 0;
      try {
        byte[] buffer = new byte[BUFFER_SIZE];
        int length;
        while((length = inputStream.read(buffer)) != -1) {
          bytes += length;
          outputStream.write(buffer, 0, length);
        }
      }
      finally {
        close(inputStream);
        close(outputStream);
      }
      return bytes;
    }