void (PsiElement element) { if (element == null || element instanceof PsiCompiledElement || isBinary(element)) return; element.accept(new PsiRecursiveElementVisitor(true) { @Override public void visitElement(@NotNull PsiElement element) { Pair<PsiFileSystemItem, Integer> pair = element.getCopyableUserData(REF_FILE_SYSTEM_ITEM_KEY); final PsiFileSystemItem item = pair != null ? pair.first : null; element.putCopyableUserData(REF_FILE_SYSTEM_ITEM_KEY, null); element = bindElement(element, item, pair != null ? pair.second : -1); if (element != null) { element.acceptChildren(this); } if (element instanceof PsiLanguageInjectionHost) { InjectedLanguageManager.getInstance(element.getProject()) .enumerate(element, (injectedPsi, places) -> decodeFileReferences(injectedPsi)); } } }); }