Could we break this pull request up into two? One for the registry creation and passing, and one for the callbacks (or maybe even per-type of callback?)

I'm worried that we're not merging these tests fast enough. By making the reviews smaller we can start getting stuff committed. I also want you to take feedback from past reviews and apply them to your (existing and new) code. For example, I've noted using "should" to write clear assertion messages before, but it looks like that wasn't carried over into some parts of this file.