code: def indented_str(self, indent=None):
      if indent is None:
          indent = ""
      s = (
          indent
          + self.name
          + "("
          + ", ".join([str(var) for var in self._block_inputs])
      )
      s += ") {\n"
      for op in self.operations:
          s += op.indented_str(indent + SPACES * 1)
      s += indent + "} -> ("
      if self._outputs is not None:
          s += ", ".join(["%" + v.name for v in self._outputs])
      s += ")\n"
      return s
  
imports: from collections import Counter, OrderedDict
  import copy
  import logging
  import numpy
  from six import string_types
  from .None import SPACES, types
  from .var import Var, InternalVar, ListVar
  from .visitors.dot_visitor import DotVisitor
  from .types.symbolic import k_used_symbols, k_num_internal_syms, any_symbolic, is_symbolic
  from .input_type import TupleInputType
label_desc: Use image node_id 19 for calling the Block obj's underlying member method code with example usage: obj.indented_str(indent) and returns: s