Generalize "can we augment this" checking.

Make it an archetype, and then opt classes in. Also tweak the exception
type that is used to be more general, and try to make the wording of it
general enough for all the cases we could get it, so it won't mislead.