public CellValue<BigDecimal> makeNewRowNumberCellValue(BigDecimal initialValue) {
   // Rows are 0-based internally but 1-based in the UI
   CellValue<BigDecimal> cv = makeNewNumericCellValue();
   if (initialValue != null) {
     cv.setValue(initialValue);
   }
   return cv;
 }
  /**
   * Convert a type-safe UI CellValue into a type-safe Model CellValue
   *
   * @param column Model column from which data-type can be derived
   * @param cell UI CellValue to convert into Model CellValue
   * @return
   */
  public DTCellValue52 convertToModelCell(BaseColumn column, CellValue<?> cell) {
    DTDataTypes52 dt = getDataType(column);
    DTCellValue52 dtCell = null;

    switch (dt) {
      case BOOLEAN:
        dtCell = new DTCellValue52((Boolean) cell.getValue());
        break;
      case DATE:
        dtCell = new DTCellValue52((Date) cell.getValue());
        break;
      case NUMERIC:
        dtCell = new DTCellValue52((BigDecimal) cell.getValue());
        break;
      default:
        dtCell = new DTCellValue52((String) cell.getValue());
    }
    dtCell.setOtherwise(cell.isOtherwise());
    return dtCell;
  }