protected final @NotNull PsiSubstitutor resolveSubset(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;
  }
protected final @NotNull PsiSubstitutor resolveSubset(Collection<InferenceVariable> vars, PsiSubstitutor substitutor)