@TypeRank
  @Contract(pure = true)
  public static int getTypeRank(@NotNull PsiType type) {
    type = uncapture(type);
    PsiPrimitiveType unboxedType = PsiPrimitiveType.getUnboxedType(type);
    if (unboxedType != null) {
      type = unboxedType;
    }

    int rank = TYPE_TO_RANK_MAP.get(type);
    if (rank != -1) {
      return rank;
    }
    if (type.equalsToText(JAVA_LANG_STRING)) {
      return STRING_RANK;
    }
    return UNKNOWN_RANK;
  }
@TypeRank
  @Contract(pure = true)
  public static int getTypeRank(@NotNull PsiType type)