'Create a scheduler-like object to which iterators may be added.
@param terminationPredicateFactory: A no-argument callable which will
be invoked at the beginning of each step and should return a
no-argument callable which will return True when the step should be
terminated.  The default factory is time-based and allows iterators to
run for 1/100th of a second at a time.
@param scheduler: A one-argument callable which takes a no-argument
callable and should invoke it at some future point.  This will be used
to schedule each step of this Cooperator.
@param started: A boolean which indicates whether iterators should be
stepped as soon as they are added, or if they will be queued up until
L{Cooperator.start} is called.'

def __init__(self, terminationPredicateFactory=_Timer, scheduler=_defaultScheduler, started=True):

    self._tasks = []
    self._metarator = iter(())
    self._terminationPredicateFactory = terminationPredicateFactory
    self._scheduler = scheduler
    self._delayedCall = None
    self._stopped = False
    self._started = started
