code: def _get_matching_indent_nodes(self, tree_nodes, is_new_suite):
      # There might be a random dedent where we have to stop copying.
      # Invalid indents are ok, because the parser handled that
      # properly before. An invalid dedent can happen, because a few
      # lines above there was an invalid indent.
      node_iterator = iter(tree_nodes)
      if is_new_suite:
          yield next(node_iterator)
  
      first_node = next(node_iterator)
      indent = _get_indentation(first_node)
      if not is_new_suite and indent not in self.indents:
          return
      yield first_node
  
      for n in node_iterator:
          if _get_indentation(n) != indent:
              return
          yield n
  
imports: import re
  import difflib
  from collections import namedtuple
  import logging
  from parso.utils import split_lines
  from parso.python.parser import Parser
  from parso.python.tree import EndMarker
  from parso.python.tokenize import PythonToken, BOM_UTF8_STRING
  from parso.python.token import PythonTokenTypes
label_desc: Use image node_id 7 for calling the _NodesTree obj's underlying member method code with example usage: obj._get_matching_indent_nodes(tree_nodes, is_new_suite) without return types