PsiType () { if (mixins.isEmpty()) return primary; List<PsiType> types = new ArrayList<>(); if (primary != null) { types.add(primary); } for (Mixin mixin : mixins) { if (mixin.myNegated) { continue; } if (mixin.myType.equals(PsiTypes.nullType())) { continue; } types.add(mixin.myType); } if (types.isEmpty()) return null; return PsiIntersectionType.createIntersection(types.toArray(PsiType.createArray(types.size()))); }