@Override
  public void smoke() {
    tobacco.smoke(this);
  }
@Test
  void testSmokeEveryThingThroughInjectionFramework() {

    List<Class<? extends Tobacco>> tobaccos = List.of(
        OldTobyTobacco.class,
        RivendellTobacco.class,
        SecondBreakfastTobacco.class
    );

    // Configure the tobacco in the injection framework ...
    // ... and create a new wizard with it
    // Verify if the wizard is smoking the correct tobacco ...
    tobaccos.forEach(tobaccoClass -> {
      final var injector = Guice.createInjector(new AbstractModule() {
        @Override
        protected void configure() {
          bind(Tobacco.class).to(tobaccoClass);
        }
      });
      final var guiceWizard = injector.getInstance(GuiceWizard.class);
      guiceWizard.smoke();
      String lastMessage = appender.getLastMessage();
      assertEquals("GuiceWizard smoking " + tobaccoClass.getSimpleName(), lastMessage);
    });

    // ... and nothing else is happening.
    assertEquals(tobaccos.size(), appender.getLogSize());
  }