@SuppressWarnings("serial") public List<CandidateSteps> groovySteps() { final DefaultClassLoadingPicoContainer container = new DefaultClassLoadingPicoContainer( new ThreadCaching() .wrap( new CompositeInjection( new ConstructorInjection(), new SetterInjection().withInjectionOptional()))); container.change(Characteristics.USE_NAMES); container.addComponent(WebDriverProvider.class, driverProvider); // This loads all the Groovy classes in pages.* container.visit( new ClassName("pages.Home"), ".*\\.class", true, new DefaultClassLoadingPicoContainer.ClassVisitor() { public void classFound(Class clazz) { container.addComponent(clazz); } }); ClassLoadingPicoContainer steps = container.makeChildContainer("steps"); steps.addComponent(new ClassName("housekeeping.EmptyCartIfNotAlready")); steps.addComponent(new ClassName("EtsyDotComSteps")); return new PicoStepsFactory(configuration, steps).createCandidateSteps(); }