@Override
  public Object @NotNull [] getVariants() {
    final String name = getContainingFile().getName();
    final PsiClass superProvider = JavaPsiFacade.getInstance(getProject()).findClass(name, getResolveScope());
    if (superProvider != null) {
      final List<Object> result = new ArrayList<>();
      ClassInheritorsSearch.search(superProvider).forEach(psiClass -> {
        if (!psiClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
          final String jvmClassName = ClassUtil.getJVMClassName(psiClass);
          if (jvmClassName != null) {
            result.add(LookupElementBuilder.create(psiClass, jvmClassName));
          }
        }
        return true;
      });
      return ArrayUtil.toObjectArray(result);
    }
    return ArrayUtilRt.EMPTY_OBJECT_ARRAY;
  }
@Override
  public Object @NotNull [] getVariants()