@Override
    public @Nullable TypeConvertibility weigh(@NotNull LookupElement element) {
      PsiClass psiClass = ObjectUtils.tryCast(element.getObject(), PsiClass.class);
      if (psiClass == null) return TypeConvertibility.UNKNOWN;
      PsiClassType type = JavaPsiFacade.getElementFactory(psiClass.getProject()).createType(psiClass);
      TypeConvertibility typeConvertibility;
      if (!type.isConvertibleFrom(myOrigType)) {
        typeConvertibility = TypeConvertibility.NON_CONVERTIBLE;
      } else if (type.isAssignableFrom(myOrigType)) {
        typeConvertibility = TypeConvertibility.SUPERTYPE;
      } else if (myOrigType.isAssignableFrom(type)) {
        typeConvertibility = TypeConvertibility.SUBTYPE;
      } else {
        typeConvertibility = TypeConvertibility.CONVERTIBLE;
      }
      if (typeConvertibility.compareTo(TypeConvertibility.HAS_NESTED) > 0 && psiClass.getAllInnerClasses().length > 0) {
        typeConvertibility = TypeConvertibility.HAS_NESTED;
      }
      return typeConvertibility;
    }
@Override
    public @Nullable TypeConvertibility weigh(@NotNull LookupElement element)