docs: public static void store(DataNode node, OutputStream out, boolean addChecksum, boolean ignoreMissingMarshallers,
              ProgressListener progressListener, AbstractDataMarshaller<?>... marshallers) throws IOException {
          final Map<String, AbstractDataMarshaller<?>> marshallerMap = generateMarshallerMap(true, Arrays.asList(marshallers));
          marshallerMap.putAll(generateMarshallerMap(true, DEFAULT_MARSHALLERS));
  
          GZIPOutputStream gzipOutputStream = null;
          try {
              gzipOutputStream = new GZIPOutputStream(out);
              OutputStream outputStream = gzipOutputStream;
              MessageDigestOutputStream messageDigestOutputStream = null;
  
              if (addChecksum) {
                  messageDigestOutputStream = new MessageDigestOutputStream(outputStream, CHECKSUM_ALGORITHM);
                  outputStream = messageDigestOutputStream;
              }
              final DataOutputStream dOut = new DataOutputStream(outputStream);
  
              //write header
              dOut.write(XDATA_HEADER);
  
              //serialize the node
              serialize(marshallerMap, dOut, node, ignoreMissingMarshallers, progressListener);
  
              if (addChecksum) {
                  final byte[] digest = messageDigestOutputStream.getDigest();
                  dOut.writeBoolean(true);
                  dOut.write(digest);
              }
          } catch (NoSuchAlgorithmException ex) {
              throw new IOException("Checksum algorithm not available", ex);
          } finally {
              gzipOutputStream.close();
          }
      }