void (@NotNull DfaVariableValue variable, boolean canonicalize) { DfaVariableValue canonical = canonicalize ? canonicalize(variable) : variable; EqClass eqClass = canonical.getDependentVariables().isEmpty() ? null : getEqClass(canonical); DfaVariableValue newCanonical = eqClass == null ? null : StreamEx.of(eqClass.iterator()).without(canonical).min(EqClass.CANONICAL_VARIABLE_COMPARATOR) .filter(candidate -> !candidate.dependsOn(canonical)) .orElse(null); myStack.replaceAll(value -> handleStackValueOnVariableFlush(value, canonical, newCanonical)); doFlush(canonical, false); flushDependencies(canonical); myCachedHash = null; }