I have an UI component that will be used in several UI module in an application.

I would like to annotate the UI component that to be injected into several other classes in one UI module to be a singleton, but not a singleton across the whole application. So that for each UI module use the UI component, one and only one of the UI component instance is used.

I couldn't find a straight solution for this from the Guice document. So i think maybe I can use annotation to distinguish those instance? 
Say in Module A, I annotate all the injection of the UI component with `Named("ModuleA")`; and in Module B, with `Named("ModulaB")`. and in the configuration, i tried to use something like:

```
this.bind(UIComponentA.class)
    .annotatedWith(Names.named("ModulaA"))
    .to(UIComponentAImpl.class).in(Singleton.class);

this.bind(UIComponentA.class)
    .annotatedWith(Names.named("ModulaB"))
    .to(UIComponentAImpl.class).in(Singleton.class);

```

Because UICompoenetAImpl also need to be injected, so I couldn't simply create the instance there. Totally not sure if this works. 

And I'm wondering what's the standard way to accomplish this?