void (@NotNull ArrangementAtomMatchConditionComponent component) { ArrangementAtomMatchCondition condition = component.getMatchCondition(); ArrangementMatchingRulesModel model = myList.getModel(); int i = getModelIndex(); if (i < 0) { return; } myRow = i; ArrangementMatchCondition existingCondition = myRule.getMatcher().getCondition(); if (existingCondition.equals(condition)) { // We can't just remove an element at this time because that breaks last row rendering. model.set(i, myModelValue = new DummyElement()); } else { assert existingCondition instanceof ArrangementCompositeMatchCondition; Set<ArrangementMatchCondition> operands = ((ArrangementCompositeMatchCondition)existingCondition).getOperands(); operands.remove(condition); if (operands.isEmpty()) { // We can't just remove an element at this time because that breaks last row rendering. model.set(i, myModelValue = new DummyElement()); } else if (operands.size() == 1) { myModelValue = new StdArrangementMatchRule(new StdArrangementEntryMatcher(operands.iterator().next()), myRule.getOrderType()); model.set(i, myModelValue); } else if (ArrangementConstants.LOG_RULE_MODIFICATION) { LOG.info(String.format("Removed '%s' condition. Current rule state: %s", condition, myRule)); myModelValue = myRule; } } ArrangementAnimationPanel panel = component.getAnimationPanel(); new ArrangementAnimationManager(panel, this).startAnimation(); }