@property<EOL><INDENT>def context(self):<DEDENT>
try:<EOL><INDENT>return _context.stack[-<NUM_LIT:1>]<EOL><DEDENT>except IndexError:<EOL><INDENT>return None<EOL><DEDENT>
The currently active invocation context. A new context is created as a
result of invoking ``test()`` and is only valid for the duration of
the invocation.

Can be used by predicates to store arbitrary data, eg. for caching
computed values, setting flags, etc., that can be used by predicates
later on in the chain.

Inside a predicate function it can be used like so::

    >>> @predicate
    ... def mypred(a, b):
    ...     value = compute_expensive_value(a)
    ...     mypred.context['value'] = value
    ...     return True
    ...

Other predicates can later use stored values::

    >>> @predicate
    ... def myotherpred(a, b):
    ...     value = myotherpred.context.get('value')
    ...     if value is not None:
    ...         return do_something_with_value(value)
    ...     else:
    ...         return do_something_without_value()
    ...