@Contract("null -> false")
  private boolean typeIsConcreteClass(@Nullable PsiType type) {
    if (type == null) {
      return false;
    }
    final PsiType baseType = type.getDeepComponentType();
    final PsiClass aClass = PsiUtil.resolveClassInClassTypeOnly(baseType);
    if (aClass == null) {
      return false;
    }
    if (ignoreAbstractClasses && aClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
      return false;
    }
    if (ignoreRecords && aClass.isRecord()) {
      return false;
    }
    if (aClass.isInterface() || aClass.isEnum() || aClass.isAnnotationType()) {
      return false;
    }
    if (aClass instanceof PsiTypeParameter) {
      return false;
    }
    return !LibraryUtil.classIsInLibrary(aClass);
  }
@Contract("null -> false")
  private boolean typeIsConcreteClass(@Nullable PsiType type)