public static void saveStream(NbtCompound source, OutputSupplier<? extends OutputStream> stream, StreamOptions option) throws IOException {
        OutputStream output = null;
        DataOutputStream data = null;
        boolean suppress = true;
        
        try {
            output = stream.getOutput();
            data = new DataOutputStream(
                option == StreamOptions.GZIP_COMPRESSION ? new GZIPOutputStream(output) : output
            );
            
            invokeMethod(get().SAVE_COMPOUND, null, source.getHandle(), data);
            suppress = false;
            
        } finally {
            if (data != null)
                Closeables.close(data, suppress);
            else if (output != null)
                Closeables.close(output, suppress);
        }
    }