val expectedArgumentClass: Class<*>
the exact Class that the default implementation of the module expects as an argument. This shouldn't be a subclass, but exactly what's in the declaration of the constructor/method we want to use.