Introduce a parameter to describe which lifecycle stage a mutation rule should apply to, rather than baking it into the method name. The lifecycle is still hard-coded in the implementation.
Finalize the header sources for each native source set independently, rather than finalizing the component container.
"Fix" broken test, by removing the TODO now that the behaviour is what we want.