private static boolean typesAgree(@NotNull PsiType type1, @NotNull PsiType type2, @NotNull Context context) {
    final boolean hasArguments = context.getArguments() != null;
    return hasArguments ? //resolve, otherwise same_name_variants
           TypesUtil.isAssignableWithoutConversions(type1, type2) :
           type1.equals(type2);
  }
private static boolean typesAgree(@NotNull PsiType type1, @NotNull PsiType type2, @NotNull Context context)