void (DfaMemoryStateImpl other) { Set<DfaVariableValue> vars = StreamEx.of(myVariableTypes, other.myVariableTypes).toFlatCollection(Map::keySet, HashSet::new); for (DfaVariableValue var : vars) { DfType type = getDfType(var); DfType otherType = other.getDfType(var); DfType result; if (!type.equals(otherType)) { result = type.join(otherType).correctTypeOnFlush(type).correctTypeOnFlush(otherType); } else { result = type; } recordVariableType(var, result); } }