@Contract(value = "null -> null", pure = true)
  private static PsiType uncapture(PsiType type) {
    while (type instanceof PsiCapturedWildcardType) {
      type = ((PsiCapturedWildcardType)type).getUpperBound();
    }
    return type;
  }
@Contract(value = "null -> null", pure = true)
  private static PsiType uncapture(PsiType type)