PsiSubstitutor (Collection<InferenceVariable> vars, PsiSubstitutor substitutor) { if (myErased) { for (InferenceVariable var : vars) { substitutor = substitutor.put(var, null); } } for (InferenceVariable var : vars) { final PsiType instantiation = var.getInstantiation(); final PsiType type = instantiation == PsiTypes.nullType() ? checkBoundsConsistency(substitutor, var) : instantiation; if (type != PsiTypes.nullType()) { substitutor = substitutor.put(var, type); } } return substitutor; }