void (@NotNull DfaValue value, @NotNull UnaryOperator<@NotNull DfType> updater) { if (!(value instanceof DfaVariableValue var)) return; EqClass values = getEqClass(var); Iterable<DfaVariableValue> vars = values == null ? List.of(var) : values; for (@NotNull DfaVariableValue eqVar : vars) { DfType type = getRecordedType(eqVar); if (type == null) { type = eqVar.getInherentType(); } DfType newType = updater.apply(type); if (!newType.equals(type)) { recordVariableType(eqVar, newType); } } }