* Ease Hypothesis shrinking
This is a tiny performance improvement for shrinking.
Unconditionally drawing and conditionally *using* these boolean flags minimises the impact of mutating other parts of an input on the structure here, which in turn means more attempts will be valid.
* Refactor Hypothesis strategy
Using the composite decorator allows for a much clearer imperative description of how the class is constructed.