code: def step(self, actions, step_mul=None):
      
      if self._state == environment.StepType.LAST:
        return self.reset()
  
      skip = not self._ensure_available_actions
      self._parallel.run(
          (c.act, f.transform_action(o.observation, a, skip_available=skip))
          for c, f, o, a in zip(
              self._controllers, self._features, self._obs, actions))
  
      self._state = environment.StepType.MID
      return self._step(step_mul)
docs: Apply actions, step the world forward, and return observations.
  
      Args:
        actions: A list of actions meeting the action spec, one per agent.
        step_mul: If specified, use this rather than the environment's default.
  
      Returns:
        A tuple of TimeStep namedtuples, one per agent.