class_docstr: A node visitor that converts unchanged top-level statements to
  STANDALONE_COMMENT.
  
  This is used in addition to _convert_unchanged_line_by_line, to
  speed up formatting when there are unchanged top-level
  classes/functions/statements.
code: def visit_suite(self, node: Node) -> Iterator[None]:
      yield from []
      # If there is a STANDALONE_COMMENT node, it means parts of the node tree
      # have fmt on/off/skip markers. Those STANDALONE_COMMENT nodes can't
      # be simply converted by calling str(node). So we just don't convert
      # here.
      if _contains_standalone_comment(node):
          return
      # Find the semantic parent of this suite. For `async_stmt` and
      # `async_funcdef`, the ASYNC token is defined on a separate level by the
      # grammar.
      semantic_parent = node.parent
      if semantic_parent is not None:
          if (
              semantic_parent.prev_sibling is not None
              and semantic_parent.prev_sibling.type == ASYNC
          ):
              semantic_parent = semantic_parent.parent
      if semantic_parent is not None and not _get_line_range(
          semantic_parent
      ).intersection(self._lines_set):
          _convert_node_to_standalone_comment(semantic_parent)
  
imports: import difflib
  from dataclasses import dataclass
  from typing import Collection, Iterator, List, Sequence, Set, Tuple, Union
  from black.nodes import LN, STANDALONE_COMMENT, Leaf, Node, Visitor, first_leaf, furthest_ancestor_with_last_leaf, last_leaf, syms
  from blib2to3.pgen2.token import ASYNC, NEWLINE
label_desc: Use image node_id 3 for calling the _TopLevelStatementsVisitor obj's underlying member method code with example usage: obj.visit_suite(node) without return types