code: def _start_collective_solver(self, state):
          '''
          Determines who from all the monitors monitoring this agent should
          resolve the issue.
          '''
          own_address = state.agent.get_own_address()
          monitors = [IRecipient(x) for x in state.descriptor.partners
                      if x.role == u'monitor']
          im_included = any([x == own_address for x in monitors])
          if not im_included:
              monitors.append(own_address)
          # this object is going to be stored in the state of CollectiveSolver,
          # we need to deepcopy it not to share a refrence
          state.monitors = copy.deepcopy(monitors)
          state.agent.initiate_protocol(problem.CollectiveSolver,
                                        self, monitors)
          return task.NOT_DONE_YEf _start_collective_solver(self, state):
          '''
          Determines who from all the monitors monitoring this agent should
          resolve the issue.
          '''
          own_address = state.agent.get_own_address()
          monitors = [IRecipient(x) for x in state.descriptor.partners
                      if x.role == u'monitor']
          im_included = any([x == own_address for x in monitors])
          if not im_included:
              monitors.append(own_address)
          # this object is going to be stored in the state of CollectiveSolver,
          # we need to deepcopy it not to share a refrence
          state.monitors = copy.deepcopy(monitors)
          state.agent.initiate_protocol(problem.CollectiveSolver,
                                        self, monitors)
          return task.NOT_DONE_YET
docs: Determines who from all the monitors monitoring this agent should
          resolve the issue.