TypeDfaState (@NotNull TypeDfaState left, @NotNull TypeDfaState right, PsiManager manager) { if (left == right) { return left; } Int2ObjectMap<DFAType> dominantMap = guessDominantMap(left.myVarTypes, right.myVarTypes); if (dominates(left, right, dominantMap)) { return left; } if (dominates(right, left, dominantMap)) { return right; } BitSet resultSet = mergeProhibitedVariables(left.myProhibitedCachingVars, right.myProhibitedCachingVars); Int2ObjectMap<DFAType> resultMap = dominantMap != null ? dominantMap : mergeTypeMaps(left.myVarTypes, right.myVarTypes, manager, resultSet); return new TypeDfaState(resultMap, resultSet); }