class_docstr: Should be defined, otherwise the API returns empty types.
code: def iterate(self, contextualized_node=None, is_async=False):
      debug.dbg("iterate %s", self)
      try:
          if is_async:
              iter_method = self.py__aiter__
          else:
              iter_method = self.py__iter__
      except AttributeError:
          if contextualized_node is not None:
              from jedi.evaluate import analysis
  
              analysis.add(
                  contextualized_node.context,
                  "type-error-not-iterable",
                  contextualized_node.node,
                  message="TypeError: '%s' object is not iterable"
                  % self,
              )
          return iter([])
      else:
          return iter_method()
  
imports: from parso.python.tree import ExprStmt, CompFor
  from jedi import debug
  from jedi._compatibility import Python3Method, zip_longest, unicode
  from jedi.parser_utils import clean_scope_docstring, get_doc_with_call_signature
  from jedi.common import BaseContextSet, BaseContext
  from jedi.evaluate.helpers import EvaluatorIndexError, EvaluatorTypeError, EvaluatorKeyError
label_desc: Use image node_id 4 for calling the Context obj's underlying member method code with example usage: obj.iterate(contextualized_node, is_async) and returns: iter_method, iter