@Override
  public Object @NotNull [] getVariants() {
    final Object value = myElement.getValue();
    if (value instanceof String) {
      final String type = getMemberType(myElement);

      if (type != null) {
        final ReflectiveClass ownerClass = getReflectiveClass(myContext);
        if (ownerClass != null) {
          return switch (type) {
            case FIND_GETTER, FIND_SETTER, FIND_VAR_HANDLE ->
              lookupFields(ownerClass, JavaLangInvokeHandleReference::isNonStaticField);
            case FIND_STATIC_GETTER, FIND_STATIC_SETTER, FIND_STATIC_VAR_HANDLE ->
              lookupFields(ownerClass, JavaLangInvokeHandleReference::isStaticField);
            case FIND_VIRTUAL -> lookupMethods(ownerClass, JavaLangInvokeHandleReference::isNonStaticMethod);
            case FIND_STATIC -> lookupMethods(ownerClass, JavaLangInvokeHandleReference::isStaticMethod);
            default -> ArrayUtilRt.EMPTY_OBJECT_ARRAY;
          };
        }
      }
    }
    return ArrayUtilRt.EMPTY_OBJECT_ARRAY;
  }
@Override
  public Object @NotNull [] getVariants()