I can't use produce() because I want to only instantiate each plugin once per JulesEngine, and a plugin might implement multiple plugin types (e.g. maybe it's a QueryPlugin and an EnginePlugin and a ProgramArgumentsPlugin and so on...)