Refactored to use regular Moose and roles as the way to assemble the system, since there is a single predictor and substantiator sharing the context. This is a more natural composition for Moose, even if it isn't the way you'd have to do it in Java