public static NbtCompound fromStream(InputSupplier<? extends InputStream> stream, StreamOptions option) throws IOException {
        InputStream input = null;
        DataInputStream data = null;
        boolean suppress = true;
        
        try {
            input = stream.getInput();
            data = new DataInputStream(new BufferedInputStream(
                option == StreamOptions.GZIP_COMPRESSION ? new GZIPInputStream(input) : input
            ));
            
            NbtCompound result = fromCompound(get().LOAD_COMPOUND.loadNbt(data));
            suppress = false;
            return result;
            
        } finally {
            if (data != null)
                Closeables.close(data, suppress);
            else if (input != null)
                Closeables.close(input, suppress);
        }
    }