@Nonnull
  public <T> T getInstance(@Nonnull Class<T> type) {
    return getInstance(new Key<>(type));
  }
@Test
  public void whenFactoryRequested_createsInjectedFactory() throws Exception {
    injector = builder.bind(Umm.class, MyUmm.class).build();
    FooFactory factory = injector.getInstance(FooFactory.class);
    Foo chauncey = factory.create("Chauncey");
    assertThat(chauncey.name).isEqualTo("Chauncey");

    Foo anotherChauncey = factory.create("Chauncey");
    assertThat(anotherChauncey).isNotSameInstanceAs(chauncey);

    assertThat(chauncey.thing).isSameInstanceAs(injector.getInstance(Thing.class));
  }