docs: public String getXML() {
  
          // make sure voltroot exists
          new File(m_voltRootPath).mkdirs();
  
          org.voltdb.compiler.deploymentfile.ObjectFactory factory =
              new org.voltdb.compiler.deploymentfile.ObjectFactory();
  
          // <deployment>
          DeploymentType deployment = factory.createDeploymentType();
          JAXBElement<DeploymentType> doc = factory.createDeployment(deployment);
  
          // <cluster>
          ClusterType cluster = factory.createClusterType();
          deployment.setCluster(cluster);
          cluster.setHostcount(m_hostCount);
          cluster.setSitesperhost(m_sitesPerHost);
          cluster.setKfactor(m_replication);
          cluster.setSchema(m_useDDLSchema ? SchemaType.DDL : SchemaType.CATALOG);
  
          // <paths>
          PathsType paths = factory.createPathsType();
          deployment.setPaths(paths);
          Voltdbroot voltdbroot = factory.createPathsTypeVoltdbroot();
          paths.setVoltdbroot(voltdbroot);
          voltdbroot.setPath(m_voltRootPath);
  
          if (m_snapshotPath != null) {
              PathsType.Snapshots snapshotPathElement = factory.createPathsTypeSnapshots();
              snapshotPathElement.setPath(m_snapshotPath);
              paths.setSnapshots(snapshotPathElement);
          }
  
          if (m_commandLogPath != null) {
              PathsType.Commandlog commandLogPathElement = factory.createPathsTypeCommandlog();
              commandLogPathElement.setPath(m_commandLogPath);
              paths.setCommandlog(commandLogPathElement);
          }
  
          if (m_internalSnapshotPath != null) {
              PathsType.Commandlogsnapshot commandLogSnapshotPathElement = factory.createPathsTypeCommandlogsnapshot();
              commandLogSnapshotPathElement.setPath(m_internalSnapshotPath);
              paths.setCommandlogsnapshot(commandLogSnapshotPathElement);
          }
  
          if (m_snapshotPrefix != null) {
              SnapshotType snapshot = factory.createSnapshotType();
              deployment.setSnapshot(snapshot);
              snapshot.setFrequency(m_snapshotFrequency);
              snapshot.setPrefix(m_snapshotPrefix);
              snapshot.setRetain(m_snapshotRetain);
          }
  
          SecurityType security = factory.createSecurityType();
          deployment.setSecurity(security);
          security.setEnabled(m_securityEnabled);
          SecurityProviderString provider = SecurityProviderString.HASH;
          if (m_securityEnabled) try {
              provider = SecurityProviderString.fromValue(m_securityProvider);
          } catch (IllegalArgumentException shouldNotHappenSeeSetter) {
          }
          security.setProvider(provider);
  
          if (m_commandLogSync != null || m_commandLogEnabled != null ||
                  m_commandLogFsyncInterval != null || m_commandLogMaxTxnsBeforeFsync != null ||
                  m_commandLogSize != null) {
              CommandLogType commandLogType = factory.createCommandLogType();
              if (m_commandLogSync != null) {
                  commandLogType.setSynchronous(m_commandLogSync.booleanValue());
              }
              if (m_commandLogEnabled != null) {
                  commandLogType.setEnabled(m_commandLogEnabled);
              }
              if (m_commandLogSize != null) {
                  commandLogType.setLogsize(m_commandLogSize);
              }
              if (m_commandLogFsyncInterval != null || m_commandLogMaxTxnsBeforeFsync != null) {
                  CommandLogType.Frequency frequency = factory.createCommandLogTypeFrequency();
                  if (m_commandLogFsyncInterval != null) {
                      frequency.setTime(m_commandLogFsyncInterval);
                  }
                  if (m_commandLogMaxTxnsBeforeFsync != null) {
                      frequency.setTransactions(m_commandLogMaxTxnsBeforeFsync);
                  }
                  commandLogType.setFrequency(frequency);
              }
              deployment.setCommandlog(commandLogType);
          }
  
          // <partition-detection>/<snapshot>
          PartitionDetectionType ppd = factory.createPartitionDetectionType();
          deployment.setPartitionDetection(ppd);
          ppd.setEnabled(m_ppdEnabled);
  
          // <systemsettings>
          SystemSettingsType systemSettingType = factory.createSystemSettingsType();
          Temptables temptables = factory.createSystemSettingsTypeTemptables();
          temptables.setMaxsize(m_maxTempTableMemory);
          systemSettingType.setTemptables(temptables);
          if (m_snapshotPriority != null) {
              SystemSettingsType.Snapshot snapshot = factory.createSystemSettingsTypeSnapshot();
              snapshot.setPriority(m_snapshotPriority);
              systemSettingType.setSnapshot(snapshot);
          }
          deployment.setSystemsettings(systemSettingType);
  
          // <users>
          if (m_users.size() > 0) {
              UsersType users = factory.createUsersType();
              deployment.setUsers(users);
  
              // <user>
              for (final UserInfo info : m_users) {
                  User user = factory.createUsersTypeUser();
                  users.getUser().add(user);
                  user.setName(info.name);
                  user.setPassword(info.password);
  
                  // build up user/roles.
                  if (info.roles.length > 0) {
                      final StringBuilder roles = new StringBuilder();
                      for (final String role : info.roles) {
                          if (roles.length() > 0)
                              roles.append(",");
                          roles.append(role.toLowerCase());
                      }
                      user.setRoles(roles.toString());
                  }
              }
          }
  
          SslType ssl = factory.createSslType();
          deployment.setSsl(ssl);
          ssl.setEnabled(false);
  
          // <httpd>. Disabled unless port # is configured by a testcase
          HttpdType httpd = factory.createHttpdType();
          deployment.setHttpd(httpd);
          httpd.setEnabled(m_httpdPortNo != -1);
          httpd.setPort(m_httpdPortNo);
          Jsonapi json = factory.createHttpdTypeJsonapi();
          httpd.setJsonapi(json);
          json.setEnabled(m_jsonApiEnabled);
  
          // <export>
          ExportType export = factory.createExportType();
          deployment.setExport(export);
  
          // <dr>
          if (m_drRole != DrRoleType.NONE) {
              final DrType drType = factory.createDrType();
              deployment.setDr(drType);
              drType.setRole(m_drRole);
              drType.setId(1);
          }
  
          // Have some yummy boilerplate!
          String xml = null;
          try {
              JAXBContext context = JAXBContext.newInstance(DeploymentType.class);
  
              Marshaller marshaller = context.createMarshaller();
              marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                      Boolean.TRUE);
              StringWriter writer = new StringWriter();
              marshaller.marshal(doc, writer);
              xml = writer.toString();
          }
          catch (Exception e) {
              e.printStackTrace();
              assert(false);
          }
  
          return xml;
      }