@Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
      Pair<Object, T> pair = data.get(rowIndex);
      if (columnIndex == 1) {
        if (Comparing.equal(aValue, pair.second)) return;
        @SuppressWarnings("unchecked") T t = (T)aValue;
        data.set(rowIndex, pair(pair.first, t));
      }
      else {
        if (Comparing.equal(aValue, pair.first)) return;
        data.set(rowIndex, pair(aValue, pair.second));
      }
      fireTableRowsUpdated(rowIndex, rowIndex);
    }
@Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex)