private ASTNode failedToBindStubToAst(@NotNull PsiFileImpl file, final @NotNull FileElement fileElement) {
    VirtualFile vFile = file.getVirtualFile();
    StubTree stubTree = file.getStubTree();
    final String stubString = stubTree != null ? ((PsiFileStubImpl<?>)stubTree.getRoot()).printTree() : null;
    final String astString = RecursionManager.doPreventingRecursion("failedToBindStubToAst", true,
                                                                    () -> DebugUtil.treeToString(fileElement, false));

    final @NonNls String message = "Failed to bind stub to AST for element " + getClass() + " in " +
                                   (vFile == null ? "<unknown file>" : vFile.getPath()) +
                                   "\nFile:\n" + file + "@" + System.identityHashCode(file);

    final String creationTraces = ourTraceStubAstBinding ? dumpCreationTraces(fileElement) : null;

    List<Attachment> attachments = new ArrayList<>();
    if (stubString != null) {
      attachments.add(new Attachment("stubTree.txt", stubString));
    }
    if (astString != null) {
      attachments.add(new Attachment("ast.txt", astString));
    }
    if (creationTraces != null) {
      attachments.add(new Attachment("creationTraces.txt", creationTraces));
    }

    throw new RuntimeExceptionWithAttachments(message, attachments.toArray(Attachment.EMPTY_ARRAY));
  }
private ASTNode failedToBindStubToAst(@NotNull PsiFileImpl file, final @NotNull FileElement fileElement)