I think the functions like `createSheared` and such should be defined in `ChromaticObject`.  They can be defined in terms of the `apply` functions with a comment that these are defined for each derived class (as a reminder to developers if someone adds a new derived class).