Int2ObjectMap<DFAType> (Int2ObjectMap<DFAType> leftMap, Int2ObjectMap<DFAType> rightMap, PsiManager manager, BitSet prohibited) { Int2ObjectMap<DFAType> newFMap = new Int2ObjectOpenHashMap<>(); Stream.concat(rightMap.int2ObjectEntrySet().stream(), leftMap.int2ObjectEntrySet().stream()).forEach(entry -> { int descriptorId = entry.getIntKey(); if (descriptorId == 0 || prohibited.get(descriptorId) || !leftMap.containsKey(descriptorId) || !rightMap.containsKey(descriptorId)) { return; } DFAType candidate = entry.getValue(); DFAType existing = newFMap.get(descriptorId); if (existing == null) { newFMap.put(descriptorId, candidate); } else if (candidate != existing) { newFMap.put(descriptorId, DFAType.merge(candidate, existing, manager)); } }); return newFMap; }