docs: public byte[] buildBook(final ContentSpec contentSpec, final String requester, final DocBookBuildingOptions builderOptions,
              final Map<String, byte[]> overrideFiles, final BuildType buildType) throws BuilderCreationException, BuildProcessingException {
          if (contentSpec == null) {
              throw new BuilderCreationException("No content specification specified. Unable to build from nothing!");
          } else if (requester == null) {
              throw new BuilderCreationException("A user must be specified as the user who requested the build.");
          }
  
          if (buildType == BuildType.PUBLICAN) {
              docbookBuilder = new PublicanDocBookBuilder(providerFactory);
          } else if (buildType == BuildType.PUBLICAN_PO) {
              docbookBuilder = new PublicanPODocBookBuilder(providerFactory);
          } else if (buildType == BuildType.JDOCBOOK) {
              docbookBuilder = new JDocBookBuilder(providerFactory);
          } else {
              docbookBuilder = new DocBookBuilder(providerFactory);
          }
  
          final HashMap<String, byte[]> files = docbookBuilder.buildBook(contentSpec, requester, builderOptions, overrideFiles);
  
          // Create the zip file
          byte[] zipFile = null;
          try {
              zipFile = ZipUtilities.createZip(files);
          } catch (final Exception e) {
              e.printStackTrace();
          }
          return zipFile;
      }