code: async def spawn(self, agent_cls, *args, addr=None, **kwargs):
          
          if addr is None:
              addr = await self._get_smallest_env()
          r_manager = await self.env.connect(addr)
          return await r_manager.spawn(agent_cls, *args, **kwargs)
docs: Spawn a new agent in a slave environment.
  
          :param str agent_cls:
              `qualname`` of the agent class.
              That is, the name should be in the form ``pkg.mod:cls``, e.g.
              ``creamas.core.agent:CreativeAgent``.
          :param str addr:
              Optional. Address for the slave enviroment's manager.
              If :attr:`addr` is None, spawns the agent in the slave environment
              with currently smallest number of agents.
  
          :returns: :class:`aiomas.rpc.Proxy` and address for the created agent.
  
          The ``*args`` and ``**kwargs`` are passed down to the agent's
          :meth:`__init__`.
  
          .. note::
  
              Use :meth:`~creamas.mp.MultiEnvironment.spawn_n` to spawn large
              number of agents with identical initialization parameters.