def derivative_context_cases():
    yield ('Derivative', compose(DerivativeContext, NumericContext))
    yield ('PassThru', compose(PassThruContext, NumericContext))
    yield ('Traits', compose(TraitsContext, NumericContext))
    yield ('Cached', compose(CachedContext, NumericContext))
    yield ('LongPipe', compose(* [DerivativeContext]*10 + [NumericContext] ))
def numeric_context_cases():
    yield ('Basic', NumericContext)

    # TODO Bigger cross-section: push everything through compose(loads, dumps)
    yield ('BasicPickled', compose(loads, dumps, NumericContext))