public static void decodeFileReferences(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));
        }
      }
    });
  }
public static void decodeFileReferences(PsiElement element)