code: def define_component(self, body, type_token, def_name, param_defs):
          
          for subclass in ComponentVisitor.__subclasses__():
              if subclass.comp_type == self._CompType_Map[type_token.type]:
                  visitor = subclass(self.compiler, def_name, param_defs)
                  return visitor.visit(body)
          raise RuntimeError
docs: Given component definition, recurse to another ComponentVisitor
          to define a new component