docs: public DynamicReport build() {
  
          if (built) {
              throw new DJBuilderException("DynamicReport already built. Cannot use more than once.");
          } else {
              built = true;
          }
  
          report.setOptions(options);
          if (!globalVariablesGroup.getFooterVariables().isEmpty() || !globalVariablesGroup.getHeaderVariables().isEmpty() || !globalVariablesGroup.getVariables().isEmpty() || hasPercentageColumn()) {
              report.getColumnsGroups().add(0, globalVariablesGroup);
          }
  
          createChartGroups();
  
          addGlobalCrosstabs();
  
          addSubreportsToGroups();
  
          concatenateReports();
  
          report.setAutoTexts(autoTexts);
          return report;
      }