private boolean setValueAtRow(int row, final Object newValue) {
    final Property property = myProperties.get(row);

    final Object[] oldValue = new Object[1];
    boolean isNewValue;
    try {
      oldValue[0] = getValue(property);
      isNewValue = !Comparing.equal(oldValue[0], newValue);
      if (newValue == null && oldValue[0] instanceof String && ((String)oldValue[0]).isEmpty()) {
        isNewValue = false;
      }
    }
    catch (Throwable e) {
      isNewValue = true;
    }

    boolean isSetValue = true;
    final boolean[] needRefresh = new boolean[1];

    if (isNewValue) {
      isSetValue = doSetValue(() -> {
        for (PropertiesContainer component : myContainers) {
          property.setValue(component, newValue);
          needRefresh[0] |= property.needRefreshPropertyList(component, oldValue[0], newValue);
        }
      });
    }

    if (isSetValue) {
      if (property.needRefreshPropertyList() || needRefresh[0]) {
        update(myContainers, null, property.closeEditorDuringRefresh());
      }
      else {
        myModel.fireTableRowsUpdated(row, row);
      }
    }

    return isSetValue;
  }
private boolean setValueAtRow(int row, final Object newValue)