/**
   * Add {@link OptionColumn} followed by study variable into {@link #optionalColumnMapping} and {@link #columnMapping}.
   * The header like: opt_study_variable[1]_{name}
   *
   * @param studyVariable SHOULD NOT empty.
   * @param name SHOULD NOT empty.
   * @param columnType SHOULD NOT empty.
   */
 public string AddOptionalColumn(StudyVariable studyVariable, string name, Type columnType)
 {
     MZTabColumn column = new OptionColumn(studyVariable, name, columnType,
                                           ParseColumnOrder(columnMapping.Last().Key));
     return AddOptionColumn(column);
 }
 /**
  * Add {@link OptionColumn} followed by ms_run into {@link #optionalColumnMapping} and {@link #columnMapping}.
  * The header like: opt_ms_run[1]_{name}
  *
  * @param msRun SHOULD NOT empty.
  * @param name SHOULD NOT empty.
  * @param columnType SHOULD NOT empty.
  */
 public string AddOptionalColumn(MsRun msRun, String name, Type columnType)
 {
     MZTabColumn column = new OptionColumn(msRun, name, columnType, ParseColumnOrder(columnMapping.Last().Key));
     return AddOptionColumn(column);
 }
 /**
  * Add {@link OptionColumn} followed by assay into {@link #optionalColumnMapping} and {@link #columnMapping}.
  * The header like: opt_assay[1]_{name}
  *
  * @param assay SHOULD NOT empty.
  * @param name SHOULD NOT empty.
  * @param columnType SHOULD NOT empty.
  */
 public string AddOptionalColumn(Assay assay, string name, Type columnType)
 {
     MZTabColumn column = new OptionColumn(assay, name, columnType, ParseColumnOrder(columnMapping.Last().Key));
     return AddOptionColumn(column);
 }