PsiElement () { 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; }