class_docstr: A visitor over Type.
  
  The default behavior recursively traverses the AST.
code: def visit_func_type(self, ft):
      for arg_type in ft.arg_types:
          self.visit(arg_type)
      self.visit(ft.ret_type)
      for type_param in getattr(ft, "type_params", []):
          self.visit(type_param)
      for type_constraint in getattr(ft, "type_constraints", []):
          self.visit(type_constraint)
  
imports: from .ty import TypeVar, IncompleteType, TensorType, FuncType, TupleType, TypeRelation, RefType, GlobalTypeVar, TypeCall
  from .adt import TypeData
label_desc: Use image node_id 4 for calling the TypeVisitor obj's underlying member method code with example usage: obj.visit_func_type(ft) without return types