@Nullable
  @Override
  public Object getValueAt(int rowIndex, int columnIndex) {
    try {
      final DirDiffElementImpl element = myElements.get(rowIndex);
      if (element.isSeparator()) {
        return columnIndex == 0 ? element.getName() : null;
      }

      final ColumnType columnType = getColumnType(columnIndex);
      boolean isSrc = columnIndex < getColumnCount() / 2;
      if (columnType == ColumnType.NAME) {
        return isSrc ? element.getSourcePresentableName() : element.getTargetPresentableName();
      }
      else if (columnType == ColumnType.SIZE) {
        return isSrc ? element.getSourceSize() : element.getTargetSize();
      }
      else if (columnType == ColumnType.DATE) {
        return isSrc ? element.getSourceModificationDate() : element.getTargetModificationDate();
      }
      return "";
    }
    catch (Exception e) {
      //noinspection SSBasedInspection
      SwingUtilities.invokeLater(() -> {
        myElements.clear();
        fireTableDataChanged();
        myTable.getEmptyText().setText(DiffBundle.message("data.has.been.changed.externally.reloading.data"));
        reloadModel(true);
        myTable.repaint();
      });
      return "";
    }
  }
@Nullable
  @Override
  public Object getValueAt(int rowIndex, int columnIndex)