'Add a trigger to the indicate phase.
@param phase: One of C{\'before\'}, C{\'during\'}, or C{\'after\'}.
@param callable: An object to be called when this event is triggered.
@param *args: Positional arguments to pass to C{callable}.
@param **kwargs: Keyword arguments to pass to C{callable}.
@return: An opaque handle which may be passed to L{removeTrigger} to
reverse the effects of calling this method.'

def addTrigger(self, phase, callable, *args, **kwargs):

    if (phase not in ('before', 'during', 'after')):
        raise KeyError('invalid    phase')
    getattr(self, phase).append((callable, args, kwargs))
    return (phase, callable, args, kwargs)
