boolean (final Object obj) { if (this == obj) return true; if (!(obj instanceof PsiIntersectionType)) return false; final PsiType[] first = getConjuncts(); final PsiType[] second = ((PsiIntersectionType)obj).getConjuncts(); if (first.length != second.length) return false; //positional equality for (int i = 0; i < first.length; i++) { if (!first[i].equals(second[i])) return false; } return true; }