@NotNull
    @Override
    @SuppressWarnings({ "RawUseOfParameterizedType" })
    public PsiElement getNavigationElement() {
        if (myNavigationElement == null && myAttribute.isValid()) {
            final XmlTag tag = myAttribute.getParent();
            final Class[] allInterfaces = CompletionLists.getAllInterfaces(tag.getClass());
            myNavigationElement = (PsiElement)Proxy.newProxyInstance(getClass().getClassLoader(), allInterfaces, new InvocationHandler() {
                @Override
                @SuppressWarnings({"AutoBoxing", "AutoUnboxing"})
                public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                    try {
                        final ImplicitModeElement nameElement = ImplicitModeElement.this;

                        return switch (method.getName()) {
                            case "navigate" -> {
                              nameElement.navigate((Boolean)args[0]);
                              yield null;
                            }
                            case "canNavigate" -> nameElement.canNavigate();
                            case "getTextOffset" -> nameElement.getTextOffset();
                            default -> method.invoke(tag, args);
                        };
                    } catch (InvocationTargetException e1) {
                        throw e1.getTargetException();
                    }
                }
            });
        }
        return myAttribute.isValid() ? myNavigationElement : this;
    }
@NotNull
    @Override
    @SuppressWarnings({ "RawUseOfParameterizedType" })
    public PsiElement getNavigationElement()