I like the readability in your proposal, but I think we'd lose the ability to use a regular `Function1` as an analyzer, no? How would you write `trait AnalysisFunction[C,B,I<:B,O<:B] extends (Slab[C,B,I] => Slab[C,B,B with I with O])` in your proposal?