public GATKReportTable generateReportTable(final String covariateNames) {
   GATKReportTable argumentsTable;
   if (SORT_BY_ALL_COLUMNS) {
     argumentsTable =
         new GATKReportTable(
             "Arguments",
             "Recalibration argument collection values used in this run",
             2,
             GATKReportTable.TableSortingWay.SORT_BY_COLUMN);
   } else {
     argumentsTable =
         new GATKReportTable(
             "Arguments", "Recalibration argument collection values used in this run", 2);
   }
   argumentsTable.addColumn("Argument");
   argumentsTable.addColumn(RecalUtils.ARGUMENT_VALUE_COLUMN_NAME);
   argumentsTable.addRowID("covariate", true);
   argumentsTable.set("covariate", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, covariateNames);
   argumentsTable.addRowID("no_standard_covs", true);
   argumentsTable.set(
       "no_standard_covs", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, DO_NOT_USE_STANDARD_COVARIATES);
   argumentsTable.addRowID("run_without_dbsnp", true);
   argumentsTable.set(
       "run_without_dbsnp", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, RUN_WITHOUT_DBSNP);
   argumentsTable.addRowID("solid_recal_mode", true);
   argumentsTable.set("solid_recal_mode", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, SOLID_RECAL_MODE);
   argumentsTable.addRowID("solid_nocall_strategy", true);
   argumentsTable.set(
       "solid_nocall_strategy", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, SOLID_NOCALL_STRATEGY);
   argumentsTable.addRowID("mismatches_context_size", true);
   argumentsTable.set(
       "mismatches_context_size", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, MISMATCHES_CONTEXT_SIZE);
   argumentsTable.addRowID("indels_context_size", true);
   argumentsTable.set(
       "indels_context_size", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, INDELS_CONTEXT_SIZE);
   argumentsTable.addRowID("mismatches_default_quality", true);
   argumentsTable.set(
       "mismatches_default_quality",
       RecalUtils.ARGUMENT_VALUE_COLUMN_NAME,
       MISMATCHES_DEFAULT_QUALITY);
   argumentsTable.addRowID("deletions_default_quality", true);
   argumentsTable.set(
       "deletions_default_quality",
       RecalUtils.ARGUMENT_VALUE_COLUMN_NAME,
       DELETIONS_DEFAULT_QUALITY);
   argumentsTable.addRowID("insertions_default_quality", true);
   argumentsTable.set(
       "insertions_default_quality",
       RecalUtils.ARGUMENT_VALUE_COLUMN_NAME,
       INSERTIONS_DEFAULT_QUALITY);
   argumentsTable.addRowID("maximum_cycle_value", true);
   argumentsTable.set(
       "maximum_cycle_value", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, MAXIMUM_CYCLE_VALUE);
   argumentsTable.addRowID("low_quality_tail", true);
   argumentsTable.set("low_quality_tail", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, LOW_QUAL_TAIL);
   argumentsTable.addRowID("default_platform", true);
   argumentsTable.set("default_platform", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, DEFAULT_PLATFORM);
   argumentsTable.addRowID("force_platform", true);
   argumentsTable.set("force_platform", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, FORCE_PLATFORM);
   argumentsTable.addRowID("quantizing_levels", true);
   argumentsTable.set(
       "quantizing_levels", RecalUtils.ARGUMENT_VALUE_COLUMN_NAME, QUANTIZING_LEVELS);
   argumentsTable.addRowID("recalibration_report", true);
   argumentsTable.set(
       "recalibration_report",
       RecalUtils.ARGUMENT_VALUE_COLUMN_NAME,
       existingRecalibrationReport == null
           ? "null"
           : existingRecalibrationReport.getAbsolutePath());
   argumentsTable.addRowID("binary_tag_name", true);
   argumentsTable.set(
       "binary_tag_name",
       RecalUtils.ARGUMENT_VALUE_COLUMN_NAME,
       BINARY_TAG_NAME == null ? "null" : BINARY_TAG_NAME);
   return argumentsTable;
 }