Home | History | Annotate | Download | only in latest-api-diffs
      1 <?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
      2 <!-- Generated by the JDiff Javadoc doclet -->
      3 <!-- (http://www.jdiff.org) -->
      4 <!-- on Thu Mar 20 20:36:47 PDT 2014 -->
      5 
      6 <api
      7   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
      8   xsi:noNamespaceSchemaLocation='api.xsd'
      9   name="4.0"
     10   jdversion="1.1.1">
     11 
     12 <!--  Command line arguments =  -doclet jdiff.JDiff -docletpath /Users/cgruber/OpenSource/guice/googlecode-master/lib/build/jdiff/jdiff.jar:/Users/cgruber/OpenSource/guice/googlecode-master/lib/build/jdiff/xerces.jar -classpath /Users/cgruber/OpenSource/guice/googlecode-master/lib/javax.inject.jar:/Users/cgruber/OpenSource/guice/googlecode-master/lib/aopalliance.jar:/Users/cgruber/OpenSource/guice/googlecode-master/lib/guava-16.0.1.jar -doclet jdiff.JDiff -docletpath /Users/cgruber/OpenSource/guice/googlecode-master/lib/build/jdiff/jdiff.jar:/Users/cgruber/OpenSource/guice/googlecode-master/lib/build/jdiff/xerces.jar -apidir build/docs/latest-api-diffs -apiname 4.0 -->
     13 <package name="com.google.inject">
     14   <!-- start class com.google.inject.AbstractModule -->
     15   <class name="AbstractModule" extends="java.lang.Object"
     16     abstract="true"
     17     static="false" final="false" visibility="public"
     18     deprecated="not deprecated">
     19     <implements name="com.google.inject.Module"/>
     20     <constructor name="AbstractModule"
     21       static="false" final="false" visibility="public"
     22       deprecated="not deprecated">
     23     </constructor>
     24     <method name="configure"
     25       abstract="false" native="false" synchronized="true"
     26       static="false" final="true" visibility="public"
     27       deprecated="not deprecated">
     28       <param name="builder" type="com.google.inject.Binder"/>
     29     </method>
     30     <method name="configure"
     31       abstract="true" native="false" synchronized="false"
     32       static="false" final="false" visibility="protected"
     33       deprecated="not deprecated">
     34       <doc>
     35       <![CDATA[Configures a {@link Binder} via the exposed methods.]]>
     36       </doc>
     37     </method>
     38     <method name="binder" return="com.google.inject.Binder"
     39       abstract="false" native="false" synchronized="false"
     40       static="false" final="false" visibility="protected"
     41       deprecated="not deprecated">
     42       <doc>
     43       <![CDATA[Gets direct access to the underlying {@code Binder}.]]>
     44       </doc>
     45     </method>
     46     <method name="bindScope"
     47       abstract="false" native="false" synchronized="false"
     48       static="false" final="false" visibility="protected"
     49       deprecated="not deprecated">
     50       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
     51       <param name="scope" type="com.google.inject.Scope"/>
     52       <doc>
     53       <![CDATA[@see Binder#bindScope(Class, Scope)]]>
     54       </doc>
     55     </method>
     56     <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
     57       abstract="false" native="false" synchronized="false"
     58       static="false" final="false" visibility="protected"
     59       deprecated="not deprecated">
     60       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
     61       <doc>
     62       <![CDATA[@see Binder#bind(Key)]]>
     63       </doc>
     64     </method>
     65     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
     66       abstract="false" native="false" synchronized="false"
     67       static="false" final="false" visibility="protected"
     68       deprecated="not deprecated">
     69       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
     70       <doc>
     71       <![CDATA[@see Binder#bind(TypeLiteral)]]>
     72       </doc>
     73     </method>
     74     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
     75       abstract="false" native="false" synchronized="false"
     76       static="false" final="false" visibility="protected"
     77       deprecated="not deprecated">
     78       <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
     79       <doc>
     80       <![CDATA[@see Binder#bind(Class)]]>
     81       </doc>
     82     </method>
     83     <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
     84       abstract="false" native="false" synchronized="false"
     85       static="false" final="false" visibility="protected"
     86       deprecated="not deprecated">
     87       <doc>
     88       <![CDATA[@see Binder#bindConstant()]]>
     89       </doc>
     90     </method>
     91     <method name="install"
     92       abstract="false" native="false" synchronized="false"
     93       static="false" final="false" visibility="protected"
     94       deprecated="not deprecated">
     95       <param name="module" type="com.google.inject.Module"/>
     96       <doc>
     97       <![CDATA[@see Binder#install(Module)]]>
     98       </doc>
     99     </method>
    100     <method name="addError"
    101       abstract="false" native="false" synchronized="false"
    102       static="false" final="false" visibility="protected"
    103       deprecated="not deprecated">
    104       <param name="message" type="java.lang.String"/>
    105       <param name="arguments" type="java.lang.Object[]"/>
    106       <doc>
    107       <![CDATA[@see Binder#addError(String, Object[])]]>
    108       </doc>
    109     </method>
    110     <method name="addError"
    111       abstract="false" native="false" synchronized="false"
    112       static="false" final="false" visibility="protected"
    113       deprecated="not deprecated">
    114       <param name="t" type="java.lang.Throwable"/>
    115       <doc>
    116       <![CDATA[@see Binder#addError(Throwable)]]>
    117       </doc>
    118     </method>
    119     <method name="addError"
    120       abstract="false" native="false" synchronized="false"
    121       static="false" final="false" visibility="protected"
    122       deprecated="not deprecated">
    123       <param name="message" type="com.google.inject.spi.Message"/>
    124       <doc>
    125       <![CDATA[@see Binder#addError(Message)
    126  @since 2.0]]>
    127       </doc>
    128     </method>
    129     <method name="requestInjection"
    130       abstract="false" native="false" synchronized="false"
    131       static="false" final="false" visibility="protected"
    132       deprecated="not deprecated">
    133       <param name="instance" type="java.lang.Object"/>
    134       <doc>
    135       <![CDATA[@see Binder#requestInjection(Object)
    136  @since 2.0]]>
    137       </doc>
    138     </method>
    139     <method name="requestStaticInjection"
    140       abstract="false" native="false" synchronized="false"
    141       static="false" final="false" visibility="protected"
    142       deprecated="not deprecated">
    143       <param name="types" type="java.lang.Class[]"/>
    144       <doc>
    145       <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
    146       </doc>
    147     </method>
    148     <method name="bindInterceptor"
    149       abstract="false" native="false" synchronized="false"
    150       static="false" final="false" visibility="protected"
    151       deprecated="not deprecated">
    152       <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
    153       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
    154       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
    155       <doc>
    156       <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher,
    157   com.google.inject.matcher.Matcher,
    158   org.aopalliance.intercept.MethodInterceptor[])]]>
    159       </doc>
    160     </method>
    161     <method name="requireBinding"
    162       abstract="false" native="false" synchronized="false"
    163       static="false" final="false" visibility="protected"
    164       deprecated="not deprecated">
    165       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
    166       <doc>
    167       <![CDATA[Adds a dependency from this module to {@code key}. When the injector is
    168  created, Guice will report an error if {@code key} cannot be injected.
    169  Note that this requirement may be satisfied by implicit binding, such as
    170  a public no-arguments constructor.
    171 
    172  @since 2.0]]>
    173       </doc>
    174     </method>
    175     <method name="requireBinding"
    176       abstract="false" native="false" synchronized="false"
    177       static="false" final="false" visibility="protected"
    178       deprecated="not deprecated">
    179       <param name="type" type="java.lang.Class&lt;?&gt;"/>
    180       <doc>
    181       <![CDATA[Adds a dependency from this module to {@code type}. When the injector is
    182  created, Guice will report an error if {@code type} cannot be injected.
    183  Note that this requirement may be satisfied by implicit binding, such as
    184  a public no-arguments constructor.
    185 
    186  @since 2.0]]>
    187       </doc>
    188     </method>
    189     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    190       abstract="false" native="false" synchronized="false"
    191       static="false" final="false" visibility="protected"
    192       deprecated="not deprecated">
    193       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
    194       <doc>
    195       <![CDATA[@see Binder#getProvider(Key)
    196  @since 2.0]]>
    197       </doc>
    198     </method>
    199     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    200       abstract="false" native="false" synchronized="false"
    201       static="false" final="false" visibility="protected"
    202       deprecated="not deprecated">
    203       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    204       <doc>
    205       <![CDATA[@see Binder#getProvider(Class)
    206  @since 2.0]]>
    207       </doc>
    208     </method>
    209     <method name="convertToTypes"
    210       abstract="false" native="false" synchronized="false"
    211       static="false" final="false" visibility="protected"
    212       deprecated="not deprecated">
    213       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    214       <param name="converter" type="com.google.inject.spi.TypeConverter"/>
    215       <doc>
    216       <![CDATA[@see Binder#convertToTypes
    217  @since 2.0]]>
    218       </doc>
    219     </method>
    220     <method name="currentStage" return="com.google.inject.Stage"
    221       abstract="false" native="false" synchronized="false"
    222       static="false" final="false" visibility="protected"
    223       deprecated="not deprecated">
    224       <doc>
    225       <![CDATA[@see Binder#currentStage() 
    226  @since 2.0]]>
    227       </doc>
    228     </method>
    229     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    230       abstract="false" native="false" synchronized="false"
    231       static="false" final="false" visibility="protected"
    232       deprecated="not deprecated">
    233       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    234       <doc>
    235       <![CDATA[@see Binder#getMembersInjector(Class)
    236  @since 2.0]]>
    237       </doc>
    238     </method>
    239     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    240       abstract="false" native="false" synchronized="false"
    241       static="false" final="false" visibility="protected"
    242       deprecated="not deprecated">
    243       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
    244       <doc>
    245       <![CDATA[@see Binder#getMembersInjector(TypeLiteral)
    246  @since 2.0]]>
    247       </doc>
    248     </method>
    249     <method name="bindListener"
    250       abstract="false" native="false" synchronized="false"
    251       static="false" final="false" visibility="protected"
    252       deprecated="not deprecated">
    253       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    254       <param name="listener" type="com.google.inject.spi.TypeListener"/>
    255       <doc>
    256       <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher,
    257   com.google.inject.spi.TypeListener)
    258  @since 2.0]]>
    259       </doc>
    260     </method>
    261     <method name="bindListener"
    262       abstract="false" native="false" synchronized="false"
    263       static="false" final="false" visibility="protected"
    264       deprecated="not deprecated">
    265       <param name="bindingMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
    266       <param name="listener" type="com.google.inject.spi.ProvisionListener[]"/>
    267       <doc>
    268       <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...)
    269  @since 4.0]]>
    270       </doc>
    271     </method>
    272     <doc>
    273     <![CDATA[A support class for {@link Module}s which reduces repetition and results in
    274  a more readable configuration. Simply extend this class, implement {@link
    275  #configure()}, and call the inherited methods which mirror those found in
    276  {@link Binder}. For example:
    277 
    278  <pre>
    279  public class MyModule extends AbstractModule {
    280    protected void configure() {
    281      bind(Service.class).to(ServiceImpl.class).in(Singleton.class);
    282      bind(CreditCardPaymentService.class);
    283      bind(PaymentService.class).to(CreditCardPaymentService.class);
    284      bindConstant().annotatedWith(Names.named("port")).to(8080);
    285    }
    286  }
    287  </pre>
    288 
    289  @author crazybob (a] google.com (Bob Lee)]]>
    290     </doc>
    291   </class>
    292   <!-- end class com.google.inject.AbstractModule -->
    293   <!-- start interface com.google.inject.Binder -->
    294   <interface name="Binder"    abstract="true"
    295     static="false" final="false" visibility="public"
    296     deprecated="not deprecated">
    297     <method name="bindInterceptor"
    298       abstract="true" native="false" synchronized="false"
    299       static="false" final="false" visibility="public"
    300       deprecated="not deprecated">
    301       <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
    302       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
    303       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
    304       <doc>
    305       <![CDATA[Binds method interceptor[s] to methods matched by class and method matchers. A method is
    306  eligible for interception if:
    307 
    308  <ul>
    309   <li>Guice created the instance the method is on</li>
    310   <li>Neither the enclosing type nor the method is final</li>
    311   <li>And the method is package-private, protected, or public</li>
    312  </ul>
    313 
    314  @param classMatcher matches classes the interceptor should apply to. For
    315      example: {@code only(Runnable.class)}.
    316  @param methodMatcher matches methods the interceptor should apply to. For
    317      example: {@code annotatedWith(Transactional.class)}.
    318  @param interceptors to bind.  The interceptors are called in the order they
    319      are given.]]>
    320       </doc>
    321     </method>
    322     <method name="bindScope"
    323       abstract="true" native="false" synchronized="false"
    324       static="false" final="false" visibility="public"
    325       deprecated="not deprecated">
    326       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
    327       <param name="scope" type="com.google.inject.Scope"/>
    328       <doc>
    329       <![CDATA[Binds a scope to an annotation.]]>
    330       </doc>
    331     </method>
    332     <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
    333       abstract="true" native="false" synchronized="false"
    334       static="false" final="false" visibility="public"
    335       deprecated="not deprecated">
    336       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
    337       <doc>
    338       <![CDATA[See the EDSL examples at {@link Binder}.]]>
    339       </doc>
    340     </method>
    341     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
    342       abstract="true" native="false" synchronized="false"
    343       static="false" final="false" visibility="public"
    344       deprecated="not deprecated">
    345       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
    346       <doc>
    347       <![CDATA[See the EDSL examples at {@link Binder}.]]>
    348       </doc>
    349     </method>
    350     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
    351       abstract="true" native="false" synchronized="false"
    352       static="false" final="false" visibility="public"
    353       deprecated="not deprecated">
    354       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    355       <doc>
    356       <![CDATA[See the EDSL examples at {@link Binder}.]]>
    357       </doc>
    358     </method>
    359     <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
    360       abstract="true" native="false" synchronized="false"
    361       static="false" final="false" visibility="public"
    362       deprecated="not deprecated">
    363       <doc>
    364       <![CDATA[See the EDSL examples at {@link Binder}.]]>
    365       </doc>
    366     </method>
    367     <method name="requestInjection"
    368       abstract="true" native="false" synchronized="false"
    369       static="false" final="false" visibility="public"
    370       deprecated="not deprecated">
    371       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
    372       <param name="instance" type="T"/>
    373       <doc>
    374       <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
    375  and methods of the given object.
    376 
    377  @param type of instance
    378  @param instance for which members will be injected
    379  @since 2.0]]>
    380       </doc>
    381     </method>
    382     <method name="requestInjection"
    383       abstract="true" native="false" synchronized="false"
    384       static="false" final="false" visibility="public"
    385       deprecated="not deprecated">
    386       <param name="instance" type="java.lang.Object"/>
    387       <doc>
    388       <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
    389  and methods of the given object.
    390 
    391  @param instance for which members will be injected
    392  @since 2.0]]>
    393       </doc>
    394     </method>
    395     <method name="requestStaticInjection"
    396       abstract="true" native="false" synchronized="false"
    397       static="false" final="false" visibility="public"
    398       deprecated="not deprecated">
    399       <param name="types" type="java.lang.Class[]"/>
    400       <doc>
    401       <![CDATA[Upon successful creation, the {@link Injector} will inject static fields
    402  and methods in the given classes.
    403 
    404  @param types for which static members will be injected]]>
    405       </doc>
    406     </method>
    407     <method name="install"
    408       abstract="true" native="false" synchronized="false"
    409       static="false" final="false" visibility="public"
    410       deprecated="not deprecated">
    411       <param name="module" type="com.google.inject.Module"/>
    412       <doc>
    413       <![CDATA[Uses the given module to configure more bindings.]]>
    414       </doc>
    415     </method>
    416     <method name="currentStage" return="com.google.inject.Stage"
    417       abstract="true" native="false" synchronized="false"
    418       static="false" final="false" visibility="public"
    419       deprecated="not deprecated">
    420       <doc>
    421       <![CDATA[Gets the current stage.]]>
    422       </doc>
    423     </method>
    424     <method name="addError"
    425       abstract="true" native="false" synchronized="false"
    426       static="false" final="false" visibility="public"
    427       deprecated="not deprecated">
    428       <param name="message" type="java.lang.String"/>
    429       <param name="arguments" type="java.lang.Object[]"/>
    430       <doc>
    431       <![CDATA[Records an error message which will be presented to the user at a later
    432  time. Unlike throwing an exception, this enable us to continue
    433  configuring the Injector and discover more errors. Uses {@link
    434  String#format(String, Object[])} to insert the arguments into the
    435  message.]]>
    436       </doc>
    437     </method>
    438     <method name="addError"
    439       abstract="true" native="false" synchronized="false"
    440       static="false" final="false" visibility="public"
    441       deprecated="not deprecated">
    442       <param name="t" type="java.lang.Throwable"/>
    443       <doc>
    444       <![CDATA[Records an exception, the full details of which will be logged, and the
    445  message of which will be presented to the user at a later
    446  time. If your Module calls something that you worry may fail, you should
    447  catch the exception and pass it into this.]]>
    448       </doc>
    449     </method>
    450     <method name="addError"
    451       abstract="true" native="false" synchronized="false"
    452       static="false" final="false" visibility="public"
    453       deprecated="not deprecated">
    454       <param name="message" type="com.google.inject.spi.Message"/>
    455       <doc>
    456       <![CDATA[Records an error message to be presented to the user at a later time.
    457 
    458  @since 2.0]]>
    459       </doc>
    460     </method>
    461     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    462       abstract="true" native="false" synchronized="false"
    463       static="false" final="false" visibility="public"
    464       deprecated="not deprecated">
    465       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
    466       <doc>
    467       <![CDATA[Returns the provider used to obtain instances for the given injection key.
    468  The returned provider will not be valid until the {@link Injector} has been
    469  created. The provider will throw an {@code IllegalStateException} if you
    470  try to use it beforehand.
    471 
    472  @since 2.0]]>
    473       </doc>
    474     </method>
    475     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    476       abstract="true" native="false" synchronized="false"
    477       static="false" final="false" visibility="public"
    478       deprecated="not deprecated">
    479       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    480       <doc>
    481       <![CDATA[Returns the provider used to obtain instances for the given injection type.
    482  The returned provider will not be valid until the {@link Injector} has been
    483  created. The provider will throw an {@code IllegalStateException} if you
    484  try to use it beforehand.
    485 
    486  @since 2.0]]>
    487       </doc>
    488     </method>
    489     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    490       abstract="true" native="false" synchronized="false"
    491       static="false" final="false" visibility="public"
    492       deprecated="not deprecated">
    493       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
    494       <doc>
    495       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
    496  of the given type {@code T}. The returned members injector will not be valid until the main
    497  {@link Injector} has been created. The members injector will throw an {@code
    498  IllegalStateException} if you try to use it beforehand.
    499 
    500  @param typeLiteral type to get members injector for
    501  @since 2.0]]>
    502       </doc>
    503     </method>
    504     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    505       abstract="true" native="false" synchronized="false"
    506       static="false" final="false" visibility="public"
    507       deprecated="not deprecated">
    508       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    509       <doc>
    510       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
    511  of the given type {@code T}. The returned members injector will not be valid until the main
    512  {@link Injector} has been created. The members injector will throw an {@code
    513  IllegalStateException} if you try to use it beforehand.
    514 
    515  @param type type to get members injector for
    516  @since 2.0]]>
    517       </doc>
    518     </method>
    519     <method name="convertToTypes"
    520       abstract="true" native="false" synchronized="false"
    521       static="false" final="false" visibility="public"
    522       deprecated="not deprecated">
    523       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    524       <param name="converter" type="com.google.inject.spi.TypeConverter"/>
    525       <doc>
    526       <![CDATA[Binds a type converter. The injector will use the given converter to
    527  convert string constants to matching types as needed.
    528 
    529  @param typeMatcher matches types the converter can handle
    530  @param converter converts values
    531  @since 2.0]]>
    532       </doc>
    533     </method>
    534     <method name="bindListener"
    535       abstract="true" native="false" synchronized="false"
    536       static="false" final="false" visibility="public"
    537       deprecated="not deprecated">
    538       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    539       <param name="listener" type="com.google.inject.spi.TypeListener"/>
    540       <doc>
    541       <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters
    542  injectable types matched by the given type matcher.
    543 
    544  @param typeMatcher that matches injectable types the listener should be notified of
    545  @param listener for injectable types matched by typeMatcher
    546  @since 2.0]]>
    547       </doc>
    548     </method>
    549     <method name="bindListener"
    550       abstract="true" native="false" synchronized="false"
    551       static="false" final="false" visibility="public"
    552       deprecated="not deprecated">
    553       <param name="bindingMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
    554       <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/>
    555       <doc>
    556       <![CDATA[Registers listeners for provisioned objects. Guice will notify the
    557  listeners just before and after the object is provisioned. Provisioned
    558  objects that are also injectable (everything except objects provided
    559  through Providers) can also be notified through TypeListeners registered in
    560  {@link #bindListener}.
    561  
    562  @param bindingMatcher that matches bindings of provisioned objects the listener
    563           should be notified of
    564  @param listeners for provisioned objects matched by bindingMatcher 
    565  @since 4.0]]>
    566       </doc>
    567     </method>
    568     <method name="withSource" return="com.google.inject.Binder"
    569       abstract="true" native="false" synchronized="false"
    570       static="false" final="false" visibility="public"
    571       deprecated="not deprecated">
    572       <param name="source" type="java.lang.Object"/>
    573       <doc>
    574       <![CDATA[Returns a binder that uses {@code source} as the reference location for
    575  configuration errors. This is typically a {@link StackTraceElement}
    576  for {@code .java} source but it could any binding source, such as the
    577  path to a {@code .properties} file.
    578 
    579  @param source any object representing the source location and has a
    580      concise {@link Object#toString() toString()} value
    581  @return a binder that shares its configuration with this binder
    582  @since 2.0]]>
    583       </doc>
    584     </method>
    585     <method name="skipSources" return="com.google.inject.Binder"
    586       abstract="true" native="false" synchronized="false"
    587       static="false" final="false" visibility="public"
    588       deprecated="not deprecated">
    589       <param name="classesToSkip" type="java.lang.Class[]"/>
    590       <doc>
    591       <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the
    592  calling code. The caller's {@link StackTraceElement} is used to locate
    593  the source of configuration errors.
    594 
    595  @param classesToSkip library classes that create bindings on behalf of
    596       their clients.
    597  @return a binder that shares its configuration with this binder.
    598  @since 2.0]]>
    599       </doc>
    600     </method>
    601     <method name="newPrivateBinder" return="com.google.inject.PrivateBinder"
    602       abstract="true" native="false" synchronized="false"
    603       static="false" final="false" visibility="public"
    604       deprecated="not deprecated">
    605       <doc>
    606       <![CDATA[Creates a new private child environment for bindings and other configuration. The returned
    607  binder can be used to add and configuration information in this environment. See {@link
    608  PrivateModule} for details.
    609 
    610  @return a binder that inherits configuration from this binder. Only exposed configuration on
    611       the returned binder will be visible to this binder.
    612  @since 2.0]]>
    613       </doc>
    614     </method>
    615     <method name="requireExplicitBindings"
    616       abstract="true" native="false" synchronized="false"
    617       static="false" final="false" visibility="public"
    618       deprecated="not deprecated">
    619       <doc>
    620       <![CDATA[Instructs the Injector that bindings must be listed in a Module in order to
    621  be injected. Classes that are not explicitly bound in a module cannot be
    622  injected. Bindings created through a linked binding (
    623  <code>bind(Foo.class).to(FooImpl.class)</code>) are allowed, but the
    624  implicit binding (<code>FooImpl</code>) cannot be directly injected unless
    625  it is also explicitly bound (<code>bind(FooImpl.class)</code>).
    626  <p>
    627  Tools can still retrieve bindings for implicit bindings (bindings created
    628  through a linked binding) if explicit bindings are required, however
    629  {@link Binding#getProvider} will fail.
    630  <p>
    631  By default, explicit bindings are not required.
    632  <p>
    633  If a parent injector requires explicit bindings, then all child injectors
    634  (and private modules within that injector) also require explicit bindings.
    635  If a parent does not require explicit bindings, a child injector or private
    636  module may optionally declare itself as requiring explicit bindings. If it
    637  does, the behavior is limited only to that child or any grandchildren. No
    638  siblings of the child will require explicit bindings.
    639  <p>
    640  If the parent did not require explicit bindings but the child does, it is
    641  possible that a linked binding in the child may add a JIT binding to the
    642  parent. The child will not be allowed to reference the target binding
    643  directly, but the parent and other children of the parent may be able to.
    644  
    645  @since 3.0]]>
    646       </doc>
    647     </method>
    648     <method name="disableCircularProxies"
    649       abstract="true" native="false" synchronized="false"
    650       static="false" final="false" visibility="public"
    651       deprecated="not deprecated">
    652       <doc>
    653       <![CDATA[Prevents Guice from constructing a {@link Proxy} when a circular dependency
    654  is found.  By default, circular proxies are not disabled.
    655  <p>
    656  If a parent injector disables circular proxies, then all child injectors
    657  (and private modules within that injector) also disable circular proxies.
    658  If a parent does not disable circular proxies, a child injector or private
    659  module may optionally declare itself as disabling circular proxies. If it
    660  does, the behavior is limited only to that child or any grandchildren. No
    661  siblings of the child will disable circular proxies.
    662  
    663  @since 3.0]]>
    664       </doc>
    665     </method>
    666     <method name="requireAtInjectOnConstructors"
    667       abstract="true" native="false" synchronized="false"
    668       static="false" final="false" visibility="public"
    669       deprecated="not deprecated">
    670       <doc>
    671       <![CDATA[Requires that a {@literal @}{@link Inject} annotation exists on a constructor in order for
    672  Guice to consider it an eligible injectable class. By default, Guice will inject classes that
    673  have a no-args constructor if no {@literal @}{@link Inject} annotation exists on any
    674  constructor.
    675  <p>
    676  If the class is bound using {@link LinkedBindingBuilder#toConstructor}, Guice will still inject
    677  that constructor regardless of annotations.
    678 
    679  @since 4.0]]>
    680       </doc>
    681     </method>
    682     <method name="requireExactBindingAnnotations"
    683       abstract="true" native="false" synchronized="false"
    684       static="false" final="false" visibility="public"
    685       deprecated="not deprecated">
    686       <doc>
    687       <![CDATA[Requires that Guice finds an exactly matching binding annotation.  This disables the
    688  error-prone feature in Guice where it can substitute a binding for
    689  <code>{@literal @}Named Foo</code> when attempting to inject
    690  <code>{@literal @}Named("foo") Foo</code>.
    691 
    692  @since 4.0]]>
    693       </doc>
    694     </method>
    695     <doc>
    696     <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be
    697  used to create an {@link Injector}. Guice provides this object to your
    698  application's {@link Module} implementors so they may each contribute
    699  their own bindings and other registrations.
    700 
    701  <h3>The Guice Binding EDSL</h3>
    702 
    703  Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you
    704  create bindings simply and readably.  This approach is great for overall
    705  usability, but it does come with a small cost: <b>it is difficult to
    706  learn how to use the Binding EDSL by reading
    707  method-level javadocs</b>.  Instead, you should consult the series of
    708  examples below.  To save space, these examples omit the opening
    709  {@code binder}, just as you will if your module extends
    710  {@link AbstractModule}.
    711 
    712  <pre>
    713      bind(ServiceImpl.class);</pre>
    714 
    715  This statement does essentially nothing; it "binds the {@code ServiceImpl}
    716  class to itself" and does not change Guice's default behavior.  You may still
    717  want to use this if you prefer your {@link Module} class to serve as an
    718  explicit <i>manifest</i> for the services it provides.  Also, in rare cases,
    719  Guice may be unable to validate a binding at injector creation time unless it
    720  is given explicitly.
    721 
    722  <pre>
    723      bind(Service.class).to(ServiceImpl.class);</pre>
    724 
    725  Specifies that a request for a {@code Service} instance with no binding
    726  annotations should be treated as if it were a request for a
    727  {@code ServiceImpl} instance. This <i>overrides</i> the function of any
    728  {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy}
    729  annotations found on {@code Service}, since Guice will have already
    730  "moved on" to {@code ServiceImpl} before it reaches the point when it starts
    731  looking for these annotations.
    732 
    733  <pre>
    734      bind(Service.class).toProvider(ServiceProvider.class);</pre>
    735 
    736  In this example, {@code ServiceProvider} must extend or implement
    737  {@code Provider<Service>}. This binding specifies that Guice should resolve
    738  an unannotated injection request for {@code Service} by first resolving an
    739  instance of {@code ServiceProvider} in the regular way, then calling
    740  {@link Provider#get get()} on the resulting Provider instance to obtain the
    741  {@code Service} instance.
    742 
    743  <p>The {@link Provider} you use here does not have to be a "factory"; that
    744  is, a provider which always <i>creates</i> each instance it provides.
    745  However, this is generally a good practice to follow.  You can then use
    746  Guice's concept of {@link Scope scopes} to guide when creation should happen
    747  -- "letting Guice work for you".
    748 
    749  <pre>
    750      bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre>
    751 
    752  Like the previous example, but only applies to injection requests that use
    753  the binding annotation {@code @Red}.  If your module also includes bindings
    754  for particular <i>values</i> of the {@code @Red} annotation (see below),
    755  then this binding will serve as a "catch-all" for any values of {@code @Red}
    756  that have no exact match in the bindings.
    757  
    758  <pre>
    759      bind(ServiceImpl.class).in(Singleton.class);
    760      // or, alternatively
    761      bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre>
    762 
    763  Either of these statements places the {@code ServiceImpl} class into
    764  singleton scope.  Guice will create only one instance of {@code ServiceImpl}
    765  and will reuse it for all injection requests of this type.  Note that it is
    766  still possible to bind another instance of {@code ServiceImpl} if the second
    767  binding is qualified by an annotation as in the previous example.  Guice is
    768  not overly concerned with <i>preventing</i> you from creating multiple
    769  instances of your "singletons", only with <i>enabling</i> your application to
    770  share only one instance if that's all you tell Guice you need.
    771 
    772  <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that
    773  was specified with an annotation on the {@code ServiceImpl} class.
    774  
    775  <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are
    776  servlet-specific scopes available in
    777  {@code com.google.inject.servlet.ServletScopes}, and your Modules can
    778  contribute their own custom scopes for use here as well.
    779 
    780  <pre>
    781      bind(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {})
    782          .to(CreditCardPaymentService.class);</pre>
    783 
    784  This admittedly odd construct is the way to bind a parameterized type. It
    785  tells Guice how to honor an injection request for an element of type
    786  {@code PaymentService<CreditCard>}. The class
    787  {@code CreditCardPaymentService} must implement the
    788  {@code PaymentService<CreditCard>} interface.  Guice cannot currently bind or
    789  inject a generic type, such as {@code Set<E>}; all type parameters must be
    790  fully specified.
    791 
    792  <pre>
    793      bind(Service.class).toInstance(new ServiceImpl());
    794      // or, alternatively
    795      bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre>
    796 
    797  In this example, your module itself, <i>not Guice</i>, takes responsibility
    798  for obtaining a {@code ServiceImpl} instance, then asks Guice to always use
    799  this single instance to fulfill all {@code Service} injection requests.  When
    800  the {@link Injector} is created, it will automatically perform field
    801  and method injection for this instance, but any injectable constructor on
    802  {@code ServiceImpl} is simply ignored.  Note that using this approach results
    803  in "eager loading" behavior that you can't control.
    804 
    805  <pre>
    806      bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre>
    807 
    808  Sets up a constant binding. Constant injections must always be annotated.
    809  When a constant binding's value is a string, it is eligile for conversion to
    810  all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to
    811  {@link Class#forName class literals}. Conversions for other types can be
    812  configured using {@link #convertToTypes(Matcher, TypeConverter)
    813  convertToTypes()}.
    814 
    815  <pre>
    816    {@literal @}Color("red") Color red; // A member variable (field)
    817     . . .
    818      red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class);
    819      bind(Service.class).annotatedWith(red).to(RedService.class);</pre>
    820 
    821  If your binding annotation has parameters you can apply different bindings to
    822  different specific values of your annotation.  Getting your hands on the
    823  right instance of the annotation is a bit of a pain -- one approach, shown
    824  above, is to apply a prototype annotation to a field in your module class, so
    825  that you can read this annotation instance and give it to Guice.
    826 
    827  <pre>
    828      bind(Service.class)
    829          .annotatedWith(Names.named("blue"))
    830          .to(BlueService.class);</pre>
    831 
    832  Differentiating by names is a common enough use case that we provided a
    833  standard annotation, {@link com.google.inject.name.Named @Named}.  Because of
    834  Guice's library support, binding by name is quite easier than in the
    835  arbitrary binding annotation case we just saw.  However, remember that these
    836  names will live in a single flat namespace with all the other names used in
    837  your application.
    838 
    839  <pre>
    840      Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection();
    841      bind(ServiceImpl.class)
    842          .toConstructor(loneCtor);</pre>
    843 
    844  In this example, we directly tell Guice which constructor to use in a concrete
    845  class implementation. It means that we do not need to place {@literal @}Inject
    846  on any of the constructors and that Guice treats the provided constructor as though
    847  it were annotated so. It is useful for cases where you cannot modify existing
    848  classes and is a bit simpler than using a {@link Provider}.
    849 
    850  <p>The above list of examples is far from exhaustive.  If you can think of
    851  how the concepts of one example might coexist with the concepts from another,
    852  you can most likely weave the two together.  If the two concepts make no
    853  sense with each other, you most likely won't be able to do it.  In a few
    854  cases Guice will let something bogus slip by, and will then inform you of
    855  the problems at runtime, as soon as you try to create your Injector.
    856 
    857  <p>The other methods of Binder such as {@link #bindScope},
    858  {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection},
    859  {@link #addError} and {@link #currentStage} are not part of the Binding EDSL;
    860  you can learn how to use these in the usual way, from the method
    861  documentation.
    862 
    863  @author crazybob (a] google.com (Bob Lee)
    864  @author jessewilson (a] google.com (Jesse Wilson)
    865  @author kevinb (a] google.com (Kevin Bourrillion)]]>
    866     </doc>
    867   </interface>
    868   <!-- end interface com.google.inject.Binder -->
    869   <!-- start interface com.google.inject.Binding -->
    870   <interface name="Binding"    abstract="true"
    871     static="false" final="false" visibility="public"
    872     deprecated="not deprecated">
    873     <implements name="com.google.inject.spi.Element"/>
    874     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
    875       abstract="true" native="false" synchronized="false"
    876       static="false" final="false" visibility="public"
    877       deprecated="not deprecated">
    878       <doc>
    879       <![CDATA[Returns the key for this binding.]]>
    880       </doc>
    881     </method>
    882     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    883       abstract="true" native="false" synchronized="false"
    884       static="false" final="false" visibility="public"
    885       deprecated="not deprecated">
    886       <doc>
    887       <![CDATA[Returns the scoped provider guice uses to fulfill requests for this
    888  binding.
    889 
    890  @throws UnsupportedOperationException when invoked on a {@link Binding}
    891       created via {@link com.google.inject.spi.Elements#getElements}. This
    892       method is only supported on {@link Binding}s returned from an injector.]]>
    893       </doc>
    894     </method>
    895     <method name="acceptTargetVisitor" return="V"
    896       abstract="true" native="false" synchronized="false"
    897       static="false" final="false" visibility="public"
    898       deprecated="not deprecated">
    899       <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;? super T, V&gt;"/>
    900       <doc>
    901       <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target.
    902 
    903  @param visitor to call back on
    904  @since 2.0]]>
    905       </doc>
    906     </method>
    907     <method name="acceptScopingVisitor" return="V"
    908       abstract="true" native="false" synchronized="false"
    909       static="false" final="false" visibility="public"
    910       deprecated="not deprecated">
    911       <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
    912       <doc>
    913       <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping.
    914 
    915  @param visitor to call back on
    916  @since 2.0]]>
    917       </doc>
    918     </method>
    919     <doc>
    920     <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the
    921  type. This interface is part of the introspection API and is intended primarily for use by 
    922  tools.
    923 
    924  <p>Bindings are created in several ways:
    925  <ul>
    926      <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()}
    927          statements:
    928  <pre>
    929      bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);
    930      bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li>
    931      <li>Implicitly by the Injector by following a type's {@link ImplementedBy
    932          pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or
    933          default constructor.</li>
    934      <li>By converting a bound instance to a different type.</li>
    935      <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li>
    936  </ul>
    937 
    938 
    939  <p>They exist on both modules and on injectors, and their behaviour is different for each:
    940  <ul>
    941      <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances.
    942          This is because the applicable scopes and interceptors may not be known until an injector
    943          is created. From a tool's perspective, module bindings are like the injector's source
    944          code. They can be inspected or rewritten, but this analysis must be done statically.</li>
    945      <li><strong>Injector bindings</strong> are complete and valid and can be used to provide
    946          instances. From a tools' perspective, injector bindings are like reflection for an
    947          injector. They have full runtime information, including the complete graph of injections
    948          necessary to satisfy a binding.</li>
    949  </ul>
    950 
    951  @param <T> the bound type. The injected is always assignable to this type.
    952 
    953  @author crazybob (a] google.com (Bob Lee)
    954  @author jessewilson (a] google.com (Jesse Wilson)]]>
    955     </doc>
    956   </interface>
    957   <!-- end interface com.google.inject.Binding -->
    958   <!-- start class com.google.inject.BindingAnnotation -->
    959   <class name="BindingAnnotation"    abstract="true"
    960     static="false" final="false" visibility="public"
    961     deprecated="not deprecated">
    962     <implements name="java.lang.annotation.Annotation"/>
    963     <doc>
    964     <![CDATA[Annotates annotations which are used for binding. Only one such annotation
    965  may apply to a single injection point. You must also annotate binder
    966  annotations with {@code @Retention(RUNTIME)}. For example:
    967 
    968  <pre>
    969    {@code @}Retention(RUNTIME)
    970    {@code @}Target({ FIELD, PARAMETER, METHOD })
    971    {@code @}BindingAnnotation
    972    public {@code @}interface Transactional {}
    973  </pre>
    974 
    975  @author crazybob (a] google.com (Bob Lee)]]>
    976     </doc>
    977   </class>
    978   <!-- end class com.google.inject.BindingAnnotation -->
    979   <!-- start class com.google.inject.ConfigurationException -->
    980   <class name="ConfigurationException" extends="java.lang.RuntimeException"
    981     abstract="false"
    982     static="false" final="true" visibility="public"
    983     deprecated="not deprecated">
    984     <constructor name="ConfigurationException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
    985       static="false" final="false" visibility="public"
    986       deprecated="not deprecated">
    987       <doc>
    988       <![CDATA[Creates a ConfigurationException containing {@code messages}.]]>
    989       </doc>
    990     </constructor>
    991     <method name="withPartialValue" return="com.google.inject.ConfigurationException"
    992       abstract="false" native="false" synchronized="false"
    993       static="false" final="false" visibility="public"
    994       deprecated="not deprecated">
    995       <param name="partialValue" type="java.lang.Object"/>
    996       <doc>
    997       <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]>
    998       </doc>
    999     </method>
   1000     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   1001       abstract="false" native="false" synchronized="false"
   1002       static="false" final="false" visibility="public"
   1003       deprecated="not deprecated">
   1004       <doc>
   1005       <![CDATA[Returns messages for the errors that caused this exception.]]>
   1006       </doc>
   1007     </method>
   1008     <method name="getPartialValue" return="E"
   1009       abstract="false" native="false" synchronized="false"
   1010       static="false" final="false" visibility="public"
   1011       deprecated="not deprecated">
   1012       <doc>
   1013       <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use
   1014  this while collecting additional configuration problems.
   1015 
   1016  @return the partial value, or {@code null} if none was set. The type of the partial value is
   1017       specified by the throwing method.]]>
   1018       </doc>
   1019     </method>
   1020     <method name="getMessage" return="java.lang.String"
   1021       abstract="false" native="false" synchronized="false"
   1022       static="false" final="false" visibility="public"
   1023       deprecated="not deprecated">
   1024     </method>
   1025     <doc>
   1026     <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported
   1027  scope is found. Clients should catch this exception, log it, and stop execution.
   1028 
   1029  @author jessewilson (a] google.com (Jesse Wilson)
   1030  @since 2.0]]>
   1031     </doc>
   1032   </class>
   1033   <!-- end class com.google.inject.ConfigurationException -->
   1034   <!-- start class com.google.inject.CreationException -->
   1035   <class name="CreationException" extends="java.lang.RuntimeException"
   1036     abstract="false"
   1037     static="false" final="false" visibility="public"
   1038     deprecated="not deprecated">
   1039     <constructor name="CreationException" type="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   1040       static="false" final="false" visibility="public"
   1041       deprecated="not deprecated">
   1042       <doc>
   1043       <![CDATA[Creates a CreationException containing {@code messages}.]]>
   1044       </doc>
   1045     </constructor>
   1046     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   1047       abstract="false" native="false" synchronized="false"
   1048       static="false" final="false" visibility="public"
   1049       deprecated="not deprecated">
   1050       <doc>
   1051       <![CDATA[Returns messages for the errors that caused this exception.]]>
   1052       </doc>
   1053     </method>
   1054     <method name="getMessage" return="java.lang.String"
   1055       abstract="false" native="false" synchronized="false"
   1056       static="false" final="false" visibility="public"
   1057       deprecated="not deprecated">
   1058     </method>
   1059     <doc>
   1060     <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered
   1061  errors. Clients should catch this exception, log it, and stop execution.
   1062 
   1063  @author crazybob (a] google.com (Bob Lee)]]>
   1064     </doc>
   1065   </class>
   1066   <!-- end class com.google.inject.CreationException -->
   1067   <!-- start class com.google.inject.Exposed -->
   1068   <class name="Exposed"    abstract="true"
   1069     static="false" final="false" visibility="public"
   1070     deprecated="not deprecated">
   1071     <implements name="java.lang.annotation.Annotation"/>
   1072     <doc>
   1073     <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a
   1074  private module to indicate that the provided binding is exposed.
   1075 
   1076  @author jessewilson (a] google.com (Jesse Wilson)
   1077  @since 2.0]]>
   1078     </doc>
   1079   </class>
   1080   <!-- end class com.google.inject.Exposed -->
   1081   <!-- start class com.google.inject.Guice -->
   1082   <class name="Guice" extends="java.lang.Object"
   1083     abstract="false"
   1084     static="false" final="true" visibility="public"
   1085     deprecated="not deprecated">
   1086     <method name="createInjector" return="com.google.inject.Injector"
   1087       abstract="false" native="false" synchronized="false"
   1088       static="true" final="false" visibility="public"
   1089       deprecated="not deprecated">
   1090       <param name="modules" type="com.google.inject.Module[]"/>
   1091       <doc>
   1092       <![CDATA[Creates an injector for the given set of modules. This is equivalent to
   1093  calling {@link #createInjector(Stage, Module...)} with Stage.DEVELOPMENT.
   1094 
   1095  @throws CreationException if one or more errors occur during injector
   1096      construction]]>
   1097       </doc>
   1098     </method>
   1099     <method name="createInjector" return="com.google.inject.Injector"
   1100       abstract="false" native="false" synchronized="false"
   1101       static="true" final="false" visibility="public"
   1102       deprecated="not deprecated">
   1103       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1104       <doc>
   1105       <![CDATA[Creates an injector for the given set of modules. This is equivalent to
   1106  calling {@link #createInjector(Stage, Iterable)} with Stage.DEVELOPMENT.
   1107 
   1108  @throws CreationException if one or more errors occur during injector
   1109      creation]]>
   1110       </doc>
   1111     </method>
   1112     <method name="createInjector" return="com.google.inject.Injector"
   1113       abstract="false" native="false" synchronized="false"
   1114       static="true" final="false" visibility="public"
   1115       deprecated="not deprecated">
   1116       <param name="stage" type="com.google.inject.Stage"/>
   1117       <param name="modules" type="com.google.inject.Module[]"/>
   1118       <doc>
   1119       <![CDATA[Creates an injector for the given set of modules, in a given development
   1120  stage.
   1121 
   1122  @throws CreationException if one or more errors occur during injector
   1123      creation.]]>
   1124       </doc>
   1125     </method>
   1126     <method name="createInjector" return="com.google.inject.Injector"
   1127       abstract="false" native="false" synchronized="false"
   1128       static="true" final="false" visibility="public"
   1129       deprecated="not deprecated">
   1130       <param name="stage" type="com.google.inject.Stage"/>
   1131       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1132       <doc>
   1133       <![CDATA[Creates an injector for the given set of modules, in a given development
   1134  stage.
   1135 
   1136  @throws CreationException if one or more errors occur during injector
   1137      construction]]>
   1138       </doc>
   1139     </method>
   1140     <doc>
   1141     <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from
   1142  {@link Module}s.
   1143 
   1144  <p>Guice supports a model of development that draws clear boundaries between
   1145  APIs, Implementations of these APIs, Modules which configure these
   1146  implementations, and finally Applications which consist of a collection of
   1147  Modules. It is the Application, which typically defines your {@code main()}
   1148  method, that bootstraps the Guice Injector using the {@code Guice} class, as
   1149  in this example:
   1150  <pre>
   1151      public class FooApplication {
   1152        public static void main(String[] args) {
   1153          Injector injector = Guice.createInjector(
   1154              new ModuleA(),
   1155              new ModuleB(),
   1156              . . .
   1157              new FooApplicationFlagsModule(args)
   1158          );
   1159 
   1160          // Now just bootstrap the application and you're done
   1161          FooStarter starter = injector.getInstance(FooStarter.class);
   1162          starter.runApplication();
   1163        }
   1164      }
   1165  </pre>]]>
   1166     </doc>
   1167   </class>
   1168   <!-- end class com.google.inject.Guice -->
   1169   <!-- start class com.google.inject.ImplementedBy -->
   1170   <class name="ImplementedBy"    abstract="true"
   1171     static="false" final="false" visibility="public"
   1172     deprecated="not deprecated">
   1173     <implements name="java.lang.annotation.Annotation"/>
   1174     <doc>
   1175     <![CDATA[A pointer to the default implementation of a type.
   1176 
   1177  @author crazybob (a] google.com (Bob Lee)]]>
   1178     </doc>
   1179   </class>
   1180   <!-- end class com.google.inject.ImplementedBy -->
   1181   <!-- start class com.google.inject.Inject -->
   1182   <class name="Inject"    abstract="true"
   1183     static="false" final="false" visibility="public"
   1184     deprecated="not deprecated">
   1185     <implements name="java.lang.annotation.Annotation"/>
   1186     <doc>
   1187     <![CDATA[Annotates members of your implementation class (constructors, methods
   1188  and fields) into which the {@link Injector} should inject values.
   1189  The Injector fulfills injection requests for:
   1190 
   1191  <ul>
   1192  <li>Every instance it constructs. The class being constructed must have
   1193  exactly one of its constructors marked with {@code @Inject} or must have a
   1194  constructor taking no parameters. The Injector then proceeds to perform
   1195  field and method injections.
   1196  
   1197  <li>Pre-constructed instances passed to {@link Injector#injectMembers},
   1198  {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and
   1199  {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(javax.inject.Provider)}.
   1200  In this case all constructors are, of course, ignored.
   1201 
   1202  <li>Static fields and methods of classes which any {@link Module} has
   1203  specifically requested static injection for, using
   1204  {@link Binder#requestStaticInjection}.
   1205  </ul>
   1206 
   1207  In all cases, a member can be injected regardless of its Java access
   1208  specifier (private, default, protected, public).
   1209 
   1210  @author crazybob (a] google.com (Bob Lee)]]>
   1211     </doc>
   1212   </class>
   1213   <!-- end class com.google.inject.Inject -->
   1214   <!-- start interface com.google.inject.Injector -->
   1215   <interface name="Injector"    abstract="true"
   1216     static="false" final="false" visibility="public"
   1217     deprecated="not deprecated">
   1218     <method name="injectMembers"
   1219       abstract="true" native="false" synchronized="false"
   1220       static="false" final="false" visibility="public"
   1221       deprecated="not deprecated">
   1222       <param name="instance" type="java.lang.Object"/>
   1223       <doc>
   1224       <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
   1225  absence of an injectable constructor.
   1226 
   1227  <p>Whenever Guice creates an instance, it performs this injection automatically (after first
   1228  performing constructor injection), so if you're able to let Guice create all your objects for
   1229  you, you'll never need to use this method.
   1230 
   1231  @param instance to inject members on
   1232 
   1233  @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before
   1234   run time]]>
   1235       </doc>
   1236     </method>
   1237     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   1238       abstract="true" native="false" synchronized="false"
   1239       static="false" final="false" visibility="public"
   1240       deprecated="not deprecated">
   1241       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1242       <doc>
   1243       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   1244  of the given type {@code T}.
   1245 
   1246  @param typeLiteral type to get members injector for
   1247  @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error
   1248   detection
   1249  @since 2.0]]>
   1250       </doc>
   1251     </method>
   1252     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   1253       abstract="true" native="false" synchronized="false"
   1254       static="false" final="false" visibility="public"
   1255       deprecated="not deprecated">
   1256       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1257       <doc>
   1258       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   1259  of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)}
   1260  instead to get increased up front error detection.
   1261 
   1262  @param type type to get members injector for
   1263  @see Binder#getMembersInjector(Class) for an alternative that offers up front error
   1264   detection
   1265  @since 2.0]]>
   1266       </doc>
   1267     </method>
   1268     <method name="getBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
   1269       abstract="true" native="false" synchronized="false"
   1270       static="false" final="false" visibility="public"
   1271       deprecated="not deprecated">
   1272       <doc>
   1273       <![CDATA[Returns this injector's <strong>explicit</strong> bindings.
   1274 
   1275  <p>The returned map does not include bindings inherited from a {@link #getParent() parent
   1276  injector}, should one exist. The returned map is guaranteed to iterate (for example, with
   1277  its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in
   1278  which bindings appear in user Modules.
   1279 
   1280  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
   1281       </doc>
   1282     </method>
   1283     <method name="getAllBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
   1284       abstract="true" native="false" synchronized="false"
   1285       static="false" final="false" visibility="public"
   1286       deprecated="not deprecated">
   1287       <doc>
   1288       <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and
   1289  just-in-time</strong>. The returned map is immutable; it contains only the bindings that were
   1290  present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with
   1291  additional just-in-time bindings.
   1292 
   1293  <p>The returned map does not include bindings inherited from a {@link #getParent() parent
   1294  injector}, should one exist.
   1295 
   1296  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1297  
   1298  @since 3.0]]>
   1299       </doc>
   1300     </method>
   1301     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   1302       abstract="true" native="false" synchronized="false"
   1303       static="false" final="false" visibility="public"
   1304       deprecated="not deprecated">
   1305       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1306       <doc>
   1307       <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key
   1308  was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
   1309  be created if necessary.
   1310 
   1311  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1312 
   1313  @throws ConfigurationException if this injector cannot find or create the binding.]]>
   1314       </doc>
   1315     </method>
   1316     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   1317       abstract="true" native="false" synchronized="false"
   1318       static="false" final="false" visibility="public"
   1319       deprecated="not deprecated">
   1320       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1321       <doc>
   1322       <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key
   1323  was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
   1324  be created if necessary.
   1325 
   1326  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1327 
   1328  @throws ConfigurationException if this injector cannot find or create the binding.
   1329  @since 2.0]]>
   1330       </doc>
   1331     </method>
   1332     <method name="getExistingBinding" return="com.google.inject.Binding&lt;T&gt;"
   1333       abstract="true" native="false" synchronized="false"
   1334       static="false" final="false" visibility="public"
   1335       deprecated="not deprecated">
   1336       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1337       <doc>
   1338       <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike
   1339  {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings
   1340  for keys that aren't bound.
   1341  
   1342  <p> This method is part of the Guice SPI and is intended for use by tools and extensions.
   1343  
   1344  @since 3.0]]>
   1345       </doc>
   1346     </method>
   1347     <method name="findBindingsByType" return="java.util.List&lt;com.google.inject.Binding&lt;T&gt;&gt;"
   1348       abstract="true" native="false" synchronized="false"
   1349       static="false" final="false" visibility="public"
   1350       deprecated="not deprecated">
   1351       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1352       <doc>
   1353       <![CDATA[Returns all explicit bindings for {@code type}.
   1354 
   1355  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
   1356       </doc>
   1357     </method>
   1358     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   1359       abstract="true" native="false" synchronized="false"
   1360       static="false" final="false" visibility="public"
   1361       deprecated="not deprecated">
   1362       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1363       <doc>
   1364       <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid
   1365  using this method, in favor of having Guice inject your dependencies ahead of time.
   1366 
   1367  @throws ConfigurationException if this injector cannot find or create the provider.
   1368  @see Binder#getProvider(Key) for an alternative that offers up front error detection]]>
   1369       </doc>
   1370     </method>
   1371     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   1372       abstract="true" native="false" synchronized="false"
   1373       static="false" final="false" visibility="public"
   1374       deprecated="not deprecated">
   1375       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1376       <doc>
   1377       <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid
   1378  using this method, in favor of having Guice inject your dependencies ahead of time.
   1379 
   1380  @throws ConfigurationException if this injector cannot find or create the provider.
   1381  @see Binder#getProvider(Class) for an alternative that offers up front error detection]]>
   1382       </doc>
   1383     </method>
   1384     <method name="getInstance" return="T"
   1385       abstract="true" native="false" synchronized="false"
   1386       static="false" final="false" visibility="public"
   1387       deprecated="not deprecated">
   1388       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1389       <doc>
   1390       <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code
   1391  getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice
   1392  inject your dependencies ahead of time.
   1393 
   1394  @throws ConfigurationException if this injector cannot find or create the provider.
   1395  @throws ProvisionException if there was a runtime failure while providing an instance.]]>
   1396       </doc>
   1397     </method>
   1398     <method name="getInstance" return="T"
   1399       abstract="true" native="false" synchronized="false"
   1400       static="false" final="false" visibility="public"
   1401       deprecated="not deprecated">
   1402       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1403       <doc>
   1404       <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code
   1405  getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice
   1406  inject your dependencies ahead of time.
   1407 
   1408  @throws ConfigurationException if this injector cannot find or create the provider.
   1409  @throws ProvisionException if there was a runtime failure while providing an instance.]]>
   1410       </doc>
   1411     </method>
   1412     <method name="getParent" return="com.google.inject.Injector"
   1413       abstract="true" native="false" synchronized="false"
   1414       static="false" final="false" visibility="public"
   1415       deprecated="not deprecated">
   1416       <doc>
   1417       <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector.
   1418 
   1419  @since 2.0]]>
   1420       </doc>
   1421     </method>
   1422     <method name="createChildInjector" return="com.google.inject.Injector"
   1423       abstract="true" native="false" synchronized="false"
   1424       static="false" final="false" visibility="public"
   1425       deprecated="not deprecated">
   1426       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1427       <doc>
   1428       <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
   1429  interceptors and type converters are inherited -- they are visible to the child injector.
   1430  Elements of the child injector are not visible to its parent.
   1431 
   1432  <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
   1433  whenever possible. This allows for scoped instances to be shared between injectors. Use
   1434  explicit bindings to prevent bindings from being shared with the parent injector.  Optional
   1435  injections in just-in-time bindings (created in the parent injector) may be silently
   1436  ignored if the optional dependencies are from the child injector.
   1437 
   1438  <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
   1439  bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
   1440  injector to itself.
   1441 
   1442  @since 2.0]]>
   1443       </doc>
   1444     </method>
   1445     <method name="createChildInjector" return="com.google.inject.Injector"
   1446       abstract="true" native="false" synchronized="false"
   1447       static="false" final="false" visibility="public"
   1448       deprecated="not deprecated">
   1449       <param name="modules" type="com.google.inject.Module[]"/>
   1450       <doc>
   1451       <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
   1452  interceptors and type converters are inherited -- they are visible to the child injector.
   1453  Elements of the child injector are not visible to its parent.
   1454 
   1455  <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
   1456  whenever possible. This allows for scoped instances to be shared between injectors. Use
   1457  explicit bindings to prevent bindings from being shared with the parent injector.
   1458 
   1459  <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
   1460  bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
   1461  injector to itself.
   1462 
   1463  @since 2.0]]>
   1464       </doc>
   1465     </method>
   1466     <method name="getScopeBindings" return="java.util.Map&lt;java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;, com.google.inject.Scope&gt;"
   1467       abstract="true" native="false" synchronized="false"
   1468       static="false" final="false" visibility="public"
   1469       deprecated="not deprecated">
   1470       <doc>
   1471       <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations
   1472  like {@code Singleton.class}, and the values are scope instances, such as {@code
   1473  Scopes.SINGLETON}. The returned map is immutable.
   1474 
   1475  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1476  
   1477  @since 3.0]]>
   1478       </doc>
   1479     </method>
   1480     <method name="getTypeConverterBindings" return="java.util.Set&lt;com.google.inject.spi.TypeConverterBinding&gt;"
   1481       abstract="true" native="false" synchronized="false"
   1482       static="false" final="false" visibility="public"
   1483       deprecated="not deprecated">
   1484       <doc>
   1485       <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is
   1486  immutable.
   1487 
   1488  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1489  
   1490  @since 3.0]]>
   1491       </doc>
   1492     </method>
   1493     <doc>
   1494     <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies
   1495  for each type and uses bindings to inject them. This is the core of Guice, although you rarely
   1496  interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency
   1497  injection from its cousin, the service locator pattern.
   1498 
   1499  <p>Contains several default bindings:
   1500 
   1501  <ul>
   1502  <li>This {@link Injector} instance itself
   1503  <li>A {@code Provider<T>} for each binding of type {@code T}
   1504  <li>The {@link java.util.logging.Logger} for the class being injected
   1505  <li>The {@link Stage} in which the Injector was created
   1506  </ul>
   1507 
   1508  Injectors are created using the facade class {@link Guice}.
   1509 
   1510  <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of
   1511  already-constructed instances. This can be used to interoperate with objects created by other
   1512  frameworks or services.
   1513 
   1514  <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit
   1515  the configuration of their parent injectors, but the converse does not hold.
   1516 
   1517  <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This
   1518  enables tools and extensions to operate on an injector reflectively.
   1519 
   1520  @author crazybob (a] google.com (Bob Lee)
   1521  @author jessewilson (a] google.com (Jesse Wilson)]]>
   1522     </doc>
   1523   </interface>
   1524   <!-- end interface com.google.inject.Injector -->
   1525   <!-- start class com.google.inject.Key -->
   1526   <class name="Key" extends="java.lang.Object"
   1527     abstract="false"
   1528     static="false" final="false" visibility="public"
   1529     deprecated="not deprecated">
   1530     <constructor name="Key" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   1531       static="false" final="false" visibility="protected"
   1532       deprecated="not deprecated">
   1533       <doc>
   1534       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1535 
   1536  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1537  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1538  at runtime despite erasure.
   1539 
   1540  <p>Example usage for a binding of type {@code Foo} annotated with
   1541  {@code @Bar}:
   1542 
   1543  <p>{@code new Key<Foo>(Bar.class) {}}.]]>
   1544       </doc>
   1545     </constructor>
   1546     <constructor name="Key" type="java.lang.annotation.Annotation"
   1547       static="false" final="false" visibility="protected"
   1548       deprecated="not deprecated">
   1549       <doc>
   1550       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1551 
   1552  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1553  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1554  at runtime despite erasure.
   1555 
   1556  <p>Example usage for a binding of type {@code Foo} annotated with
   1557  {@code @Bar}:
   1558 
   1559  <p>{@code new Key<Foo>(new Bar()) {}}.]]>
   1560       </doc>
   1561     </constructor>
   1562     <constructor name="Key"
   1563       static="false" final="false" visibility="protected"
   1564       deprecated="not deprecated">
   1565       <doc>
   1566       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1567 
   1568  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1569  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1570  at runtime despite erasure.
   1571 
   1572  <p>Example usage for a binding of type {@code Foo}:
   1573 
   1574  <p>{@code new Key<Foo>() {}}.]]>
   1575       </doc>
   1576     </constructor>
   1577     <method name="getTypeLiteral" return="com.google.inject.TypeLiteral&lt;T&gt;"
   1578       abstract="false" native="false" synchronized="false"
   1579       static="false" final="true" visibility="public"
   1580       deprecated="not deprecated">
   1581       <doc>
   1582       <![CDATA[Gets the key type.]]>
   1583       </doc>
   1584     </method>
   1585     <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   1586       abstract="false" native="false" synchronized="false"
   1587       static="false" final="true" visibility="public"
   1588       deprecated="not deprecated">
   1589       <doc>
   1590       <![CDATA[Gets the annotation type.]]>
   1591       </doc>
   1592     </method>
   1593     <method name="getAnnotation" return="java.lang.annotation.Annotation"
   1594       abstract="false" native="false" synchronized="false"
   1595       static="false" final="true" visibility="public"
   1596       deprecated="not deprecated">
   1597       <doc>
   1598       <![CDATA[Gets the annotation.]]>
   1599       </doc>
   1600     </method>
   1601     <method name="equals" return="boolean"
   1602       abstract="false" native="false" synchronized="false"
   1603       static="false" final="true" visibility="public"
   1604       deprecated="not deprecated">
   1605       <param name="o" type="java.lang.Object"/>
   1606     </method>
   1607     <method name="hashCode" return="int"
   1608       abstract="false" native="false" synchronized="false"
   1609       static="false" final="true" visibility="public"
   1610       deprecated="not deprecated">
   1611     </method>
   1612     <method name="toString" return="java.lang.String"
   1613       abstract="false" native="false" synchronized="false"
   1614       static="false" final="true" visibility="public"
   1615       deprecated="not deprecated">
   1616     </method>
   1617     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1618       abstract="false" native="false" synchronized="false"
   1619       static="true" final="false" visibility="public"
   1620       deprecated="not deprecated">
   1621       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1622       <doc>
   1623       <![CDATA[Gets a key for an injection type.]]>
   1624       </doc>
   1625     </method>
   1626     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1627       abstract="false" native="false" synchronized="false"
   1628       static="true" final="false" visibility="public"
   1629       deprecated="not deprecated">
   1630       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1631       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1632       <doc>
   1633       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1634       </doc>
   1635     </method>
   1636     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1637       abstract="false" native="false" synchronized="false"
   1638       static="true" final="false" visibility="public"
   1639       deprecated="not deprecated">
   1640       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1641       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1642       <doc>
   1643       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1644       </doc>
   1645     </method>
   1646     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1647       abstract="false" native="false" synchronized="false"
   1648       static="true" final="false" visibility="public"
   1649       deprecated="not deprecated">
   1650       <param name="type" type="java.lang.reflect.Type"/>
   1651       <doc>
   1652       <![CDATA[Gets a key for an injection type.]]>
   1653       </doc>
   1654     </method>
   1655     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1656       abstract="false" native="false" synchronized="false"
   1657       static="true" final="false" visibility="public"
   1658       deprecated="not deprecated">
   1659       <param name="type" type="java.lang.reflect.Type"/>
   1660       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1661       <doc>
   1662       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1663       </doc>
   1664     </method>
   1665     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1666       abstract="false" native="false" synchronized="false"
   1667       static="true" final="false" visibility="public"
   1668       deprecated="not deprecated">
   1669       <param name="type" type="java.lang.reflect.Type"/>
   1670       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1671       <doc>
   1672       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1673       </doc>
   1674     </method>
   1675     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1676       abstract="false" native="false" synchronized="false"
   1677       static="true" final="false" visibility="public"
   1678       deprecated="not deprecated">
   1679       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1680       <doc>
   1681       <![CDATA[Gets a key for an injection type.]]>
   1682       </doc>
   1683     </method>
   1684     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1685       abstract="false" native="false" synchronized="false"
   1686       static="true" final="false" visibility="public"
   1687       deprecated="not deprecated">
   1688       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1689       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1690       <doc>
   1691       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1692       </doc>
   1693     </method>
   1694     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1695       abstract="false" native="false" synchronized="false"
   1696       static="true" final="false" visibility="public"
   1697       deprecated="not deprecated">
   1698       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1699       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1700       <doc>
   1701       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1702       </doc>
   1703     </method>
   1704     <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
   1705       abstract="false" native="false" synchronized="false"
   1706       static="false" final="false" visibility="public"
   1707       deprecated="not deprecated">
   1708       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1709       <doc>
   1710       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1711  key.
   1712 
   1713  @since 3.0]]>
   1714       </doc>
   1715     </method>
   1716     <method name="ofType" return="com.google.inject.Key&lt;?&gt;"
   1717       abstract="false" native="false" synchronized="false"
   1718       static="false" final="false" visibility="public"
   1719       deprecated="not deprecated">
   1720       <param name="type" type="java.lang.reflect.Type"/>
   1721       <doc>
   1722       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1723  key.
   1724 
   1725  @since 3.0]]>
   1726       </doc>
   1727     </method>
   1728     <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
   1729       abstract="false" native="false" synchronized="false"
   1730       static="false" final="false" visibility="public"
   1731       deprecated="not deprecated">
   1732       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1733       <doc>
   1734       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1735  key.
   1736 
   1737  @since 3.0]]>
   1738       </doc>
   1739     </method>
   1740     <method name="hasAttributes" return="boolean"
   1741       abstract="false" native="false" synchronized="false"
   1742       static="false" final="false" visibility="public"
   1743       deprecated="not deprecated">
   1744       <doc>
   1745       <![CDATA[Returns true if this key has annotation attributes.
   1746 
   1747  @since 3.0]]>
   1748       </doc>
   1749     </method>
   1750     <method name="withoutAttributes" return="com.google.inject.Key&lt;T&gt;"
   1751       abstract="false" native="false" synchronized="false"
   1752       static="false" final="false" visibility="public"
   1753       deprecated="not deprecated">
   1754       <doc>
   1755       <![CDATA[Returns this key without annotation attributes, i.e. with only the
   1756  annotation type.
   1757 
   1758  @since 3.0]]>
   1759       </doc>
   1760     </method>
   1761     <doc>
   1762     <![CDATA[Binding key consisting of an injection type and an optional annotation.
   1763  Matches the type and annotation at a point of injection.
   1764 
   1765  <p>For example, {@code Key.get(Service.class, Transactional.class)} will
   1766  match:
   1767 
   1768  <pre>
   1769    {@literal @}Inject
   1770    public void setService({@literal @}Transactional Service service) {
   1771      ...
   1772    }
   1773  </pre>
   1774 
   1775  <p>{@code Key} supports generic types via subclassing just like {@link
   1776  TypeLiteral}.
   1777 
   1778  <p>Keys do not differentiate between primitive types (int, char, etc.) and
   1779  their correpsonding wrapper types (Integer, Character, etc.). Primitive
   1780  types will be replaced with their wrapper types when keys are created.
   1781 
   1782  @author crazybob (a] google.com (Bob Lee)]]>
   1783     </doc>
   1784   </class>
   1785   <!-- end class com.google.inject.Key -->
   1786   <!-- start interface com.google.inject.MembersInjector -->
   1787   <interface name="MembersInjector"    abstract="true"
   1788     static="false" final="false" visibility="public"
   1789     deprecated="not deprecated">
   1790     <method name="injectMembers"
   1791       abstract="true" native="false" synchronized="false"
   1792       static="false" final="false" visibility="public"
   1793       deprecated="not deprecated">
   1794       <param name="instance" type="T"/>
   1795       <doc>
   1796       <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
   1797  absence of an injectable constructor.
   1798 
   1799  <p>Whenever Guice creates an instance, it performs this injection automatically (after first
   1800  performing constructor injection), so if you're able to let Guice create all your objects for
   1801  you, you'll never need to use this method.
   1802 
   1803  @param instance to inject members on. May be {@code null}.]]>
   1804       </doc>
   1805     </method>
   1806     <doc>
   1807     <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the
   1808  presence or absence of an injectable constructor.
   1809 
   1810  @param <T> type to inject members of
   1811 
   1812  @author crazybob (a] google.com (Bob Lee)
   1813  @author jessewilson (a] google.com (Jesse Wilson)
   1814  @since 2.0]]>
   1815     </doc>
   1816   </interface>
   1817   <!-- end interface com.google.inject.MembersInjector -->
   1818   <!-- start interface com.google.inject.Module -->
   1819   <interface name="Module"    abstract="true"
   1820     static="false" final="false" visibility="public"
   1821     deprecated="not deprecated">
   1822     <method name="configure"
   1823       abstract="true" native="false" synchronized="false"
   1824       static="false" final="false" visibility="public"
   1825       deprecated="not deprecated">
   1826       <param name="binder" type="com.google.inject.Binder"/>
   1827       <doc>
   1828       <![CDATA[Contributes bindings and other configurations for this module to {@code binder}.
   1829 
   1830  <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use
   1831  {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are
   1832  discovered.]]>
   1833       </doc>
   1834     </method>
   1835     <doc>
   1836     <![CDATA[A module contributes configuration information, typically interface
   1837  bindings, which will be used to create an {@link Injector}. A Guice-based
   1838  application is ultimately composed of little more than a set of
   1839  {@code Module}s and some bootstrapping code.
   1840 
   1841  <p>Your Module classes can use a more streamlined syntax by extending
   1842  {@link AbstractModule} rather than implementing this interface directly.
   1843 
   1844  <p>In addition to the bindings configured via {@link #configure}, bindings
   1845  will be created for all methods annotated with {@literal @}{@link Provides}.
   1846  Use scope and binding annotations on these methods to configure the
   1847  bindings.]]>
   1848     </doc>
   1849   </interface>
   1850   <!-- end interface com.google.inject.Module -->
   1851   <!-- start class com.google.inject.OutOfScopeException -->
   1852   <class name="OutOfScopeException" extends="java.lang.RuntimeException"
   1853     abstract="false"
   1854     static="false" final="true" visibility="public"
   1855     deprecated="not deprecated">
   1856     <constructor name="OutOfScopeException" type="java.lang.String"
   1857       static="false" final="false" visibility="public"
   1858       deprecated="not deprecated">
   1859     </constructor>
   1860     <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable"
   1861       static="false" final="false" visibility="public"
   1862       deprecated="not deprecated">
   1863     </constructor>
   1864     <constructor name="OutOfScopeException" type="java.lang.Throwable"
   1865       static="false" final="false" visibility="public"
   1866       deprecated="not deprecated">
   1867     </constructor>
   1868     <doc>
   1869     <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped
   1870  object while the scope in question is not currently active.
   1871 
   1872  @author kevinb (a] google.com (Kevin Bourrillion)
   1873  @since 2.0]]>
   1874     </doc>
   1875   </class>
   1876   <!-- end class com.google.inject.OutOfScopeException -->
   1877   <!-- start interface com.google.inject.PrivateBinder -->
   1878   <interface name="PrivateBinder"    abstract="true"
   1879     static="false" final="false" visibility="public"
   1880     deprecated="not deprecated">
   1881     <implements name="com.google.inject.Binder"/>
   1882     <method name="expose"
   1883       abstract="true" native="false" synchronized="false"
   1884       static="false" final="false" visibility="public"
   1885       deprecated="not deprecated">
   1886       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   1887       <doc>
   1888       <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]>
   1889       </doc>
   1890     </method>
   1891     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1892       abstract="true" native="false" synchronized="false"
   1893       static="false" final="false" visibility="public"
   1894       deprecated="not deprecated">
   1895       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   1896       <doc>
   1897       <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
   1898  com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1899  binding annotation.]]>
   1900       </doc>
   1901     </method>
   1902     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1903       abstract="true" native="false" synchronized="false"
   1904       static="false" final="false" visibility="public"
   1905       deprecated="not deprecated">
   1906       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   1907       <doc>
   1908       <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
   1909  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1910  binding annotation.]]>
   1911       </doc>
   1912     </method>
   1913     <method name="withSource" return="com.google.inject.PrivateBinder"
   1914       abstract="true" native="false" synchronized="false"
   1915       static="false" final="false" visibility="public"
   1916       deprecated="not deprecated">
   1917       <param name="source" type="java.lang.Object"/>
   1918     </method>
   1919     <method name="skipSources" return="com.google.inject.PrivateBinder"
   1920       abstract="true" native="false" synchronized="false"
   1921       static="false" final="false" visibility="public"
   1922       deprecated="not deprecated">
   1923       <param name="classesToSkip" type="java.lang.Class[]"/>
   1924     </method>
   1925     <doc>
   1926     <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See
   1927  {@link com.google.inject.PrivateModule PrivateModule} for details.
   1928  
   1929  @author jessewilson (a] google.com (Jesse Wilson)
   1930  @since 2.0]]>
   1931     </doc>
   1932   </interface>
   1933   <!-- end interface com.google.inject.PrivateBinder -->
   1934   <!-- start class com.google.inject.PrivateModule -->
   1935   <class name="PrivateModule" extends="java.lang.Object"
   1936     abstract="true"
   1937     static="false" final="false" visibility="public"
   1938     deprecated="not deprecated">
   1939     <implements name="com.google.inject.Module"/>
   1940     <constructor name="PrivateModule"
   1941       static="false" final="false" visibility="public"
   1942       deprecated="not deprecated">
   1943     </constructor>
   1944     <method name="configure"
   1945       abstract="false" native="false" synchronized="true"
   1946       static="false" final="true" visibility="public"
   1947       deprecated="not deprecated">
   1948       <param name="binder" type="com.google.inject.Binder"/>
   1949     </method>
   1950     <method name="configure"
   1951       abstract="true" native="false" synchronized="false"
   1952       static="false" final="false" visibility="protected"
   1953       deprecated="not deprecated">
   1954       <doc>
   1955       <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class)
   1956  expose()} to make the bindings in this module available externally.]]>
   1957       </doc>
   1958     </method>
   1959     <method name="expose"
   1960       abstract="false" native="false" synchronized="false"
   1961       static="false" final="true" visibility="protected"
   1962       deprecated="not deprecated">
   1963       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1964       <doc>
   1965       <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]>
   1966       </doc>
   1967     </method>
   1968     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1969       abstract="false" native="false" synchronized="false"
   1970       static="false" final="true" visibility="protected"
   1971       deprecated="not deprecated">
   1972       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   1973       <doc>
   1974       <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
   1975  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1976  binding annotation.]]>
   1977       </doc>
   1978     </method>
   1979     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1980       abstract="false" native="false" synchronized="false"
   1981       static="false" final="true" visibility="protected"
   1982       deprecated="not deprecated">
   1983       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   1984       <doc>
   1985       <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
   1986  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1987  binding annotation.]]>
   1988       </doc>
   1989     </method>
   1990     <method name="binder" return="com.google.inject.PrivateBinder"
   1991       abstract="false" native="false" synchronized="false"
   1992       static="false" final="true" visibility="protected"
   1993       deprecated="not deprecated">
   1994       <doc>
   1995       <![CDATA[Returns the current binder.]]>
   1996       </doc>
   1997     </method>
   1998     <method name="bindScope"
   1999       abstract="false" native="false" synchronized="false"
   2000       static="false" final="true" visibility="protected"
   2001       deprecated="not deprecated">
   2002       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2003       <param name="scope" type="com.google.inject.Scope"/>
   2004       <doc>
   2005       <![CDATA[@see Binder#bindScope(Class, Scope)]]>
   2006       </doc>
   2007     </method>
   2008     <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   2009       abstract="false" native="false" synchronized="false"
   2010       static="false" final="true" visibility="protected"
   2011       deprecated="not deprecated">
   2012       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2013       <doc>
   2014       <![CDATA[@see Binder#bind(Key)]]>
   2015       </doc>
   2016     </method>
   2017     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
   2018       abstract="false" native="false" synchronized="false"
   2019       static="false" final="true" visibility="protected"
   2020       deprecated="not deprecated">
   2021       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2022       <doc>
   2023       <![CDATA[@see Binder#bind(TypeLiteral)]]>
   2024       </doc>
   2025     </method>
   2026     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
   2027       abstract="false" native="false" synchronized="false"
   2028       static="false" final="true" visibility="protected"
   2029       deprecated="not deprecated">
   2030       <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
   2031       <doc>
   2032       <![CDATA[@see Binder#bind(Class)]]>
   2033       </doc>
   2034     </method>
   2035     <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
   2036       abstract="false" native="false" synchronized="false"
   2037       static="false" final="true" visibility="protected"
   2038       deprecated="not deprecated">
   2039       <doc>
   2040       <![CDATA[@see Binder#bindConstant()]]>
   2041       </doc>
   2042     </method>
   2043     <method name="install"
   2044       abstract="false" native="false" synchronized="false"
   2045       static="false" final="true" visibility="protected"
   2046       deprecated="not deprecated">
   2047       <param name="module" type="com.google.inject.Module"/>
   2048       <doc>
   2049       <![CDATA[@see Binder#install(Module)]]>
   2050       </doc>
   2051     </method>
   2052     <method name="addError"
   2053       abstract="false" native="false" synchronized="false"
   2054       static="false" final="true" visibility="protected"
   2055       deprecated="not deprecated">
   2056       <param name="message" type="java.lang.String"/>
   2057       <param name="arguments" type="java.lang.Object[]"/>
   2058       <doc>
   2059       <![CDATA[@see Binder#addError(String, Object[])]]>
   2060       </doc>
   2061     </method>
   2062     <method name="addError"
   2063       abstract="false" native="false" synchronized="false"
   2064       static="false" final="true" visibility="protected"
   2065       deprecated="not deprecated">
   2066       <param name="t" type="java.lang.Throwable"/>
   2067       <doc>
   2068       <![CDATA[@see Binder#addError(Throwable)]]>
   2069       </doc>
   2070     </method>
   2071     <method name="addError"
   2072       abstract="false" native="false" synchronized="false"
   2073       static="false" final="true" visibility="protected"
   2074       deprecated="not deprecated">
   2075       <param name="message" type="com.google.inject.spi.Message"/>
   2076       <doc>
   2077       <![CDATA[@see Binder#addError(Message)]]>
   2078       </doc>
   2079     </method>
   2080     <method name="requestInjection"
   2081       abstract="false" native="false" synchronized="false"
   2082       static="false" final="true" visibility="protected"
   2083       deprecated="not deprecated">
   2084       <param name="instance" type="java.lang.Object"/>
   2085       <doc>
   2086       <![CDATA[@see Binder#requestInjection(Object)]]>
   2087       </doc>
   2088     </method>
   2089     <method name="requestStaticInjection"
   2090       abstract="false" native="false" synchronized="false"
   2091       static="false" final="true" visibility="protected"
   2092       deprecated="not deprecated">
   2093       <param name="types" type="java.lang.Class[]"/>
   2094       <doc>
   2095       <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
   2096       </doc>
   2097     </method>
   2098     <method name="bindInterceptor"
   2099       abstract="false" native="false" synchronized="false"
   2100       static="false" final="true" visibility="protected"
   2101       deprecated="not deprecated">
   2102       <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
   2103       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
   2104       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
   2105       <doc>
   2106       <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]>
   2107       </doc>
   2108     </method>
   2109     <method name="requireBinding"
   2110       abstract="false" native="false" synchronized="false"
   2111       static="false" final="true" visibility="protected"
   2112       deprecated="not deprecated">
   2113       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   2114       <doc>
   2115       <![CDATA[Instructs Guice to require a binding to the given key.]]>
   2116       </doc>
   2117     </method>
   2118     <method name="requireBinding"
   2119       abstract="false" native="false" synchronized="false"
   2120       static="false" final="true" visibility="protected"
   2121       deprecated="not deprecated">
   2122       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   2123       <doc>
   2124       <![CDATA[Instructs Guice to require a binding to the given type.]]>
   2125       </doc>
   2126     </method>
   2127     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   2128       abstract="false" native="false" synchronized="false"
   2129       static="false" final="true" visibility="protected"
   2130       deprecated="not deprecated">
   2131       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2132       <doc>
   2133       <![CDATA[@see Binder#getProvider(Key)]]>
   2134       </doc>
   2135     </method>
   2136     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   2137       abstract="false" native="false" synchronized="false"
   2138       static="false" final="true" visibility="protected"
   2139       deprecated="not deprecated">
   2140       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2141       <doc>
   2142       <![CDATA[@see Binder#getProvider(Class)]]>
   2143       </doc>
   2144     </method>
   2145     <method name="convertToTypes"
   2146       abstract="false" native="false" synchronized="false"
   2147       static="false" final="true" visibility="protected"
   2148       deprecated="not deprecated">
   2149       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
   2150       <param name="converter" type="com.google.inject.spi.TypeConverter"/>
   2151       <doc>
   2152       <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]>
   2153       </doc>
   2154     </method>
   2155     <method name="currentStage" return="com.google.inject.Stage"
   2156       abstract="false" native="false" synchronized="false"
   2157       static="false" final="true" visibility="protected"
   2158       deprecated="not deprecated">
   2159       <doc>
   2160       <![CDATA[@see Binder#currentStage()]]>
   2161       </doc>
   2162     </method>
   2163     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   2164       abstract="false" native="false" synchronized="false"
   2165       static="false" final="false" visibility="protected"
   2166       deprecated="not deprecated">
   2167       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2168       <doc>
   2169       <![CDATA[@see Binder#getMembersInjector(Class)]]>
   2170       </doc>
   2171     </method>
   2172     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   2173       abstract="false" native="false" synchronized="false"
   2174       static="false" final="false" visibility="protected"
   2175       deprecated="not deprecated">
   2176       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2177       <doc>
   2178       <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]>
   2179       </doc>
   2180     </method>
   2181     <method name="bindListener"
   2182       abstract="false" native="false" synchronized="false"
   2183       static="false" final="false" visibility="protected"
   2184       deprecated="not deprecated">
   2185       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
   2186       <param name="listener" type="com.google.inject.spi.TypeListener"/>
   2187       <doc>
   2188       <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]>
   2189       </doc>
   2190     </method>
   2191     <method name="bindListener"
   2192       abstract="false" native="false" synchronized="false"
   2193       static="false" final="false" visibility="protected"
   2194       deprecated="not deprecated">
   2195       <param name="bindingMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
   2196       <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/>
   2197       <doc>
   2198       <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...)]]>
   2199       </doc>
   2200     </method>
   2201     <doc>
   2202     <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings
   2203  that are explicitly exposed will be available to other modules and to the users of the injector.
   2204  This module may expose the bindings it creates and the bindings of the modules it installs.
   2205 
   2206  <p>A private module can be nested within a regular module or within another private module using
   2207  {@link Binder#install install()}.  Its bindings live in a new environment that inherits bindings,
   2208  type converters, scopes, and interceptors from the surrounding ("parent") environment.  When you
   2209  nest multiple private modules, the result is a tree of environments where the injector's
   2210  environment is the root.
   2211 
   2212  <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link
   2213  com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link
   2214  Exposed} annotation:
   2215 
   2216  <pre>
   2217  public class FooBarBazModule extends PrivateModule {
   2218    protected void configure() {
   2219      bind(Foo.class).to(RealFoo.class);
   2220      expose(Foo.class);
   2221 
   2222      install(new TransactionalBarModule());
   2223      expose(Bar.class).annotatedWith(Transactional.class);
   2224 
   2225      bind(SomeImplementationDetail.class);
   2226      install(new MoreImplementationDetailsModule());
   2227    }
   2228 
   2229    {@literal @}Provides {@literal @}Exposed
   2230    public Baz provideBaz() {
   2231      return new SuperBaz();
   2232    }
   2233  }
   2234  </pre>
   2235 
   2236  <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent
   2237  injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the
   2238  root environment. Such bindings are shared among all environments in the tree.
   2239  
   2240  <p>The scope of a binding is constrained to its environment. A singleton bound in a private
   2241  module will be unique to its environment. But a binding for the same type in a different private
   2242  module will yield a different instance.
   2243 
   2244  <p>A shared binding that injects the {@code Injector} gets the root injector, which only has
   2245  access to bindings in the root environment. An explicit binding that injects the {@code Injector}
   2246  gets access to all bindings in the child environment.
   2247 
   2248  <p>To promote a just-in-time binding to an explicit binding, bind it:
   2249  <pre>
   2250    bind(FooImpl.class);
   2251  </pre>
   2252 
   2253  @author jessewilson (a] google.com (Jesse Wilson)
   2254  @since 2.0]]>
   2255     </doc>
   2256   </class>
   2257   <!-- end class com.google.inject.PrivateModule -->
   2258   <!-- start class com.google.inject.ProvidedBy -->
   2259   <class name="ProvidedBy"    abstract="true"
   2260     static="false" final="false" visibility="public"
   2261     deprecated="not deprecated">
   2262     <implements name="java.lang.annotation.Annotation"/>
   2263     <doc>
   2264     <![CDATA[A pointer to the default provider type for a type.
   2265 
   2266  @author crazybob (a] google.com (Bob Lee)]]>
   2267     </doc>
   2268   </class>
   2269   <!-- end class com.google.inject.ProvidedBy -->
   2270   <!-- start interface com.google.inject.Provider -->
   2271   <interface name="Provider"    abstract="true"
   2272     static="false" final="false" visibility="public"
   2273     deprecated="not deprecated">
   2274     <implements name="javax.inject.Provider&lt;T&gt;"/>
   2275     <method name="get" return="T"
   2276       abstract="true" native="false" synchronized="false"
   2277       static="false" final="false" visibility="public"
   2278       deprecated="not deprecated">
   2279       <doc>
   2280       <![CDATA[Provides an instance of {@code T}. Must never return {@code null}.
   2281 
   2282  @throws OutOfScopeException when an attempt is made to access a scoped object while the scope
   2283      in question is not currently active
   2284  @throws ProvisionException if an instance cannot be provided. Such exceptions include messages
   2285      and throwables to describe why provision failed.]]>
   2286       </doc>
   2287     </method>
   2288     <doc>
   2289     <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways
   2290  by Guice:
   2291 
   2292  <ul>
   2293  <li>When the default means for obtaining instances (an injectable or parameterless constructor)
   2294  is insufficient for a particular binding, the module can specify a custom {@code Provider}
   2295  instead, to control exactly how Guice creates or obtains instances for the binding.
   2296 
   2297  <li>An implementation class may always choose to have a {@code Provider<T>} instance injected,
   2298  rather than having a {@code T} injected directly.  This may give you access to multiple
   2299  instances, instances you wish to safely mutate and discard, instances which are out of scope
   2300  (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or
   2301  instances that will be initialized lazily.
   2302 
   2303  <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides
   2304  when to delegate to the backing provider and when to provide the instance some other way.
   2305 
   2306  <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests
   2307  for a given key, via the {@link Injector#getProvider} methods.
   2308  </ul>
   2309 
   2310  @param <T> the type of object this provides
   2311 
   2312  @author crazybob (a] google.com (Bob Lee)]]>
   2313     </doc>
   2314   </interface>
   2315   <!-- end interface com.google.inject.Provider -->
   2316   <!-- start class com.google.inject.Provides -->
   2317   <class name="Provides"    abstract="true"
   2318     static="false" final="false" visibility="public"
   2319     deprecated="not deprecated">
   2320     <implements name="java.lang.annotation.Annotation"/>
   2321     <doc>
   2322     <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return
   2323  type is bound to its returned value. Guice will pass dependencies to the method as parameters.
   2324 
   2325  @author crazybob (a] google.com (Bob Lee)
   2326  @since 2.0]]>
   2327     </doc>
   2328   </class>
   2329   <!-- end class com.google.inject.Provides -->
   2330   <!-- start class com.google.inject.ProvisionException -->
   2331   <class name="ProvisionException" extends="java.lang.RuntimeException"
   2332     abstract="false"
   2333     static="false" final="true" visibility="public"
   2334     deprecated="not deprecated">
   2335     <constructor name="ProvisionException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
   2336       static="false" final="false" visibility="public"
   2337       deprecated="not deprecated">
   2338       <doc>
   2339       <![CDATA[Creates a ProvisionException containing {@code messages}.]]>
   2340       </doc>
   2341     </constructor>
   2342     <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable"
   2343       static="false" final="false" visibility="public"
   2344       deprecated="not deprecated">
   2345     </constructor>
   2346     <constructor name="ProvisionException" type="java.lang.String"
   2347       static="false" final="false" visibility="public"
   2348       deprecated="not deprecated">
   2349     </constructor>
   2350     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   2351       abstract="false" native="false" synchronized="false"
   2352       static="false" final="false" visibility="public"
   2353       deprecated="not deprecated">
   2354       <doc>
   2355       <![CDATA[Returns messages for the errors that caused this exception.]]>
   2356       </doc>
   2357     </method>
   2358     <method name="getMessage" return="java.lang.String"
   2359       abstract="false" native="false" synchronized="false"
   2360       static="false" final="false" visibility="public"
   2361       deprecated="not deprecated">
   2362     </method>
   2363     <doc>
   2364     <![CDATA[Indicates that there was a runtime failure while providing an instance.
   2365 
   2366  @author kevinb (a] google.com (Kevin Bourrillion)
   2367  @author jessewilson (a] google.com (Jesse Wilson)
   2368  @since 2.0]]>
   2369     </doc>
   2370   </class>
   2371   <!-- end class com.google.inject.ProvisionException -->
   2372   <!-- start interface com.google.inject.Scope -->
   2373   <interface name="Scope"    abstract="true"
   2374     static="false" final="false" visibility="public"
   2375     deprecated="not deprecated">
   2376     <method name="scope" return="com.google.inject.Provider&lt;T&gt;"
   2377       abstract="true" native="false" synchronized="false"
   2378       static="false" final="false" visibility="public"
   2379       deprecated="not deprecated">
   2380       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2381       <param name="unscoped" type="com.google.inject.Provider&lt;T&gt;"/>
   2382       <doc>
   2383       <![CDATA[Scopes a provider. The returned provider returns objects from this scope.
   2384  If an object does not exist in this scope, the provider can use the given
   2385  unscoped provider to retrieve one.
   2386 
   2387  <p>Scope implementations are strongly encouraged to override
   2388  {@link Object#toString} in the returned provider and include the backing
   2389  provider's {@code toString()} output.
   2390 
   2391  @param key binding key
   2392  @param unscoped locates an instance when one doesn't already exist in this
   2393   scope.
   2394  @return a new provider which only delegates to the given unscoped provider
   2395   when an instance of the requested object doesn't already exist in this
   2396   scope]]>
   2397       </doc>
   2398     </method>
   2399     <method name="toString" return="java.lang.String"
   2400       abstract="true" native="false" synchronized="false"
   2401       static="false" final="false" visibility="public"
   2402       deprecated="not deprecated">
   2403       <doc>
   2404       <![CDATA[A short but useful description of this scope.  For comparison, the standard
   2405  scopes that ship with guice use the descriptions
   2406  {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and
   2407  {@code "ServletScopes.REQUEST"}.]]>
   2408       </doc>
   2409     </method>
   2410     <doc>
   2411     <![CDATA[A scope is a level of visibility that instances provided by Guice may have.
   2412  By default, an instance created by the {@link Injector} has <i>no scope</i>,
   2413  meaning it has no state from the framework's perspective -- the
   2414  {@code Injector} creates it, injects it once into the class that required it,
   2415  and then immediately forgets it. Associating a scope with a particular
   2416  binding allows the created instance to be "remembered" and possibly used
   2417  again for other injections.
   2418 
   2419  <p>An example of a scope is {@link Scopes#SINGLETON}.
   2420 
   2421  @author crazybob (a] google.com (Bob Lee)]]>
   2422     </doc>
   2423   </interface>
   2424   <!-- end interface com.google.inject.Scope -->
   2425   <!-- start class com.google.inject.ScopeAnnotation -->
   2426   <class name="ScopeAnnotation"    abstract="true"
   2427     static="false" final="false" visibility="public"
   2428     deprecated="not deprecated">
   2429     <implements name="java.lang.annotation.Annotation"/>
   2430     <doc>
   2431     <![CDATA[Annotates annotations which are used for scoping. Only one such annotation
   2432  may apply to a single implementation class. You must also annotate scope
   2433  annotations with {@code @Retention(RUNTIME)}. For example:
   2434 
   2435  <pre>
   2436    {@code @}Retention(RUNTIME)
   2437    {@code @}Target(TYPE, METHOD)
   2438    {@code @}ScopeAnnotation
   2439    public {@code @}interface SessionScoped {}
   2440  </pre>
   2441 
   2442  @author crazybob (a] google.com (Bob Lee)]]>
   2443     </doc>
   2444   </class>
   2445   <!-- end class com.google.inject.ScopeAnnotation -->
   2446   <!-- start class com.google.inject.Scopes -->
   2447   <class name="Scopes" extends="java.lang.Object"
   2448     abstract="false"
   2449     static="false" final="false" visibility="public"
   2450     deprecated="not deprecated">
   2451     <method name="isSingleton" return="boolean"
   2452       abstract="false" native="false" synchronized="false"
   2453       static="true" final="false" visibility="public"
   2454       deprecated="not deprecated">
   2455       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   2456       <doc>
   2457       <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link
   2458  com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
   2459  was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
   2460  also true if the target binding is singleton-scoped.
   2461 
   2462  @since 3.0]]>
   2463       </doc>
   2464     </method>
   2465     <method name="isScoped" return="boolean"
   2466       abstract="false" native="false" synchronized="false"
   2467       static="true" final="false" visibility="public"
   2468       deprecated="not deprecated">
   2469       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   2470       <param name="scope" type="com.google.inject.Scope"/>
   2471       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2472       <doc>
   2473       <![CDATA[Returns true if {@code binding} has the given scope. If the binding is a {@link
   2474  com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
   2475  was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
   2476  also true if the target binding has the given scope.
   2477 
   2478  @param binding binding to check
   2479  @param scope scope implementation instance
   2480  @param scopeAnnotation scope annotation class]]>
   2481       </doc>
   2482     </method>
   2483     <method name="isCircularProxy" return="boolean"
   2484       abstract="false" native="false" synchronized="false"
   2485       static="true" final="false" visibility="public"
   2486       deprecated="not deprecated">
   2487       <param name="object" type="java.lang.Object"/>
   2488       <doc>
   2489       <![CDATA[Returns true if the object is a proxy for a circular dependency,
   2490  constructed by Guice because it encountered a circular dependency. Scope
   2491  implementations should be careful to <b>not cache circular proxies</b>,
   2492  because the proxies are not intended for general purpose use. (They are
   2493  designed just to fulfill the immediate injection, not all injections.
   2494  Caching them can lead to IllegalArgumentExceptions or ClassCastExceptions.)]]>
   2495       </doc>
   2496     </method>
   2497     <field name="SINGLETON" type="com.google.inject.Scope"
   2498       transient="false" volatile="false"
   2499       static="true" final="true" visibility="public"
   2500       deprecated="not deprecated">
   2501       <doc>
   2502       <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]>
   2503       </doc>
   2504     </field>
   2505     <field name="NO_SCOPE" type="com.google.inject.Scope"
   2506       transient="false" volatile="false"
   2507       static="true" final="true" visibility="public"
   2508       deprecated="not deprecated">
   2509       <doc>
   2510       <![CDATA[No scope; the same as not applying any scope at all.  Each time the
   2511  Injector obtains an instance of an object with "no scope", it injects this
   2512  instance then immediately forgets it.  When the next request for the same
   2513  binding arrives it will need to obtain the instance over again.
   2514 
   2515  <p>This exists only in case a class has been annotated with a scope
   2516  annotation such as {@link Singleton @Singleton}, and you need to override
   2517  this to "no scope" in your binding.
   2518 
   2519  @since 2.0]]>
   2520       </doc>
   2521     </field>
   2522     <doc>
   2523     <![CDATA[Built-in scope implementations.
   2524 
   2525  @author crazybob (a] google.com (Bob Lee)]]>
   2526     </doc>
   2527   </class>
   2528   <!-- end class com.google.inject.Scopes -->
   2529   <!-- start class com.google.inject.Singleton -->
   2530   <class name="Singleton"    abstract="true"
   2531     static="false" final="false" visibility="public"
   2532     deprecated="not deprecated">
   2533     <implements name="java.lang.annotation.Annotation"/>
   2534     <doc>
   2535     <![CDATA[Apply this to implementation classes when you want only one instance
   2536  (per {@link Injector}) to be reused for all injections for that binding.
   2537 
   2538  @author crazybob (a] google.com (Bob Lee)]]>
   2539     </doc>
   2540   </class>
   2541   <!-- end class com.google.inject.Singleton -->
   2542   <!-- start class com.google.inject.Stage -->
   2543   <class name="Stage" extends="java.lang.Enum&lt;com.google.inject.Stage&gt;"
   2544     abstract="false"
   2545     static="false" final="true" visibility="public"
   2546     deprecated="not deprecated">
   2547     <method name="values" return="com.google.inject.Stage[]"
   2548       abstract="false" native="false" synchronized="false"
   2549       static="true" final="false" visibility="public"
   2550       deprecated="not deprecated">
   2551     </method>
   2552     <method name="valueOf" return="com.google.inject.Stage"
   2553       abstract="false" native="false" synchronized="false"
   2554       static="true" final="false" visibility="public"
   2555       deprecated="not deprecated">
   2556       <param name="name" type="java.lang.String"/>
   2557     </method>
   2558     <doc>
   2559     <![CDATA[The stage we're running in.
   2560 
   2561  @author crazybob (a] google.com (Bob Lee)]]>
   2562     </doc>
   2563   </class>
   2564   <!-- end class com.google.inject.Stage -->
   2565   <!-- start class com.google.inject.TypeLiteral -->
   2566   <class name="TypeLiteral" extends="java.lang.Object"
   2567     abstract="false"
   2568     static="false" final="false" visibility="public"
   2569     deprecated="not deprecated">
   2570     <constructor name="TypeLiteral"
   2571       static="false" final="false" visibility="protected"
   2572       deprecated="not deprecated">
   2573       <doc>
   2574       <![CDATA[Constructs a new type literal. Derives represented class from type
   2575  parameter.
   2576 
   2577  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   2578  parameter in the anonymous class's type hierarchy so we can reconstitute it
   2579  at runtime despite erasure.]]>
   2580       </doc>
   2581     </constructor>
   2582     <method name="getRawType" return="java.lang.Class&lt;? super T&gt;"
   2583       abstract="false" native="false" synchronized="false"
   2584       static="false" final="true" visibility="public"
   2585       deprecated="not deprecated">
   2586       <doc>
   2587       <![CDATA[Returns the raw (non-generic) type for this type.
   2588  
   2589  @since 2.0]]>
   2590       </doc>
   2591     </method>
   2592     <method name="getType" return="java.lang.reflect.Type"
   2593       abstract="false" native="false" synchronized="false"
   2594       static="false" final="true" visibility="public"
   2595       deprecated="not deprecated">
   2596       <doc>
   2597       <![CDATA[Gets underlying {@code Type} instance.]]>
   2598       </doc>
   2599     </method>
   2600     <method name="hashCode" return="int"
   2601       abstract="false" native="false" synchronized="false"
   2602       static="false" final="true" visibility="public"
   2603       deprecated="not deprecated">
   2604     </method>
   2605     <method name="equals" return="boolean"
   2606       abstract="false" native="false" synchronized="false"
   2607       static="false" final="true" visibility="public"
   2608       deprecated="not deprecated">
   2609       <param name="o" type="java.lang.Object"/>
   2610     </method>
   2611     <method name="toString" return="java.lang.String"
   2612       abstract="false" native="false" synchronized="false"
   2613       static="false" final="true" visibility="public"
   2614       deprecated="not deprecated">
   2615     </method>
   2616     <method name="get" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2617       abstract="false" native="false" synchronized="false"
   2618       static="true" final="false" visibility="public"
   2619       deprecated="not deprecated">
   2620       <param name="type" type="java.lang.reflect.Type"/>
   2621       <doc>
   2622       <![CDATA[Gets type literal for the given {@code Type} instance.]]>
   2623       </doc>
   2624     </method>
   2625     <method name="get" return="com.google.inject.TypeLiteral&lt;T&gt;"
   2626       abstract="false" native="false" synchronized="false"
   2627       static="true" final="false" visibility="public"
   2628       deprecated="not deprecated">
   2629       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2630       <doc>
   2631       <![CDATA[Gets type literal for the given {@code Class} instance.]]>
   2632       </doc>
   2633     </method>
   2634     <method name="getSupertype" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2635       abstract="false" native="false" synchronized="false"
   2636       static="false" final="false" visibility="public"
   2637       deprecated="not deprecated">
   2638       <param name="supertype" type="java.lang.Class&lt;?&gt;"/>
   2639       <doc>
   2640       <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code
   2641  ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code
   2642  Iterable.class}.
   2643 
   2644  @param supertype a superclass of, or interface implemented by, this.
   2645  @since 2.0]]>
   2646       </doc>
   2647     </method>
   2648     <method name="getFieldType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2649       abstract="false" native="false" synchronized="false"
   2650       static="false" final="false" visibility="public"
   2651       deprecated="not deprecated">
   2652       <param name="field" type="java.lang.reflect.Field"/>
   2653       <doc>
   2654       <![CDATA[Returns the resolved generic type of {@code field}.
   2655 
   2656  @param field a field defined by this or any superclass.
   2657  @since 2.0]]>
   2658       </doc>
   2659     </method>
   2660     <method name="getParameterTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   2661       abstract="false" native="false" synchronized="false"
   2662       static="false" final="false" visibility="public"
   2663       deprecated="not deprecated">
   2664       <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
   2665       <doc>
   2666       <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}.
   2667 
   2668  @param methodOrConstructor a method or constructor defined by this or any supertype.
   2669  @since 2.0]]>
   2670       </doc>
   2671     </method>
   2672     <method name="getExceptionTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   2673       abstract="false" native="false" synchronized="false"
   2674       static="false" final="false" visibility="public"
   2675       deprecated="not deprecated">
   2676       <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
   2677       <doc>
   2678       <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}.
   2679 
   2680  @param methodOrConstructor a method or constructor defined by this or any supertype.
   2681  @since 2.0]]>
   2682       </doc>
   2683     </method>
   2684     <method name="getReturnType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2685       abstract="false" native="false" synchronized="false"
   2686       static="false" final="false" visibility="public"
   2687       deprecated="not deprecated">
   2688       <param name="method" type="java.lang.reflect.Method"/>
   2689       <doc>
   2690       <![CDATA[Returns the resolved generic return type of {@code method}.
   2691 
   2692  @param method a method defined by this or any supertype.
   2693  @since 2.0]]>
   2694       </doc>
   2695     </method>
   2696     <doc>
   2697     <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to
   2698  represent generic types, so this class does. Forces clients to create a
   2699  subclass of this class which enables retrieval the type information even at
   2700  runtime.
   2701 
   2702  <p>For example, to create a type literal for {@code List<String>}, you can
   2703  create an empty anonymous inner class:
   2704 
   2705  <p>
   2706  {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};}
   2707 
   2708  <p>Along with modeling generic types, this class can resolve type parameters.
   2709  For example, to figure out what type {@code keySet()} returns on a {@code
   2710  Map<Integer, String>}, use this code:<pre>   {@code
   2711 
   2712    TypeLiteral<Map<Integer, String>> mapType
   2713        = new TypeLiteral<Map<Integer, String>>() {};
   2714    TypeLiteral<?> keySetType
   2715        = mapType.getReturnType(Map.class.getMethod("keySet"));
   2716    System.out.println(keySetType); // prints "Set<Integer>"}</pre>
   2717 
   2718  @author crazybob (a] google.com (Bob Lee)
   2719  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2720     </doc>
   2721   </class>
   2722   <!-- end class com.google.inject.TypeLiteral -->
   2723 </package>
   2724 <package name="com.google.inject.assistedinject">
   2725   <!-- start class com.google.inject.assistedinject.Assisted -->
   2726   <class name="Assisted"    abstract="true"
   2727     static="false" final="false" visibility="public"
   2728     deprecated="not deprecated">
   2729     <implements name="java.lang.annotation.Annotation"/>
   2730     <doc>
   2731     <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method.
   2732 
   2733  @author jmourits (a] google.com (Jerome Mourits)
   2734  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2735     </doc>
   2736   </class>
   2737   <!-- end class com.google.inject.assistedinject.Assisted -->
   2738   <!-- start class com.google.inject.assistedinject.AssistedInject -->
   2739   <class name="AssistedInject"    abstract="true"
   2740     static="false" final="false" visibility="public"
   2741     deprecated="not deprecated">
   2742     <implements name="java.lang.annotation.Annotation"/>
   2743     <doc>
   2744     <![CDATA[<p>
   2745  When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with 
   2746  {@code @AssistedInject} indicate that multiple constructors can be injected, each with different
   2747  parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject}
   2748  annotations. The assisted parameters must exactly match one corresponding factory method within
   2749  the factory interface, but the parameters do not need to be in the same order. Constructors
   2750  annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits
   2751  (such as AOP).
   2752  
   2753  <p>
   2754  <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors
   2755  annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted
   2756  parameters must exactly match one corresponding factory method within the factory interface and
   2757  all must be in the same order as listed in the factory. In this backwards compatable mode,
   2758  constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive
   2759  none of the benefits.
   2760  
   2761  <p>
   2762  Constructor parameters must be either supplied by the factory interface and marked with
   2763  <code>@Assisted</code>, or they must be injectable.
   2764  
   2765  @author jmourits (a] google.com (Jerome Mourits)
   2766  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2767     </doc>
   2768   </class>
   2769   <!-- end class com.google.inject.assistedinject.AssistedInject -->
   2770   <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding -->
   2771   <interface name="AssistedInjectBinding"    abstract="true"
   2772     static="false" final="false" visibility="public"
   2773     deprecated="not deprecated">
   2774     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   2775       abstract="true" native="false" synchronized="false"
   2776       static="false" final="false" visibility="public"
   2777       deprecated="not deprecated">
   2778       <doc>
   2779       <![CDATA[Returns the {@link Key} for the factory binding.]]>
   2780       </doc>
   2781     </method>
   2782     <method name="getAssistedMethods" return="java.util.Collection&lt;com.google.inject.assistedinject.AssistedMethod&gt;"
   2783       abstract="true" native="false" synchronized="false"
   2784       static="false" final="false" visibility="public"
   2785       deprecated="not deprecated">
   2786       <doc>
   2787       <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]>
   2788       </doc>
   2789     </method>
   2790     <doc>
   2791     <![CDATA[A binding for a factory created by FactoryModuleBuilder.
   2792  
   2793  @param <T> The fully qualified type of the factory.
   2794   
   2795  @since 3.0
   2796  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2797     </doc>
   2798   </interface>
   2799   <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding -->
   2800   <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
   2801   <interface name="AssistedInjectTargetVisitor"    abstract="true"
   2802     static="false" final="false" visibility="public"
   2803     deprecated="not deprecated">
   2804     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   2805     <method name="visit" return="V"
   2806       abstract="true" native="false" synchronized="false"
   2807       static="false" final="false" visibility="public"
   2808       deprecated="not deprecated">
   2809       <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding&lt;? extends T&gt;"/>
   2810       <doc>
   2811       <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]>
   2812       </doc>
   2813     </method>
   2814     <doc>
   2815     <![CDATA[A visitor for the AssistedInject extension.
   2816  <p>
   2817  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   2818  {@link FactoryModuleBuilder} will be visited through this interface.
   2819 
   2820  @since 3.0
   2821  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2822     </doc>
   2823   </interface>
   2824   <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
   2825   <!-- start interface com.google.inject.assistedinject.AssistedMethod -->
   2826   <interface name="AssistedMethod"    abstract="true"
   2827     static="false" final="false" visibility="public"
   2828     deprecated="not deprecated">
   2829     <method name="getFactoryMethod" return="java.lang.reflect.Method"
   2830       abstract="true" native="false" synchronized="false"
   2831       static="false" final="false" visibility="public"
   2832       deprecated="not deprecated">
   2833       <doc>
   2834       <![CDATA[Returns the factory method that is being assisted.]]>
   2835       </doc>
   2836     </method>
   2837     <method name="getImplementationType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2838       abstract="true" native="false" synchronized="false"
   2839       static="false" final="false" visibility="public"
   2840       deprecated="not deprecated">
   2841       <doc>
   2842       <![CDATA[Returns the implementation type that will be created when the method is
   2843  used.]]>
   2844       </doc>
   2845     </method>
   2846     <method name="getImplementationConstructor" return="java.lang.reflect.Constructor&lt;?&gt;"
   2847       abstract="true" native="false" synchronized="false"
   2848       static="false" final="false" visibility="public"
   2849       deprecated="not deprecated">
   2850       <doc>
   2851       <![CDATA[Returns the constructor that will be used to construct instances of the 
   2852  implementation.]]>
   2853       </doc>
   2854     </method>
   2855     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   2856       abstract="true" native="false" synchronized="false"
   2857       static="false" final="false" visibility="public"
   2858       deprecated="not deprecated">
   2859       <doc>
   2860       <![CDATA[Returns all non-assisted dependencies required to construct and inject
   2861  the implementation.]]>
   2862       </doc>
   2863     </method>
   2864     <doc>
   2865     <![CDATA[Details about how a method in an assisted inject factory will be assisted.
   2866  
   2867  @since 3.0
   2868  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2869     </doc>
   2870   </interface>
   2871   <!-- end interface com.google.inject.assistedinject.AssistedMethod -->
   2872   <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder -->
   2873   <class name="FactoryModuleBuilder" extends="java.lang.Object"
   2874     abstract="false"
   2875     static="false" final="true" visibility="public"
   2876     deprecated="not deprecated">
   2877     <constructor name="FactoryModuleBuilder"
   2878       static="false" final="false" visibility="public"
   2879       deprecated="not deprecated">
   2880     </constructor>
   2881     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2882       abstract="false" native="false" synchronized="false"
   2883       static="false" final="false" visibility="public"
   2884       deprecated="not deprecated">
   2885       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2886       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2887       <doc>
   2888       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2889       </doc>
   2890     </method>
   2891     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2892       abstract="false" native="false" synchronized="false"
   2893       static="false" final="false" visibility="public"
   2894       deprecated="not deprecated">
   2895       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2896       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2897       <doc>
   2898       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2899       </doc>
   2900     </method>
   2901     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2902       abstract="false" native="false" synchronized="false"
   2903       static="false" final="false" visibility="public"
   2904       deprecated="not deprecated">
   2905       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2906       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2907       <doc>
   2908       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2909       </doc>
   2910     </method>
   2911     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2912       abstract="false" native="false" synchronized="false"
   2913       static="false" final="false" visibility="public"
   2914       deprecated="not deprecated">
   2915       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2916       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2917       <doc>
   2918       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2919       </doc>
   2920     </method>
   2921     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2922       abstract="false" native="false" synchronized="false"
   2923       static="false" final="false" visibility="public"
   2924       deprecated="not deprecated">
   2925       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2926       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2927       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2928       <doc>
   2929       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2930       </doc>
   2931     </method>
   2932     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2933       abstract="false" native="false" synchronized="false"
   2934       static="false" final="false" visibility="public"
   2935       deprecated="not deprecated">
   2936       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2937       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2938       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2939       <doc>
   2940       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2941       </doc>
   2942     </method>
   2943     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2944       abstract="false" native="false" synchronized="false"
   2945       static="false" final="false" visibility="public"
   2946       deprecated="not deprecated">
   2947       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2948       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2949       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2950       <doc>
   2951       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2952       </doc>
   2953     </method>
   2954     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2955       abstract="false" native="false" synchronized="false"
   2956       static="false" final="false" visibility="public"
   2957       deprecated="not deprecated">
   2958       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2959       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2960       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2961       <doc>
   2962       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2963       </doc>
   2964     </method>
   2965     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2966       abstract="false" native="false" synchronized="false"
   2967       static="false" final="false" visibility="public"
   2968       deprecated="not deprecated">
   2969       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2970       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2971       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2972       <doc>
   2973       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2974       </doc>
   2975     </method>
   2976     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2977       abstract="false" native="false" synchronized="false"
   2978       static="false" final="false" visibility="public"
   2979       deprecated="not deprecated">
   2980       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2981       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2982       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2983       <doc>
   2984       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2985       </doc>
   2986     </method>
   2987     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2988       abstract="false" native="false" synchronized="false"
   2989       static="false" final="false" visibility="public"
   2990       deprecated="not deprecated">
   2991       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2992       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2993       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2994       <doc>
   2995       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2996       </doc>
   2997     </method>
   2998     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2999       abstract="false" native="false" synchronized="false"
   3000       static="false" final="false" visibility="public"
   3001       deprecated="not deprecated">
   3002       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   3003       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3004       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3005       <doc>
   3006       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3007       </doc>
   3008     </method>
   3009     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3010       abstract="false" native="false" synchronized="false"
   3011       static="false" final="false" visibility="public"
   3012       deprecated="not deprecated">
   3013       <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
   3014       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   3015       <doc>
   3016       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3017       </doc>
   3018     </method>
   3019     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3020       abstract="false" native="false" synchronized="false"
   3021       static="false" final="false" visibility="public"
   3022       deprecated="not deprecated">
   3023       <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
   3024       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3025       <doc>
   3026       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3027       </doc>
   3028     </method>
   3029     <method name="build" return="com.google.inject.Module"
   3030       abstract="false" native="false" synchronized="false"
   3031       static="false" final="false" visibility="public"
   3032       deprecated="not deprecated">
   3033       <param name="factoryInterface" type="java.lang.Class&lt;F&gt;"/>
   3034       <doc>
   3035       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3036       </doc>
   3037     </method>
   3038     <method name="build" return="com.google.inject.Module"
   3039       abstract="false" native="false" synchronized="false"
   3040       static="false" final="false" visibility="public"
   3041       deprecated="not deprecated">
   3042       <param name="factoryInterface" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
   3043       <doc>
   3044       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3045       </doc>
   3046     </method>
   3047     <method name="build" return="com.google.inject.Module"
   3048       abstract="false" native="false" synchronized="false"
   3049       static="false" final="false" visibility="public"
   3050       deprecated="not deprecated">
   3051       <param name="factoryInterface" type="com.google.inject.Key&lt;F&gt;"/>
   3052     </method>
   3053     <doc>
   3054     <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to
   3055  construct objects.
   3056 
   3057  <h3>Defining a factory</h3>
   3058  Create an interface whose methods return the constructed type, or any of its supertypes. The
   3059  method's parameters are the arguments required to build the constructed type.
   3060 
   3061  <pre>public interface PaymentFactory {
   3062    Payment create(Date startDate, Money amount);
   3063  }</pre>
   3064 
   3065  You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
   3066  or <i>newPayment</i>.
   3067 
   3068  <h3>Creating a type that accepts factory parameters</h3>
   3069  {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject
   3070  Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor
   3071  should have parameters that match each of the factory method's parameters. Each factory-supplied
   3072  parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the
   3073  parameter is not bound by your application's modules.
   3074 
   3075  <pre>public class RealPayment implements Payment {
   3076    {@literal @}Inject
   3077    public RealPayment(
   3078       CreditService creditService,
   3079       AuthService authService,
   3080       <strong>{@literal @}Assisted Date startDate</strong>,
   3081       <strong>{@literal @}Assisted Money amount</strong>) {
   3082      ...
   3083    }
   3084  }</pre>
   3085  
   3086  <h3>Multiple factory methods for the same type</h3>
   3087  If the factory contains many methods that return the same type, you can create multiple
   3088  constructors in your concrete class, each constructor marked with with
   3089  {@literal @}{@link AssistedInject}, in order to match the different parameters types of the
   3090  factory methods. 
   3091  
   3092  <pre>public interface PaymentFactory {
   3093     Payment create(Date startDate, Money amount);
   3094     Payment createWithoutDate(Money amount);
   3095  }
   3096  
   3097  public class RealPayment implements Payment {
   3098   {@literal @}AssistedInject
   3099    public RealPayment(
   3100       CreditService creditService,
   3101       AuthService authService,
   3102      <strong>{@literal @}Assisted Date startDate</strong>,
   3103      <strong>{@literal @}Assisted Money amount</strong>) {
   3104      ...
   3105    }
   3106    
   3107   {@literal @}AssistedInject
   3108    public RealPayment(
   3109       CreditService creditService,
   3110       AuthService authService,
   3111      <strong>{@literal @}Assisted Money amount</strong>) {
   3112      ...
   3113    }   
   3114  }</pre> 
   3115 
   3116  <h3>Configuring simple factories</h3>
   3117  In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the
   3118  factory:
   3119 
   3120  <pre>install(new FactoryModuleBuilder()
   3121      .implement(Payment.class, RealPayment.class)
   3122      .build(PaymentFactory.class);</pre>
   3123 
   3124  As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
   3125  factory cannot be used until the injector has been initialized.
   3126  
   3127  <h3>Configuring complex factories</h3>
   3128  Factories can create an arbitrary number of objects, one per each method.  Each factory
   3129  method can be configured using <code>.implement</code>.
   3130 
   3131  <pre>public interface OrderFactory {
   3132     Payment create(Date startDate, Money amount);
   3133     Shipment create(Customer customer, Item item);
   3134     Receipt create(Payment payment, Shipment shipment);
   3135  }
   3136  
   3137  [...]
   3138  
   3139  install(new FactoryModuleBuilder()
   3140      .implement(Payment.class, RealPayment.class)
   3141      // excluding .implement for Shipment means the implementation class
   3142      // will be 'Shipment' itself, which is legal if it's not an interface.
   3143      .implement(Receipt.class, RealReceipt.class)
   3144      .build(OrderFactory.class);</pre>
   3145  </pre>
   3146 
   3147  <h3>Using the factory</h3>
   3148  Inject your factory into your application classes. When you use the factory, your arguments
   3149  will be combined with values from the injector to construct an instance.
   3150 
   3151  <pre>public class PaymentAction {
   3152    {@literal @}Inject private PaymentFactory paymentFactory;
   3153 
   3154    public void doPayment(Money amount) {
   3155      Payment payment = paymentFactory.create(new Date(), amount);
   3156      payment.apply();
   3157    }
   3158  }</pre>
   3159 
   3160  <h3>Making parameter types distinct</h3>
   3161  The types of the factory method's parameters must be distinct. To use multiple parameters of
   3162  the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
   3163  parameters. The names must be applied to the factory method's parameters:
   3164 
   3165  <pre>public interface PaymentFactory {
   3166    Payment create(
   3167        <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3168        <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3169        Money amount);
   3170  } </pre>
   3171 
   3172  ...and to the concrete type's constructor parameters:
   3173 
   3174  <pre>public class RealPayment implements Payment {
   3175    {@literal @}Inject
   3176    public RealPayment(
   3177       CreditService creditService,
   3178       AuthService authService,
   3179       <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3180       <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3181       <strong>{@literal @}Assisted</strong> Money amount) {
   3182      ...
   3183    }
   3184  }</pre>
   3185 
   3186  <h3>Values are created by Guice</h3>
   3187  Returned factories use child injectors to create values. The values are eligible for method
   3188  interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
   3189  returned.
   3190 
   3191  <h3>More configuration options</h3>
   3192  In addition to simply specifying an implementation class for any returned type, factories' return
   3193  values can be automatic or can be configured to use annotations:
   3194  <p/>
   3195  If you just want to return the types specified in the factory, do not configure any
   3196  implementations:
   3197 
   3198  <pre>public interface FruitFactory {
   3199    Apple getApple(Color color);
   3200  }
   3201  ...
   3202  protected void configure() {
   3203    install(new FactoryModuleBuilder().build(FruitFactory.class));
   3204  }</pre>
   3205 
   3206  Note that any type returned by the factory in this manner needs to be an implementation class.
   3207  <p/>
   3208  To return two different implementations for the same interface from your factory, use binding
   3209  annotations on your return types:
   3210 
   3211  <pre>interface CarFactory {
   3212    {@literal @}Named("fast") Car getFastCar(Color color);
   3213    {@literal @}Named("clean") Car getCleanCar(Color color);
   3214  }
   3215  ...
   3216  protected void configure() {
   3217    install(new FactoryModuleBuilder()
   3218        .implement(Car.class, Names.named("fast"), Porsche.class)
   3219        .implement(Car.class, Names.named("clean"), Prius.class)
   3220        .build(CarFactory.class));
   3221  }</pre>
   3222  
   3223  <h3>Implementation limitations</h3>
   3224  As a limitation of the implementation, it is prohibited to declare a factory method that
   3225  accepts a {@code Provider} as one of its arguments.
   3226 
   3227  @since 3.0
   3228  @author schmitt (a] google.com (Peter Schmitt)]]>
   3229     </doc>
   3230   </class>
   3231   <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder -->
   3232   <!-- start class com.google.inject.assistedinject.FactoryProvider -->
   3233   <class name="FactoryProvider" extends="java.lang.Object"
   3234     abstract="false"
   3235     static="false" final="false" visibility="public"
   3236     deprecated="use {@link FactoryModuleBuilder} instead.">
   3237     <implements name="com.google.inject.Provider&lt;F&gt;"/>
   3238     <implements name="com.google.inject.spi.HasDependencies"/>
   3239     <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
   3240       abstract="false" native="false" synchronized="false"
   3241       static="true" final="false" visibility="public"
   3242       deprecated="not deprecated">
   3243       <param name="factoryType" type="java.lang.Class&lt;F&gt;"/>
   3244       <param name="implementationType" type="java.lang.Class&lt;?&gt;"/>
   3245     </method>
   3246     <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
   3247       abstract="false" native="false" synchronized="false"
   3248       static="true" final="false" visibility="public"
   3249       deprecated="not deprecated">
   3250       <param name="factoryType" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
   3251       <param name="implementationType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   3252     </method>
   3253     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   3254       abstract="false" native="false" synchronized="false"
   3255       static="false" final="false" visibility="public"
   3256       deprecated="not deprecated">
   3257     </method>
   3258     <method name="get" return="F"
   3259       abstract="false" native="false" synchronized="false"
   3260       static="false" final="false" visibility="public"
   3261       deprecated="not deprecated">
   3262     </method>
   3263     <doc>
   3264     <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and
   3265  additional capability.
   3266 
   3267  <p>Provides a factory that combines the caller's arguments with injector-supplied values to
   3268  construct objects.
   3269 
   3270  <h3>Defining a factory</h3>
   3271  Create an interface whose methods return the constructed type, or any of its supertypes. The
   3272  method's parameters are the arguments required to build the constructed type.
   3273  <pre>public interface PaymentFactory {
   3274    Payment create(Date startDate, Money amount);
   3275  }</pre>
   3276  You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
   3277  or <i>newPayment</i>.
   3278 
   3279  <h3>Creating a type that accepts factory parameters</h3>
   3280  {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated
   3281  constructor. In addition to injector-supplied parameters, the constructor should have
   3282  parameters that match each of the factory method's parameters. Each factory-supplied parameter
   3283  requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter
   3284  is not bound by your application's modules.
   3285  <pre>public class RealPayment implements Payment {
   3286    {@literal @}Inject
   3287    public RealPayment(
   3288       CreditService creditService,
   3289       AuthService authService,
   3290       <strong>{@literal @}Assisted Date startDate</strong>,
   3291       <strong>{@literal @}Assisted Money amount</strong>) {
   3292      ...
   3293    }
   3294  }</pre>
   3295  Any parameter that permits a null value should also be annotated {@code @Nullable}.
   3296 
   3297  <h3>Configuring factories</h3>
   3298  In your {@link com.google.inject.Module module}, bind the factory interface to the returned
   3299  factory:
   3300  <pre>bind(PaymentFactory.class).toProvider(
   3301      FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre>
   3302  As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
   3303  factory cannot be used until the injector has been initialized.
   3304 
   3305  <h3>Using the factory</h3>
   3306  Inject your factory into your application classes. When you use the factory, your arguments
   3307  will be combined with values from the injector to construct an instance.
   3308  <pre>public class PaymentAction {
   3309    {@literal @}Inject private PaymentFactory paymentFactory;
   3310 
   3311    public void doPayment(Money amount) {
   3312      Payment payment = paymentFactory.create(new Date(), amount);
   3313      payment.apply();
   3314    }
   3315  }</pre>
   3316 
   3317  <h3>Making parameter types distinct</h3>
   3318  The types of the factory method's parameters must be distinct. To use multiple parameters of
   3319  the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
   3320  parameters. The names must be applied to the factory method's parameters:
   3321 
   3322  <pre>public interface PaymentFactory {
   3323    Payment create(
   3324        <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3325        <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3326        Money amount);
   3327  } </pre>
   3328  ...and to the concrete type's constructor parameters:
   3329  <pre>public class RealPayment implements Payment {
   3330    {@literal @}Inject
   3331    public RealPayment(
   3332       CreditService creditService,
   3333       AuthService authService,
   3334       <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3335       <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3336       <strong>{@literal @}Assisted</strong> Money amount) {
   3337      ...
   3338    }
   3339  }</pre>
   3340 
   3341  <h3>Values are created by Guice</h3>
   3342  Returned factories use child injectors to create values. The values are eligible for method
   3343  interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
   3344  returned.
   3345 
   3346  <h3>Backwards compatibility using {@literal @}AssistedInject</h3>
   3347  Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with
   3348  {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode.
   3349 
   3350  <p>Instead of matching factory method arguments to constructor parameters using their names, the
   3351  <strong>parameters are matched by their order</strong>. The first factory method argument is
   3352  used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no
   3353  effect.
   3354 
   3355  <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for
   3356  method interception. They do receive post-construction member injection.
   3357 
   3358  @param <F> The factory interface
   3359 
   3360  @author jmourits (a] google.com (Jerome Mourits)
   3361  @author jessewilson (a] google.com (Jesse Wilson)
   3362  @author dtm (a] google.com (Daniel Martin)
   3363  
   3364  @deprecated use {@link FactoryModuleBuilder} instead.]]>
   3365     </doc>
   3366   </class>
   3367   <!-- end class com.google.inject.assistedinject.FactoryProvider -->
   3368 </package>
   3369 <package name="com.google.inject.binder">
   3370   <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder -->
   3371   <interface name="AnnotatedBindingBuilder"    abstract="true"
   3372     static="false" final="false" visibility="public"
   3373     deprecated="not deprecated">
   3374     <implements name="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"/>
   3375     <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   3376       abstract="true" native="false" synchronized="false"
   3377       static="false" final="false" visibility="public"
   3378       deprecated="not deprecated">
   3379       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3380       <doc>
   3381       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3382       </doc>
   3383     </method>
   3384     <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   3385       abstract="true" native="false" synchronized="false"
   3386       static="false" final="false" visibility="public"
   3387       deprecated="not deprecated">
   3388       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3389       <doc>
   3390       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3391       </doc>
   3392     </method>
   3393     <doc>
   3394     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3395 
   3396  @author crazybob (a] google.com (Bob Lee)]]>
   3397     </doc>
   3398   </interface>
   3399   <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder -->
   3400   <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
   3401   <interface name="AnnotatedConstantBindingBuilder"    abstract="true"
   3402     static="false" final="false" visibility="public"
   3403     deprecated="not deprecated">
   3404     <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
   3405       abstract="true" native="false" synchronized="false"
   3406       static="false" final="false" visibility="public"
   3407       deprecated="not deprecated">
   3408       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3409       <doc>
   3410       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3411       </doc>
   3412     </method>
   3413     <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
   3414       abstract="true" native="false" synchronized="false"
   3415       static="false" final="false" visibility="public"
   3416       deprecated="not deprecated">
   3417       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3418       <doc>
   3419       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3420       </doc>
   3421     </method>
   3422     <doc>
   3423     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3424 
   3425  @author crazybob (a] google.com (Bob Lee)]]>
   3426     </doc>
   3427   </interface>
   3428   <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
   3429   <!-- start interface com.google.inject.binder.AnnotatedElementBuilder -->
   3430   <interface name="AnnotatedElementBuilder"    abstract="true"
   3431     static="false" final="false" visibility="public"
   3432     deprecated="not deprecated">
   3433     <method name="annotatedWith"
   3434       abstract="true" native="false" synchronized="false"
   3435       static="false" final="false" visibility="public"
   3436       deprecated="not deprecated">
   3437       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3438       <doc>
   3439       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3440       </doc>
   3441     </method>
   3442     <method name="annotatedWith"
   3443       abstract="true" native="false" synchronized="false"
   3444       static="false" final="false" visibility="public"
   3445       deprecated="not deprecated">
   3446       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3447       <doc>
   3448       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3449       </doc>
   3450     </method>
   3451     <doc>
   3452     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3453 
   3454  @author jessewilson (a] google.com (Jesse Wilson)
   3455  @since 2.0]]>
   3456     </doc>
   3457   </interface>
   3458   <!-- end interface com.google.inject.binder.AnnotatedElementBuilder -->
   3459   <!-- start interface com.google.inject.binder.ConstantBindingBuilder -->
   3460   <interface name="ConstantBindingBuilder"    abstract="true"
   3461     static="false" final="false" visibility="public"
   3462     deprecated="not deprecated">
   3463     <method name="to"
   3464       abstract="true" native="false" synchronized="false"
   3465       static="false" final="false" visibility="public"
   3466       deprecated="not deprecated">
   3467       <param name="value" type="java.lang.String"/>
   3468       <doc>
   3469       <![CDATA[Binds constant to the given value.]]>
   3470       </doc>
   3471     </method>
   3472     <method name="to"
   3473       abstract="true" native="false" synchronized="false"
   3474       static="false" final="false" visibility="public"
   3475       deprecated="not deprecated">
   3476       <param name="value" type="int"/>
   3477       <doc>
   3478       <![CDATA[Binds constant to the given value.]]>
   3479       </doc>
   3480     </method>
   3481     <method name="to"
   3482       abstract="true" native="false" synchronized="false"
   3483       static="false" final="false" visibility="public"
   3484       deprecated="not deprecated">
   3485       <param name="value" type="long"/>
   3486       <doc>
   3487       <![CDATA[Binds constant to the given value.]]>
   3488       </doc>
   3489     </method>
   3490     <method name="to"
   3491       abstract="true" native="false" synchronized="false"
   3492       static="false" final="false" visibility="public"
   3493       deprecated="not deprecated">
   3494       <param name="value" type="boolean"/>
   3495       <doc>
   3496       <![CDATA[Binds constant to the given value.]]>
   3497       </doc>
   3498     </method>
   3499     <method name="to"
   3500       abstract="true" native="false" synchronized="false"
   3501       static="false" final="false" visibility="public"
   3502       deprecated="not deprecated">
   3503       <param name="value" type="double"/>
   3504       <doc>
   3505       <![CDATA[Binds constant to the given value.]]>
   3506       </doc>
   3507     </method>
   3508     <method name="to"
   3509       abstract="true" native="false" synchronized="false"
   3510       static="false" final="false" visibility="public"
   3511       deprecated="not deprecated">
   3512       <param name="value" type="float"/>
   3513       <doc>
   3514       <![CDATA[Binds constant to the given value.]]>
   3515       </doc>
   3516     </method>
   3517     <method name="to"
   3518       abstract="true" native="false" synchronized="false"
   3519       static="false" final="false" visibility="public"
   3520       deprecated="not deprecated">
   3521       <param name="value" type="short"/>
   3522       <doc>
   3523       <![CDATA[Binds constant to the given value.]]>
   3524       </doc>
   3525     </method>
   3526     <method name="to"
   3527       abstract="true" native="false" synchronized="false"
   3528       static="false" final="false" visibility="public"
   3529       deprecated="not deprecated">
   3530       <param name="value" type="char"/>
   3531       <doc>
   3532       <![CDATA[Binds constant to the given value.]]>
   3533       </doc>
   3534     </method>
   3535     <method name="to"
   3536       abstract="true" native="false" synchronized="false"
   3537       static="false" final="false" visibility="public"
   3538       deprecated="not deprecated">
   3539       <param name="value" type="byte"/>
   3540       <doc>
   3541       <![CDATA[Binds constant to the given value.
   3542  
   3543  @since 3.0]]>
   3544       </doc>
   3545     </method>
   3546     <method name="to"
   3547       abstract="true" native="false" synchronized="false"
   3548       static="false" final="false" visibility="public"
   3549       deprecated="not deprecated">
   3550       <param name="value" type="java.lang.Class&lt;?&gt;"/>
   3551       <doc>
   3552       <![CDATA[Binds constant to the given value.]]>
   3553       </doc>
   3554     </method>
   3555     <method name="to"
   3556       abstract="true" native="false" synchronized="false"
   3557       static="false" final="false" visibility="public"
   3558       deprecated="not deprecated">
   3559       <param name="value" type="E extends java.lang.Enum&lt;E&gt;"/>
   3560       <doc>
   3561       <![CDATA[Binds constant to the given value.]]>
   3562       </doc>
   3563     </method>
   3564     <doc>
   3565     <![CDATA[Binds to a constant value.]]>
   3566     </doc>
   3567   </interface>
   3568   <!-- end interface com.google.inject.binder.ConstantBindingBuilder -->
   3569   <!-- start interface com.google.inject.binder.LinkedBindingBuilder -->
   3570   <interface name="LinkedBindingBuilder"    abstract="true"
   3571     static="false" final="false" visibility="public"
   3572     deprecated="not deprecated">
   3573     <implements name="com.google.inject.binder.ScopedBindingBuilder"/>
   3574     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3575       abstract="true" native="false" synchronized="false"
   3576       static="false" final="false" visibility="public"
   3577       deprecated="not deprecated">
   3578       <param name="implementation" type="java.lang.Class&lt;? extends T&gt;"/>
   3579       <doc>
   3580       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3581       </doc>
   3582     </method>
   3583     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3584       abstract="true" native="false" synchronized="false"
   3585       static="false" final="false" visibility="public"
   3586       deprecated="not deprecated">
   3587       <param name="implementation" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3588       <doc>
   3589       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3590       </doc>
   3591     </method>
   3592     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3593       abstract="true" native="false" synchronized="false"
   3594       static="false" final="false" visibility="public"
   3595       deprecated="not deprecated">
   3596       <param name="targetKey" type="com.google.inject.Key&lt;? extends T&gt;"/>
   3597       <doc>
   3598       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3599       </doc>
   3600     </method>
   3601     <method name="toInstance"
   3602       abstract="true" native="false" synchronized="false"
   3603       static="false" final="false" visibility="public"
   3604       deprecated="not deprecated">
   3605       <param name="instance" type="T"/>
   3606       <doc>
   3607       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3608 
   3609  @see com.google.inject.Injector#injectMembers]]>
   3610       </doc>
   3611     </method>
   3612     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3613       abstract="true" native="false" synchronized="false"
   3614       static="false" final="false" visibility="public"
   3615       deprecated="not deprecated">
   3616       <param name="provider" type="com.google.inject.Provider&lt;? extends T&gt;"/>
   3617       <doc>
   3618       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3619 
   3620  @see com.google.inject.Injector#injectMembers]]>
   3621       </doc>
   3622     </method>
   3623     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3624       abstract="true" native="false" synchronized="false"
   3625       static="false" final="false" visibility="public"
   3626       deprecated="not deprecated">
   3627       <param name="provider" type="javax.inject.Provider&lt;? extends T&gt;"/>
   3628       <doc>
   3629       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3630 
   3631  @see com.google.inject.Injector#injectMembers]]>
   3632       </doc>
   3633     </method>
   3634     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3635       abstract="true" native="false" synchronized="false"
   3636       static="false" final="false" visibility="public"
   3637       deprecated="not deprecated">
   3638       <param name="providerType" type="java.lang.Class&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3639       <doc>
   3640       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3641       </doc>
   3642     </method>
   3643     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3644       abstract="true" native="false" synchronized="false"
   3645       static="false" final="false" visibility="public"
   3646       deprecated="not deprecated">
   3647       <param name="providerType" type="com.google.inject.TypeLiteral&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3648       <doc>
   3649       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3650       </doc>
   3651     </method>
   3652     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3653       abstract="true" native="false" synchronized="false"
   3654       static="false" final="false" visibility="public"
   3655       deprecated="not deprecated">
   3656       <param name="providerKey" type="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3657       <doc>
   3658       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3659       </doc>
   3660     </method>
   3661     <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
   3662       abstract="true" native="false" synchronized="false"
   3663       static="false" final="false" visibility="public"
   3664       deprecated="not deprecated">
   3665       <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
   3666       <doc>
   3667       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3668  
   3669  @since 3.0]]>
   3670       </doc>
   3671     </method>
   3672     <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
   3673       abstract="true" native="false" synchronized="false"
   3674       static="false" final="false" visibility="public"
   3675       deprecated="not deprecated">
   3676       <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
   3677       <param name="type" type="com.google.inject.TypeLiteral&lt;? extends S&gt;"/>
   3678       <doc>
   3679       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3680  
   3681  @since 3.0]]>
   3682       </doc>
   3683     </method>
   3684     <doc>
   3685     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3686 
   3687  @author crazybob (a] google.com (Bob Lee)]]>
   3688     </doc>
   3689   </interface>
   3690   <!-- end interface com.google.inject.binder.LinkedBindingBuilder -->
   3691   <!-- start interface com.google.inject.binder.ScopedBindingBuilder -->
   3692   <interface name="ScopedBindingBuilder"    abstract="true"
   3693     static="false" final="false" visibility="public"
   3694     deprecated="not deprecated">
   3695     <method name="in"
   3696       abstract="true" native="false" synchronized="false"
   3697       static="false" final="false" visibility="public"
   3698       deprecated="not deprecated">
   3699       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3700       <doc>
   3701       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3702       </doc>
   3703     </method>
   3704     <method name="in"
   3705       abstract="true" native="false" synchronized="false"
   3706       static="false" final="false" visibility="public"
   3707       deprecated="not deprecated">
   3708       <param name="scope" type="com.google.inject.Scope"/>
   3709       <doc>
   3710       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3711       </doc>
   3712     </method>
   3713     <method name="asEagerSingleton"
   3714       abstract="true" native="false" synchronized="false"
   3715       static="false" final="false" visibility="public"
   3716       deprecated="not deprecated">
   3717       <doc>
   3718       <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this
   3719  singleton-scoped binding upon creation. Useful for application
   3720  initialization logic.  See the EDSL examples at
   3721  {@link com.google.inject.Binder}.]]>
   3722       </doc>
   3723     </method>
   3724     <doc>
   3725     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3726 
   3727  @author crazybob (a] google.com (Bob Lee)]]>
   3728     </doc>
   3729   </interface>
   3730   <!-- end interface com.google.inject.binder.ScopedBindingBuilder -->
   3731 </package>
   3732 <package name="com.google.inject.grapher">
   3733   <!-- start class com.google.inject.grapher.AbstractInjectorGrapher -->
   3734   <class name="AbstractInjectorGrapher" extends="java.lang.Object"
   3735     abstract="true"
   3736     static="false" final="false" visibility="public"
   3737     deprecated="not deprecated">
   3738     <implements name="com.google.inject.grapher.InjectorGrapher"/>
   3739     <constructor name="AbstractInjectorGrapher"
   3740       static="false" final="false" visibility="public"
   3741       deprecated="not deprecated">
   3742     </constructor>
   3743     <constructor name="AbstractInjectorGrapher" type="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3744       static="false" final="false" visibility="public"
   3745       deprecated="not deprecated">
   3746     </constructor>
   3747     <method name="graph"
   3748       abstract="false" native="false" synchronized="false"
   3749       static="false" final="true" visibility="public"
   3750       deprecated="not deprecated">
   3751       <param name="injector" type="com.google.inject.Injector"/>
   3752       <exception name="IOException" type="java.io.IOException"/>
   3753     </method>
   3754     <method name="graph"
   3755       abstract="false" native="false" synchronized="false"
   3756       static="false" final="true" visibility="public"
   3757       deprecated="not deprecated">
   3758       <param name="injector" type="com.google.inject.Injector"/>
   3759       <param name="root" type="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"/>
   3760       <exception name="IOException" type="java.io.IOException"/>
   3761     </method>
   3762     <method name="reset"
   3763       abstract="true" native="false" synchronized="false"
   3764       static="false" final="false" visibility="protected"
   3765       deprecated="not deprecated">
   3766       <exception name="IOException" type="java.io.IOException"/>
   3767       <doc>
   3768       <![CDATA[Resets the state of the grapher before rendering a new graph.]]>
   3769       </doc>
   3770     </method>
   3771     <method name="newInterfaceNode"
   3772       abstract="true" native="false" synchronized="false"
   3773       static="false" final="false" visibility="protected"
   3774       deprecated="not deprecated">
   3775       <param name="node" type="com.google.inject.grapher.InterfaceNode"/>
   3776       <exception name="IOException" type="java.io.IOException"/>
   3777       <doc>
   3778       <![CDATA[Adds a new interface node to the graph.]]>
   3779       </doc>
   3780     </method>
   3781     <method name="newImplementationNode"
   3782       abstract="true" native="false" synchronized="false"
   3783       static="false" final="false" visibility="protected"
   3784       deprecated="not deprecated">
   3785       <param name="node" type="com.google.inject.grapher.ImplementationNode"/>
   3786       <exception name="IOException" type="java.io.IOException"/>
   3787       <doc>
   3788       <![CDATA[Adds a new implementation node to the graph.]]>
   3789       </doc>
   3790     </method>
   3791     <method name="newInstanceNode"
   3792       abstract="true" native="false" synchronized="false"
   3793       static="false" final="false" visibility="protected"
   3794       deprecated="not deprecated">
   3795       <param name="node" type="com.google.inject.grapher.InstanceNode"/>
   3796       <exception name="IOException" type="java.io.IOException"/>
   3797       <doc>
   3798       <![CDATA[Adds a new instance node to the graph.]]>
   3799       </doc>
   3800     </method>
   3801     <method name="newDependencyEdge"
   3802       abstract="true" native="false" synchronized="false"
   3803       static="false" final="false" visibility="protected"
   3804       deprecated="not deprecated">
   3805       <param name="edge" type="com.google.inject.grapher.DependencyEdge"/>
   3806       <exception name="IOException" type="java.io.IOException"/>
   3807       <doc>
   3808       <![CDATA[Adds a new dependency edge to the graph.]]>
   3809       </doc>
   3810     </method>
   3811     <method name="newBindingEdge"
   3812       abstract="true" native="false" synchronized="false"
   3813       static="false" final="false" visibility="protected"
   3814       deprecated="not deprecated">
   3815       <param name="edge" type="com.google.inject.grapher.BindingEdge"/>
   3816       <exception name="IOException" type="java.io.IOException"/>
   3817       <doc>
   3818       <![CDATA[Adds a new binding edge to the graph.]]>
   3819       </doc>
   3820     </method>
   3821     <method name="postProcess"
   3822       abstract="true" native="false" synchronized="false"
   3823       static="false" final="false" visibility="protected"
   3824       deprecated="not deprecated">
   3825       <exception name="IOException" type="java.io.IOException"/>
   3826       <doc>
   3827       <![CDATA[Performs any post processing required after all nodes and edges have been added.]]>
   3828       </doc>
   3829     </method>
   3830     <doc>
   3831     <![CDATA[Abstract injector grapher that builds the dependency graph but doesn't render it.
   3832 
   3833  @author bojand (a] google.com (Bojan Djordjevic)]]>
   3834     </doc>
   3835   </class>
   3836   <!-- end class com.google.inject.grapher.AbstractInjectorGrapher -->
   3837   <!-- start class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters -->
   3838   <class name="AbstractInjectorGrapher.GrapherParameters" extends="java.lang.Object"
   3839     abstract="false"
   3840     static="true" final="true" visibility="public"
   3841     deprecated="not deprecated">
   3842     <constructor name="GrapherParameters"
   3843       static="false" final="false" visibility="public"
   3844       deprecated="not deprecated">
   3845     </constructor>
   3846     <method name="getRootKeySetCreator" return="com.google.inject.grapher.RootKeySetCreator"
   3847       abstract="false" native="false" synchronized="false"
   3848       static="false" final="false" visibility="public"
   3849       deprecated="not deprecated">
   3850     </method>
   3851     <method name="setRootKeySetCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3852       abstract="false" native="false" synchronized="false"
   3853       static="false" final="false" visibility="public"
   3854       deprecated="not deprecated">
   3855       <param name="rootKeySetCreator" type="com.google.inject.grapher.RootKeySetCreator"/>
   3856     </method>
   3857     <method name="getAliasCreator" return="com.google.inject.grapher.AliasCreator"
   3858       abstract="false" native="false" synchronized="false"
   3859       static="false" final="false" visibility="public"
   3860       deprecated="not deprecated">
   3861     </method>
   3862     <method name="setAliasCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3863       abstract="false" native="false" synchronized="false"
   3864       static="false" final="false" visibility="public"
   3865       deprecated="not deprecated">
   3866       <param name="aliasCreator" type="com.google.inject.grapher.AliasCreator"/>
   3867     </method>
   3868     <method name="getNodeCreator" return="com.google.inject.grapher.NodeCreator"
   3869       abstract="false" native="false" synchronized="false"
   3870       static="false" final="false" visibility="public"
   3871       deprecated="not deprecated">
   3872     </method>
   3873     <method name="setNodeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3874       abstract="false" native="false" synchronized="false"
   3875       static="false" final="false" visibility="public"
   3876       deprecated="not deprecated">
   3877       <param name="nodeCreator" type="com.google.inject.grapher.NodeCreator"/>
   3878     </method>
   3879     <method name="getEdgeCreator" return="com.google.inject.grapher.EdgeCreator"
   3880       abstract="false" native="false" synchronized="false"
   3881       static="false" final="false" visibility="public"
   3882       deprecated="not deprecated">
   3883     </method>
   3884     <method name="setEdgeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3885       abstract="false" native="false" synchronized="false"
   3886       static="false" final="false" visibility="public"
   3887       deprecated="not deprecated">
   3888       <param name="edgeCreator" type="com.google.inject.grapher.EdgeCreator"/>
   3889     </method>
   3890     <doc>
   3891     <![CDATA[Parameters used to override default settings of the grapher.]]>
   3892     </doc>
   3893   </class>
   3894   <!-- end class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters -->
   3895   <!-- start class com.google.inject.grapher.Alias -->
   3896   <class name="Alias" extends="java.lang.Object"
   3897     abstract="false"
   3898     static="false" final="true" visibility="public"
   3899     deprecated="not deprecated">
   3900     <constructor name="Alias" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
   3901       static="false" final="false" visibility="public"
   3902       deprecated="not deprecated">
   3903     </constructor>
   3904     <method name="getFromId" return="com.google.inject.grapher.NodeId"
   3905       abstract="false" native="false" synchronized="false"
   3906       static="false" final="false" visibility="public"
   3907       deprecated="not deprecated">
   3908     </method>
   3909     <method name="getToId" return="com.google.inject.grapher.NodeId"
   3910       abstract="false" native="false" synchronized="false"
   3911       static="false" final="false" visibility="public"
   3912       deprecated="not deprecated">
   3913     </method>
   3914     <doc>
   3915     <![CDATA[Alias between two nodes. Causes the 'from' node to be aliased with the 'to' node, which means
   3916  that the 'from' node is not rendered and all edges going to it instead go to the 'to' node.
   3917 
   3918  @author bojand (a] google.com (Bojan Djordjevic)]]>
   3919     </doc>
   3920   </class>
   3921   <!-- end class com.google.inject.grapher.Alias -->
   3922   <!-- start interface com.google.inject.grapher.AliasCreator -->
   3923   <interface name="AliasCreator"    abstract="true"
   3924     static="false" final="false" visibility="public"
   3925     deprecated="not deprecated">
   3926     <method name="createAliases" return="java.lang.Iterable&lt;com.google.inject.grapher.Alias&gt;"
   3927       abstract="true" native="false" synchronized="false"
   3928       static="false" final="false" visibility="public"
   3929       deprecated="not deprecated">
   3930       <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
   3931       <doc>
   3932       <![CDATA[Returns aliases for the given dependency graph. The aliases do not need to be transitively
   3933  resolved, i.e. it is valid to return an alias (X to Y) and an alias (Y to Z). It is the
   3934  responsibility of the caller to resolve this to (X to Z) and (Y to Z).
   3935 
   3936  @param bindings bindings that make up the dependency graph
   3937  @return aliases that should be applied on the graph]]>
   3938       </doc>
   3939     </method>
   3940     <doc>
   3941     <![CDATA[Creator of node aliases. Used by dependency graphers to merge nodes in the internal Guice graph
   3942  into a single node on the rendered graph.
   3943 
   3944  @author bojand (a] google.com (Bojan Djordjevic)]]>
   3945     </doc>
   3946   </interface>
   3947   <!-- end interface com.google.inject.grapher.AliasCreator -->
   3948   <!-- start class com.google.inject.grapher.BindingEdge -->
   3949   <class name="BindingEdge" extends="com.google.inject.grapher.Edge"
   3950     abstract="false"
   3951     static="false" final="false" visibility="public"
   3952     deprecated="not deprecated">
   3953     <constructor name="BindingEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.grapher.BindingEdge.Type"
   3954       static="false" final="false" visibility="public"
   3955       deprecated="not deprecated">
   3956     </constructor>
   3957     <method name="getType" return="com.google.inject.grapher.BindingEdge.Type"
   3958       abstract="false" native="false" synchronized="false"
   3959       static="false" final="false" visibility="public"
   3960       deprecated="not deprecated">
   3961     </method>
   3962     <method name="equals" return="boolean"
   3963       abstract="false" native="false" synchronized="false"
   3964       static="false" final="false" visibility="public"
   3965       deprecated="not deprecated">
   3966       <param name="obj" type="java.lang.Object"/>
   3967     </method>
   3968     <method name="hashCode" return="int"
   3969       abstract="false" native="false" synchronized="false"
   3970       static="false" final="false" visibility="public"
   3971       deprecated="not deprecated">
   3972     </method>
   3973     <method name="toString" return="java.lang.String"
   3974       abstract="false" native="false" synchronized="false"
   3975       static="false" final="false" visibility="public"
   3976       deprecated="not deprecated">
   3977     </method>
   3978     <method name="copy" return="com.google.inject.grapher.Edge"
   3979       abstract="false" native="false" synchronized="false"
   3980       static="false" final="false" visibility="public"
   3981       deprecated="not deprecated">
   3982       <param name="fromId" type="com.google.inject.grapher.NodeId"/>
   3983       <param name="toId" type="com.google.inject.grapher.NodeId"/>
   3984     </method>
   3985     <doc>
   3986     <![CDATA[Edge that connects an interface to the type or instance that is bound to implement it.
   3987 
   3988  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   3989     </doc>
   3990   </class>
   3991   <!-- end class com.google.inject.grapher.BindingEdge -->
   3992   <!-- start class com.google.inject.grapher.BindingEdge.Type -->
   3993   <class name="BindingEdge.Type" extends="java.lang.Enum&lt;com.google.inject.grapher.BindingEdge.Type&gt;"
   3994     abstract="false"
   3995     static="true" final="true" visibility="public"
   3996     deprecated="not deprecated">
   3997     <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]"
   3998       abstract="false" native="false" synchronized="false"
   3999       static="true" final="false" visibility="public"
   4000       deprecated="not deprecated">
   4001     </method>
   4002     <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type"
   4003       abstract="false" native="false" synchronized="false"
   4004       static="true" final="false" visibility="public"
   4005       deprecated="not deprecated">
   4006       <param name="name" type="java.lang.String"/>
   4007     </method>
   4008     <doc>
   4009     <![CDATA[Classification for what kind of binding this edge represents.]]>
   4010     </doc>
   4011   </class>
   4012   <!-- end class com.google.inject.grapher.BindingEdge.Type -->
   4013   <!-- start class com.google.inject.grapher.DefaultRootKeySetCreator -->
   4014   <class name="DefaultRootKeySetCreator" extends="java.lang.Object"
   4015     abstract="false"
   4016     static="false" final="false" visibility="public"
   4017     deprecated="not deprecated">
   4018     <implements name="com.google.inject.grapher.RootKeySetCreator"/>
   4019     <constructor name="DefaultRootKeySetCreator"
   4020       static="false" final="false" visibility="public"
   4021       deprecated="not deprecated">
   4022     </constructor>
   4023     <method name="getRootKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4024       abstract="false" native="false" synchronized="false"
   4025       static="false" final="false" visibility="public"
   4026       deprecated="not deprecated">
   4027       <param name="injector" type="com.google.inject.Injector"/>
   4028     </method>
   4029     <doc>
   4030     <![CDATA[Root key set creator that starts with all types that are not Guice internal types or the
   4031  {@link Logger} type.
   4032 
   4033  @author bojand (a] google.com (Bojan Djordjevic)]]>
   4034     </doc>
   4035   </class>
   4036   <!-- end class com.google.inject.grapher.DefaultRootKeySetCreator -->
   4037   <!-- start class com.google.inject.grapher.DependencyEdge -->
   4038   <class name="DependencyEdge" extends="com.google.inject.grapher.Edge"
   4039     abstract="false"
   4040     static="false" final="false" visibility="public"
   4041     deprecated="not deprecated">
   4042     <constructor name="DependencyEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.spi.InjectionPoint"
   4043       static="false" final="false" visibility="public"
   4044       deprecated="not deprecated">
   4045     </constructor>
   4046     <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
   4047       abstract="false" native="false" synchronized="false"
   4048       static="false" final="false" visibility="public"
   4049       deprecated="not deprecated">
   4050     </method>
   4051     <method name="equals" return="boolean"
   4052       abstract="false" native="false" synchronized="false"
   4053       static="false" final="false" visibility="public"
   4054       deprecated="not deprecated">
   4055       <param name="obj" type="java.lang.Object"/>
   4056     </method>
   4057     <method name="hashCode" return="int"
   4058       abstract="false" native="false" synchronized="false"
   4059       static="false" final="false" visibility="public"
   4060       deprecated="not deprecated">
   4061     </method>
   4062     <method name="toString" return="java.lang.String"
   4063       abstract="false" native="false" synchronized="false"
   4064       static="false" final="false" visibility="public"
   4065       deprecated="not deprecated">
   4066     </method>
   4067     <method name="copy" return="com.google.inject.grapher.Edge"
   4068       abstract="false" native="false" synchronized="false"
   4069       static="false" final="false" visibility="public"
   4070       deprecated="not deprecated">
   4071       <param name="fromId" type="com.google.inject.grapher.NodeId"/>
   4072       <param name="toId" type="com.google.inject.grapher.NodeId"/>
   4073     </method>
   4074     <doc>
   4075     <![CDATA[Edge from a class or {@link InjectionPoint} to the interface node that will satisfy the
   4076  dependency.
   4077 
   4078  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4079     </doc>
   4080   </class>
   4081   <!-- end class com.google.inject.grapher.DependencyEdge -->
   4082   <!-- start class com.google.inject.grapher.Edge -->
   4083   <class name="Edge" extends="java.lang.Object"
   4084     abstract="true"
   4085     static="false" final="false" visibility="public"
   4086     deprecated="not deprecated">
   4087     <constructor name="Edge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
   4088       static="false" final="false" visibility="protected"
   4089       deprecated="not deprecated">
   4090     </constructor>
   4091     <method name="getFromId" return="com.google.inject.grapher.NodeId"
   4092       abstract="false" native="false" synchronized="false"
   4093       static="false" final="false" visibility="public"
   4094       deprecated="not deprecated">
   4095     </method>
   4096     <method name="getToId" return="com.google.inject.grapher.NodeId"
   4097       abstract="false" native="false" synchronized="false"
   4098       static="false" final="false" visibility="public"
   4099       deprecated="not deprecated">
   4100     </method>
   4101     <method name="equals" return="boolean"
   4102       abstract="false" native="false" synchronized="false"
   4103       static="false" final="false" visibility="public"
   4104       deprecated="not deprecated">
   4105       <param name="obj" type="java.lang.Object"/>
   4106     </method>
   4107     <method name="hashCode" return="int"
   4108       abstract="false" native="false" synchronized="false"
   4109       static="false" final="false" visibility="public"
   4110       deprecated="not deprecated">
   4111     </method>
   4112     <method name="copy" return="com.google.inject.grapher.Edge"
   4113       abstract="true" native="false" synchronized="false"
   4114       static="false" final="false" visibility="public"
   4115       deprecated="not deprecated">
   4116       <param name="fromId" type="com.google.inject.grapher.NodeId"/>
   4117       <param name="toId" type="com.google.inject.grapher.NodeId"/>
   4118       <doc>
   4119       <![CDATA[Returns a copy of the edge with new node IDs.
   4120 
   4121  @param fromId new ID of the 'from' node
   4122  @param toId new ID of the 'to' node
   4123  @return copy of the edge with the new node IDs]]>
   4124       </doc>
   4125     </method>
   4126     <doc>
   4127     <![CDATA[Edge in a guice dependency graph.
   4128 
   4129  @author bojand (a] google.com (Bojan Djordjevic)]]>
   4130     </doc>
   4131   </class>
   4132   <!-- end class com.google.inject.grapher.Edge -->
   4133   <!-- start interface com.google.inject.grapher.EdgeCreator -->
   4134   <interface name="EdgeCreator"    abstract="true"
   4135     static="false" final="false" visibility="public"
   4136     deprecated="not deprecated">
   4137     <method name="getEdges" return="java.lang.Iterable&lt;com.google.inject.grapher.Edge&gt;"
   4138       abstract="true" native="false" synchronized="false"
   4139       static="false" final="false" visibility="public"
   4140       deprecated="not deprecated">
   4141       <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
   4142       <doc>
   4143       <![CDATA[Returns edges for the given dependency graph.]]>
   4144       </doc>
   4145     </method>
   4146     <doc>
   4147     <![CDATA[Creator of graph edges to render. All edges will be rendered on the graph after node aliasing is
   4148  performed.
   4149 
   4150  @author bojand (a] google.com (Bojan Djordjevic)]]>
   4151     </doc>
   4152   </interface>
   4153   <!-- end interface com.google.inject.grapher.EdgeCreator -->
   4154   <!-- start class com.google.inject.grapher.ImplementationNode -->
   4155   <class name="ImplementationNode" extends="com.google.inject.grapher.Node"
   4156     abstract="false"
   4157     static="false" final="false" visibility="public"
   4158     deprecated="not deprecated">
   4159     <constructor name="ImplementationNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.util.Collection&lt;java.lang.reflect.Member&gt;"
   4160       static="false" final="false" visibility="public"
   4161       deprecated="not deprecated">
   4162     </constructor>
   4163     <method name="getMembers" return="java.util.Collection&lt;java.lang.reflect.Member&gt;"
   4164       abstract="false" native="false" synchronized="false"
   4165       static="false" final="false" visibility="public"
   4166       deprecated="not deprecated">
   4167     </method>
   4168     <method name="equals" return="boolean"
   4169       abstract="false" native="false" synchronized="false"
   4170       static="false" final="false" visibility="public"
   4171       deprecated="not deprecated">
   4172       <param name="obj" type="java.lang.Object"/>
   4173     </method>
   4174     <method name="hashCode" return="int"
   4175       abstract="false" native="false" synchronized="false"
   4176       static="false" final="false" visibility="public"
   4177       deprecated="not deprecated">
   4178     </method>
   4179     <method name="toString" return="java.lang.String"
   4180       abstract="false" native="false" synchronized="false"
   4181       static="false" final="false" visibility="public"
   4182       deprecated="not deprecated">
   4183     </method>
   4184     <method name="copy" return="com.google.inject.grapher.Node"
   4185       abstract="false" native="false" synchronized="false"
   4186       static="false" final="false" visibility="public"
   4187       deprecated="not deprecated">
   4188       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4189     </method>
   4190     <doc>
   4191     <![CDATA[Node for types that have {@link Dependency}s and are bound to {@link InterfaceNode}s. These
   4192  nodes will often have fields for {@link Member}s that are {@link InjectionPoint}s.
   4193 
   4194  @see DependencyEdge
   4195 
   4196  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4197     </doc>
   4198   </class>
   4199   <!-- end class com.google.inject.grapher.ImplementationNode -->
   4200   <!-- start interface com.google.inject.grapher.InjectorGrapher -->
   4201   <interface name="InjectorGrapher"    abstract="true"
   4202     static="false" final="false" visibility="public"
   4203     deprecated="not deprecated">
   4204     <method name="graph"
   4205       abstract="true" native="false" synchronized="false"
   4206       static="false" final="false" visibility="public"
   4207       deprecated="not deprecated">
   4208       <param name="injector" type="com.google.inject.Injector"/>
   4209       <exception name="IOException" type="java.io.IOException"/>
   4210       <doc>
   4211       <![CDATA[Graphs the guice dependency graph for the given injector using default starting keys.]]>
   4212       </doc>
   4213     </method>
   4214     <method name="graph"
   4215       abstract="true" native="false" synchronized="false"
   4216       static="false" final="false" visibility="public"
   4217       deprecated="not deprecated">
   4218       <param name="injector" type="com.google.inject.Injector"/>
   4219       <param name="root" type="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"/>
   4220       <exception name="IOException" type="java.io.IOException"/>
   4221       <doc>
   4222       <![CDATA[Graphs the guice dependency graph for the given injector using the given starting keys and
   4223  their transitive dependencies.]]>
   4224       </doc>
   4225     </method>
   4226     <doc>
   4227     <![CDATA[Guice injector grapher. Renders the guice dependency graph for an injector. It can render the
   4228  whole dependency graph or just transitive dependencies of a given set of nodes.
   4229 
   4230  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4231     </doc>
   4232   </interface>
   4233   <!-- end interface com.google.inject.grapher.InjectorGrapher -->
   4234   <!-- start class com.google.inject.grapher.InstanceNode -->
   4235   <class name="InstanceNode" extends="com.google.inject.grapher.Node"
   4236     abstract="false"
   4237     static="false" final="false" visibility="public"
   4238     deprecated="not deprecated">
   4239     <constructor name="InstanceNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.lang.Object, java.lang.Iterable&lt;java.lang.reflect.Member&gt;"
   4240       static="false" final="false" visibility="public"
   4241       deprecated="not deprecated">
   4242     </constructor>
   4243     <method name="getInstance" return="java.lang.Object"
   4244       abstract="false" native="false" synchronized="false"
   4245       static="false" final="false" visibility="public"
   4246       deprecated="not deprecated">
   4247     </method>
   4248     <method name="getMembers" return="java.lang.Iterable&lt;java.lang.reflect.Member&gt;"
   4249       abstract="false" native="false" synchronized="false"
   4250       static="false" final="false" visibility="public"
   4251       deprecated="not deprecated">
   4252     </method>
   4253     <method name="equals" return="boolean"
   4254       abstract="false" native="false" synchronized="false"
   4255       static="false" final="false" visibility="public"
   4256       deprecated="not deprecated">
   4257       <param name="obj" type="java.lang.Object"/>
   4258     </method>
   4259     <method name="hashCode" return="int"
   4260       abstract="false" native="false" synchronized="false"
   4261       static="false" final="false" visibility="public"
   4262       deprecated="not deprecated">
   4263     </method>
   4264     <method name="toString" return="java.lang.String"
   4265       abstract="false" native="false" synchronized="false"
   4266       static="false" final="false" visibility="public"
   4267       deprecated="not deprecated">
   4268     </method>
   4269     <method name="copy" return="com.google.inject.grapher.Node"
   4270       abstract="false" native="false" synchronized="false"
   4271       static="false" final="false" visibility="public"
   4272       deprecated="not deprecated">
   4273       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4274     </method>
   4275     <doc>
   4276     <![CDATA[Node for instances. Used when a type is bound to an instance.
   4277 
   4278  @author bojand (a] google.com (Bojan Djordjevic)]]>
   4279     </doc>
   4280   </class>
   4281   <!-- end class com.google.inject.grapher.InstanceNode -->
   4282   <!-- start class com.google.inject.grapher.InterfaceNode -->
   4283   <class name="InterfaceNode" extends="com.google.inject.grapher.Node"
   4284     abstract="false"
   4285     static="false" final="false" visibility="public"
   4286     deprecated="not deprecated">
   4287     <constructor name="InterfaceNode" type="com.google.inject.grapher.NodeId, java.lang.Object"
   4288       static="false" final="false" visibility="public"
   4289       deprecated="not deprecated">
   4290     </constructor>
   4291     <method name="copy" return="com.google.inject.grapher.Node"
   4292       abstract="false" native="false" synchronized="false"
   4293       static="false" final="false" visibility="public"
   4294       deprecated="not deprecated">
   4295       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4296     </method>
   4297     <method name="equals" return="boolean"
   4298       abstract="false" native="false" synchronized="false"
   4299       static="false" final="false" visibility="public"
   4300       deprecated="not deprecated">
   4301       <param name="obj" type="java.lang.Object"/>
   4302     </method>
   4303     <method name="toString" return="java.lang.String"
   4304       abstract="false" native="false" synchronized="false"
   4305       static="false" final="false" visibility="public"
   4306       deprecated="not deprecated">
   4307     </method>
   4308     <doc>
   4309     <![CDATA[Node for an interface type that has been bound to an implementation class or instance.
   4310 
   4311  @see BindingEdge
   4312 
   4313  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4314     </doc>
   4315   </class>
   4316   <!-- end class com.google.inject.grapher.InterfaceNode -->
   4317   <!-- start interface com.google.inject.grapher.NameFactory -->
   4318   <interface name="NameFactory"    abstract="true"
   4319     static="false" final="false" visibility="public"
   4320     deprecated="not deprecated">
   4321     <method name="getMemberName" return="java.lang.String"
   4322       abstract="true" native="false" synchronized="false"
   4323       static="false" final="false" visibility="public"
   4324       deprecated="not deprecated">
   4325       <param name="member" type="java.lang.reflect.Member"/>
   4326     </method>
   4327     <method name="getClassName" return="java.lang.String"
   4328       abstract="true" native="false" synchronized="false"
   4329       static="false" final="false" visibility="public"
   4330       deprecated="not deprecated">
   4331       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4332     </method>
   4333     <method name="getInstanceName" return="java.lang.String"
   4334       abstract="true" native="false" synchronized="false"
   4335       static="false" final="false" visibility="public"
   4336       deprecated="not deprecated">
   4337       <param name="instance" type="java.lang.Object"/>
   4338     </method>
   4339     <method name="getAnnotationName" return="java.lang.String"
   4340       abstract="true" native="false" synchronized="false"
   4341       static="false" final="false" visibility="public"
   4342       deprecated="not deprecated">
   4343       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4344     </method>
   4345     <method name="getSourceName" return="java.lang.String"
   4346       abstract="true" native="false" synchronized="false"
   4347       static="false" final="false" visibility="public"
   4348       deprecated="not deprecated">
   4349       <param name="source" type="java.lang.Object"/>
   4350     </method>
   4351     <doc>
   4352     <![CDATA[Interface for a service that provides nice {@link String}s that we can
   4353  display in the graph for the types that come up in {@link Binding}s.
   4354 
   4355  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4356     </doc>
   4357   </interface>
   4358   <!-- end interface com.google.inject.grapher.NameFactory -->
   4359   <!-- start class com.google.inject.grapher.Node -->
   4360   <class name="Node" extends="java.lang.Object"
   4361     abstract="true"
   4362     static="false" final="false" visibility="public"
   4363     deprecated="not deprecated">
   4364     <constructor name="Node" type="com.google.inject.grapher.NodeId, java.lang.Object"
   4365       static="false" final="false" visibility="protected"
   4366       deprecated="not deprecated">
   4367     </constructor>
   4368     <method name="getId" return="com.google.inject.grapher.NodeId"
   4369       abstract="false" native="false" synchronized="false"
   4370       static="false" final="false" visibility="public"
   4371       deprecated="not deprecated">
   4372     </method>
   4373     <method name="getSource" return="java.lang.Object"
   4374       abstract="false" native="false" synchronized="false"
   4375       static="false" final="false" visibility="public"
   4376       deprecated="not deprecated">
   4377     </method>
   4378     <method name="equals" return="boolean"
   4379       abstract="false" native="false" synchronized="false"
   4380       static="false" final="false" visibility="public"
   4381       deprecated="not deprecated">
   4382       <param name="obj" type="java.lang.Object"/>
   4383     </method>
   4384     <method name="hashCode" return="int"
   4385       abstract="false" native="false" synchronized="false"
   4386       static="false" final="false" visibility="public"
   4387       deprecated="not deprecated">
   4388     </method>
   4389     <method name="copy" return="com.google.inject.grapher.Node"
   4390       abstract="true" native="false" synchronized="false"
   4391       static="false" final="false" visibility="public"
   4392       deprecated="not deprecated">
   4393       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4394       <doc>
   4395       <![CDATA[Returns a copy of the node with a new ID.
   4396 
   4397  @param id new ID of the node
   4398  @return copy of the node with a new ID]]>
   4399       </doc>
   4400     </method>
   4401     <doc>
   4402     <![CDATA[Node in a guice dependency graph.
   4403 
   4404  @author bojand (a] google.com (Bojan Djordjevic)]]>
   4405     </doc>
   4406   </class>
   4407   <!-- end class com.google.inject.grapher.Node -->
   4408   <!-- start interface com.google.inject.grapher.NodeCreator -->
   4409   <interface name="NodeCreator"    abstract="true"
   4410     static="false" final="false" visibility="public"
   4411     deprecated="not deprecated">
   4412     <method name="getNodes" return="java.lang.Iterable&lt;com.google.inject.grapher.Node&gt;"
   4413       abstract="true" native="false" synchronized="false"
   4414       static="false" final="false" visibility="public"
   4415       deprecated="not deprecated">
   4416       <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
   4417       <doc>
   4418       <![CDATA[Returns nodes for the given dependency graph.]]>
   4419       </doc>
   4420     </method>
   4421     <doc>
   4422     <![CDATA[Creator of graph nodes.
   4423 
   4424  @author bojand (a] google.com (Bojan Djordjevic)]]>
   4425     </doc>
   4426   </interface>
   4427   <!-- end interface com.google.inject.grapher.NodeCreator -->
   4428   <!-- start class com.google.inject.grapher.NodeId -->
   4429   <class name="NodeId" extends="java.lang.Object"
   4430     abstract="false"
   4431     static="false" final="true" visibility="public"
   4432     deprecated="not deprecated">
   4433     <method name="newTypeId" return="com.google.inject.grapher.NodeId"
   4434       abstract="false" native="false" synchronized="false"
   4435       static="true" final="false" visibility="public"
   4436       deprecated="not deprecated">
   4437       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4438     </method>
   4439     <method name="newInstanceId" return="com.google.inject.grapher.NodeId"
   4440       abstract="false" native="false" synchronized="false"
   4441       static="true" final="false" visibility="public"
   4442       deprecated="not deprecated">
   4443       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4444     </method>
   4445     <method name="getKey" return="com.google.inject.Key&lt;?&gt;"
   4446       abstract="false" native="false" synchronized="false"
   4447       static="false" final="false" visibility="public"
   4448       deprecated="not deprecated">
   4449     </method>
   4450     <method name="hashCode" return="int"
   4451       abstract="false" native="false" synchronized="false"
   4452       static="false" final="false" visibility="public"
   4453       deprecated="not deprecated">
   4454     </method>
   4455     <method name="equals" return="boolean"
   4456       abstract="false" native="false" synchronized="false"
   4457       static="false" final="false" visibility="public"
   4458       deprecated="not deprecated">
   4459       <param name="obj" type="java.lang.Object"/>
   4460     </method>
   4461     <method name="toString" return="java.lang.String"
   4462       abstract="false" native="false" synchronized="false"
   4463       static="false" final="false" visibility="public"
   4464       deprecated="not deprecated">
   4465     </method>
   4466     <doc>
   4467     <![CDATA[ID of a node in the graph. An ID is given by a {@link Key} and a node type, which is used to
   4468  distinguish instances and implementation classes for the same key. For example
   4469  {@code bind(Integer.class).toInstance(42)} produces two nodes: an
   4470  interface node with the key of {@code Key<Integer>} and an instance node with the same
   4471  {@link Key} and value of 42.
   4472 
   4473  @author bojand (a] google.com (Bojan Djordjevic)]]>
   4474     </doc>
   4475   </class>
   4476   <!-- end class com.google.inject.grapher.NodeId -->
   4477   <!-- start class com.google.inject.grapher.NodeId.NodeType -->
   4478   <class name="NodeId.NodeType" extends="java.lang.Enum&lt;com.google.inject.grapher.NodeId.NodeType&gt;"
   4479     abstract="false"
   4480     static="true" final="true" visibility="public"
   4481     deprecated="not deprecated">
   4482     <method name="values" return="com.google.inject.grapher.NodeId.NodeType[]"
   4483       abstract="false" native="false" synchronized="false"
   4484       static="true" final="false" visibility="public"
   4485       deprecated="not deprecated">
   4486     </method>
   4487     <method name="valueOf" return="com.google.inject.grapher.NodeId.NodeType"
   4488       abstract="false" native="false" synchronized="false"
   4489       static="true" final="false" visibility="public"
   4490       deprecated="not deprecated">
   4491       <param name="name" type="java.lang.String"/>
   4492     </method>
   4493     <doc>
   4494     <![CDATA[Type of node.]]>
   4495     </doc>
   4496   </class>
   4497   <!-- end class com.google.inject.grapher.NodeId.NodeType -->
   4498   <!-- start interface com.google.inject.grapher.RootKeySetCreator -->
   4499   <interface name="RootKeySetCreator"    abstract="true"
   4500     static="false" final="false" visibility="public"
   4501     deprecated="not deprecated">
   4502     <method name="getRootKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4503       abstract="true" native="false" synchronized="false"
   4504       static="false" final="false" visibility="public"
   4505       deprecated="not deprecated">
   4506       <param name="injector" type="com.google.inject.Injector"/>
   4507       <doc>
   4508       <![CDATA[Returns the set of starting keys to graph.]]>
   4509       </doc>
   4510     </method>
   4511     <doc>
   4512     <![CDATA[Creator of the default starting set of keys to graph. These keys and their transitive
   4513  dependencies will be graphed.
   4514 
   4515  @author bojand (a] google.com (Bojan Djordjevic)]]>
   4516     </doc>
   4517   </interface>
   4518   <!-- end interface com.google.inject.grapher.RootKeySetCreator -->
   4519   <!-- start class com.google.inject.grapher.ShortNameFactory -->
   4520   <class name="ShortNameFactory" extends="java.lang.Object"
   4521     abstract="false"
   4522     static="false" final="false" visibility="public"
   4523     deprecated="not deprecated">
   4524     <implements name="com.google.inject.grapher.NameFactory"/>
   4525     <constructor name="ShortNameFactory"
   4526       static="false" final="false" visibility="public"
   4527       deprecated="not deprecated">
   4528     </constructor>
   4529     <method name="getMemberName" return="java.lang.String"
   4530       abstract="false" native="false" synchronized="false"
   4531       static="false" final="false" visibility="public"
   4532       deprecated="not deprecated">
   4533       <param name="member" type="java.lang.reflect.Member"/>
   4534     </method>
   4535     <method name="getAnnotationName" return="java.lang.String"
   4536       abstract="false" native="false" synchronized="false"
   4537       static="false" final="false" visibility="public"
   4538       deprecated="not deprecated">
   4539       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4540     </method>
   4541     <method name="getClassName" return="java.lang.String"
   4542       abstract="false" native="false" synchronized="false"
   4543       static="false" final="false" visibility="public"
   4544       deprecated="not deprecated">
   4545       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4546     </method>
   4547     <method name="getInstanceName" return="java.lang.String"
   4548       abstract="false" native="false" synchronized="false"
   4549       static="false" final="false" visibility="public"
   4550       deprecated="not deprecated">
   4551       <param name="instance" type="java.lang.Object"/>
   4552     </method>
   4553     <method name="getSourceName" return="java.lang.String"
   4554       abstract="false" native="false" synchronized="false"
   4555       static="false" final="false" visibility="public"
   4556       deprecated="not deprecated">
   4557       <param name="source" type="java.lang.Object"/>
   4558       <doc>
   4559       <![CDATA[Returns a name for a Guice "source" object. This will typically be either
   4560  a {@link StackTraceElement} for when the binding is made to the instance,
   4561  or a {@link Method} when a provider method is used.]]>
   4562       </doc>
   4563     </method>
   4564     <method name="getFileString" return="java.lang.String"
   4565       abstract="false" native="false" synchronized="false"
   4566       static="false" final="false" visibility="protected"
   4567       deprecated="not deprecated">
   4568       <param name="stackTraceElement" type="java.lang.StackTraceElement"/>
   4569     </method>
   4570     <method name="getMethodString" return="java.lang.String"
   4571       abstract="false" native="false" synchronized="false"
   4572       static="false" final="false" visibility="protected"
   4573       deprecated="not deprecated">
   4574       <param name="method" type="java.lang.reflect.Method"/>
   4575     </method>
   4576     <doc>
   4577     <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various
   4578  {@link Object#toString()}s and strips package names out of them so that
   4579  they'll fit on the graph.
   4580 
   4581  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4582     </doc>
   4583   </class>
   4584   <!-- end class com.google.inject.grapher.ShortNameFactory -->
   4585   <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor -->
   4586   <class name="TransitiveDependencyVisitor" extends="com.google.inject.spi.DefaultBindingTargetVisitor&lt;java.lang.Object, java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;&gt;"
   4587     abstract="false"
   4588     static="false" final="false" visibility="public"
   4589     deprecated="not deprecated">
   4590     <constructor name="TransitiveDependencyVisitor"
   4591       static="false" final="false" visibility="public"
   4592       deprecated="not deprecated">
   4593     </constructor>
   4594     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4595       abstract="false" native="false" synchronized="false"
   4596       static="false" final="false" visibility="public"
   4597       deprecated="not deprecated">
   4598       <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
   4599     </method>
   4600     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4601       abstract="false" native="false" synchronized="false"
   4602       static="false" final="false" visibility="public"
   4603       deprecated="not deprecated">
   4604       <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
   4605     </method>
   4606     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4607       abstract="false" native="false" synchronized="false"
   4608       static="false" final="false" visibility="public"
   4609       deprecated="not deprecated">
   4610       <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
   4611     </method>
   4612     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4613       abstract="false" native="false" synchronized="false"
   4614       static="false" final="false" visibility="public"
   4615       deprecated="not deprecated">
   4616       <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;?&gt;"/>
   4617     </method>
   4618     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4619       abstract="false" native="false" synchronized="false"
   4620       static="false" final="false" visibility="public"
   4621       deprecated="not deprecated">
   4622       <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
   4623     </method>
   4624     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4625       abstract="false" native="false" synchronized="false"
   4626       static="false" final="false" visibility="public"
   4627       deprecated="not deprecated">
   4628       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
   4629     </method>
   4630     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4631       abstract="false" native="false" synchronized="false"
   4632       static="false" final="false" visibility="public"
   4633       deprecated="not deprecated">
   4634       <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
   4635     </method>
   4636     <method name="visitOther" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4637       abstract="false" native="false" synchronized="false"
   4638       static="false" final="false" visibility="public"
   4639       deprecated="not deprecated">
   4640       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   4641     </method>
   4642     <doc>
   4643     <![CDATA[{@link BindingTargetVisitor} that returns a {@link Collection} of the
   4644  {@link Key}s of each {@link Binding}'s dependencies. Used by
   4645  {@link InjectorGrapher} to walk the dependency graph from a starting set of
   4646  {@link Binding}s.
   4647 
   4648  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4649     </doc>
   4650   </class>
   4651   <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor -->
   4652 </package>
   4653 <package name="com.google.inject.grapher.graphviz">
   4654   <!-- start class com.google.inject.grapher.graphviz.ArrowType -->
   4655   <class name="ArrowType" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4656     abstract="false"
   4657     static="false" final="true" visibility="public"
   4658     deprecated="not deprecated">
   4659     <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]"
   4660       abstract="false" native="false" synchronized="false"
   4661       static="true" final="false" visibility="public"
   4662       deprecated="not deprecated">
   4663     </method>
   4664     <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType"
   4665       abstract="false" native="false" synchronized="false"
   4666       static="true" final="false" visibility="public"
   4667       deprecated="not deprecated">
   4668       <param name="name" type="java.lang.String"/>
   4669     </method>
   4670     <method name="toString" return="java.lang.String"
   4671       abstract="false" native="false" synchronized="false"
   4672       static="false" final="false" visibility="public"
   4673       deprecated="not deprecated">
   4674     </method>
   4675     <doc>
   4676     <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by
   4677  concatenation to make double arrows and such.
   4678  <p>
   4679  See: http://www.graphviz.org/doc/info/arrows.html
   4680 
   4681  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4682     </doc>
   4683   </class>
   4684   <!-- end class com.google.inject.grapher.graphviz.ArrowType -->
   4685   <!-- start class com.google.inject.grapher.graphviz.CompassPoint -->
   4686   <class name="CompassPoint" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.CompassPoint&gt;"
   4687     abstract="false"
   4688     static="false" final="true" visibility="public"
   4689     deprecated="not deprecated">
   4690     <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]"
   4691       abstract="false" native="false" synchronized="false"
   4692       static="true" final="false" visibility="public"
   4693       deprecated="not deprecated">
   4694     </method>
   4695     <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint"
   4696       abstract="false" native="false" synchronized="false"
   4697       static="true" final="false" visibility="public"
   4698       deprecated="not deprecated">
   4699       <param name="name" type="java.lang.String"/>
   4700     </method>
   4701     <method name="toString" return="java.lang.String"
   4702       abstract="false" native="false" synchronized="false"
   4703       static="false" final="false" visibility="public"
   4704       deprecated="not deprecated">
   4705     </method>
   4706     <doc>
   4707     <![CDATA[Enum for the "compass point" values used to control where edge
   4708  end points appear on the graph.
   4709  <p>
   4710  See: http://www.graphviz.org/doc/info/attrs.html#k:portPos
   4711 
   4712  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4713     </doc>
   4714   </class>
   4715   <!-- end class com.google.inject.grapher.graphviz.CompassPoint -->
   4716   <!-- start class com.google.inject.grapher.graphviz.EdgeStyle -->
   4717   <class name="EdgeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.EdgeStyle&gt;"
   4718     abstract="false"
   4719     static="false" final="true" visibility="public"
   4720     deprecated="not deprecated">
   4721     <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]"
   4722       abstract="false" native="false" synchronized="false"
   4723       static="true" final="false" visibility="public"
   4724       deprecated="not deprecated">
   4725     </method>
   4726     <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle"
   4727       abstract="false" native="false" synchronized="false"
   4728       static="true" final="false" visibility="public"
   4729       deprecated="not deprecated">
   4730       <param name="name" type="java.lang.String"/>
   4731     </method>
   4732     <method name="toString" return="java.lang.String"
   4733       abstract="false" native="false" synchronized="false"
   4734       static="false" final="false" visibility="public"
   4735       deprecated="not deprecated">
   4736     </method>
   4737     <doc>
   4738     <![CDATA[Styles for edges.
   4739  <p>
   4740  See: http://www.graphviz.org/doc/info/attrs.html#k:style
   4741 
   4742  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4743     </doc>
   4744   </class>
   4745   <!-- end class com.google.inject.grapher.graphviz.EdgeStyle -->
   4746   <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge -->
   4747   <class name="GraphvizEdge" extends="java.lang.Object"
   4748     abstract="false"
   4749     static="false" final="false" visibility="public"
   4750     deprecated="not deprecated">
   4751     <constructor name="GraphvizEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
   4752       static="false" final="false" visibility="public"
   4753       deprecated="not deprecated">
   4754     </constructor>
   4755     <method name="getHeadNodeId" return="com.google.inject.grapher.NodeId"
   4756       abstract="false" native="false" synchronized="false"
   4757       static="false" final="false" visibility="public"
   4758       deprecated="not deprecated">
   4759     </method>
   4760     <method name="getHeadPortId" return="java.lang.String"
   4761       abstract="false" native="false" synchronized="false"
   4762       static="false" final="false" visibility="public"
   4763       deprecated="not deprecated">
   4764     </method>
   4765     <method name="setHeadPortId"
   4766       abstract="false" native="false" synchronized="false"
   4767       static="false" final="false" visibility="public"
   4768       deprecated="not deprecated">
   4769       <param name="headPortId" type="java.lang.String"/>
   4770     </method>
   4771     <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
   4772       abstract="false" native="false" synchronized="false"
   4773       static="false" final="false" visibility="public"
   4774       deprecated="not deprecated">
   4775     </method>
   4776     <method name="setHeadCompassPoint"
   4777       abstract="false" native="false" synchronized="false"
   4778       static="false" final="false" visibility="public"
   4779       deprecated="not deprecated">
   4780       <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   4781     </method>
   4782     <method name="getArrowHead" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4783       abstract="false" native="false" synchronized="false"
   4784       static="false" final="false" visibility="public"
   4785       deprecated="not deprecated">
   4786     </method>
   4787     <method name="setArrowHead"
   4788       abstract="false" native="false" synchronized="false"
   4789       static="false" final="false" visibility="public"
   4790       deprecated="not deprecated">
   4791       <param name="arrowHead" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   4792     </method>
   4793     <method name="getTailNodeId" return="com.google.inject.grapher.NodeId"
   4794       abstract="false" native="false" synchronized="false"
   4795       static="false" final="false" visibility="public"
   4796       deprecated="not deprecated">
   4797     </method>
   4798     <method name="getTailPortId" return="java.lang.String"
   4799       abstract="false" native="false" synchronized="false"
   4800       static="false" final="false" visibility="public"
   4801       deprecated="not deprecated">
   4802     </method>
   4803     <method name="setTailPortId"
   4804       abstract="false" native="false" synchronized="false"
   4805       static="false" final="false" visibility="public"
   4806       deprecated="not deprecated">
   4807       <param name="tailPortId" type="java.lang.String"/>
   4808     </method>
   4809     <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
   4810       abstract="false" native="false" synchronized="false"
   4811       static="false" final="false" visibility="public"
   4812       deprecated="not deprecated">
   4813     </method>
   4814     <method name="setTailCompassPoint"
   4815       abstract="false" native="false" synchronized="false"
   4816       static="false" final="false" visibility="public"
   4817       deprecated="not deprecated">
   4818       <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   4819     </method>
   4820     <method name="getArrowTail" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4821       abstract="false" native="false" synchronized="false"
   4822       static="false" final="false" visibility="public"
   4823       deprecated="not deprecated">
   4824     </method>
   4825     <method name="setArrowTail"
   4826       abstract="false" native="false" synchronized="false"
   4827       static="false" final="false" visibility="public"
   4828       deprecated="not deprecated">
   4829       <param name="arrowTail" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   4830     </method>
   4831     <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle"
   4832       abstract="false" native="false" synchronized="false"
   4833       static="false" final="false" visibility="public"
   4834       deprecated="not deprecated">
   4835     </method>
   4836     <method name="setStyle"
   4837       abstract="false" native="false" synchronized="false"
   4838       static="false" final="false" visibility="public"
   4839       deprecated="not deprecated">
   4840       <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/>
   4841     </method>
   4842     <doc>
   4843     <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're
   4844  interested in drawing.
   4845 
   4846  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4847     </doc>
   4848   </class>
   4849   <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge -->
   4850   <!-- start class com.google.inject.grapher.graphviz.GraphvizGrapher -->
   4851   <class name="GraphvizGrapher" extends="com.google.inject.grapher.AbstractInjectorGrapher"
   4852     abstract="false"
   4853     static="false" final="false" visibility="public"
   4854     deprecated="not deprecated">
   4855     <method name="reset"
   4856       abstract="false" native="false" synchronized="false"
   4857       static="false" final="false" visibility="protected"
   4858       deprecated="not deprecated">
   4859     </method>
   4860     <method name="setOut"
   4861       abstract="false" native="false" synchronized="false"
   4862       static="false" final="false" visibility="public"
   4863       deprecated="not deprecated">
   4864       <param name="out" type="java.io.PrintWriter"/>
   4865     </method>
   4866     <method name="setRankdir"
   4867       abstract="false" native="false" synchronized="false"
   4868       static="false" final="false" visibility="public"
   4869       deprecated="not deprecated">
   4870       <param name="rankdir" type="java.lang.String"/>
   4871     </method>
   4872     <method name="postProcess"
   4873       abstract="false" native="false" synchronized="false"
   4874       static="false" final="false" visibility="protected"
   4875       deprecated="not deprecated">
   4876     </method>
   4877     <method name="getGraphAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   4878       abstract="false" native="false" synchronized="false"
   4879       static="false" final="false" visibility="protected"
   4880       deprecated="not deprecated">
   4881     </method>
   4882     <method name="start"
   4883       abstract="false" native="false" synchronized="false"
   4884       static="false" final="false" visibility="protected"
   4885       deprecated="not deprecated">
   4886     </method>
   4887     <method name="finish"
   4888       abstract="false" native="false" synchronized="false"
   4889       static="false" final="false" visibility="protected"
   4890       deprecated="not deprecated">
   4891     </method>
   4892     <method name="renderNode"
   4893       abstract="false" native="false" synchronized="false"
   4894       static="false" final="false" visibility="protected"
   4895       deprecated="not deprecated">
   4896       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   4897     </method>
   4898     <method name="getNodeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   4899       abstract="false" native="false" synchronized="false"
   4900       static="false" final="false" visibility="protected"
   4901       deprecated="not deprecated">
   4902       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   4903     </method>
   4904     <method name="getNodeLabel" return="java.lang.String"
   4905       abstract="false" native="false" synchronized="false"
   4906       static="false" final="false" visibility="protected"
   4907       deprecated="not deprecated">
   4908       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   4909       <doc>
   4910       <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a
   4911  table with a heading at the top and (in the case of
   4912  {@link ImplementationNode}s) rows for each of the member fields.]]>
   4913       </doc>
   4914     </method>
   4915     <method name="renderEdge"
   4916       abstract="false" native="false" synchronized="false"
   4917       static="false" final="false" visibility="protected"
   4918       deprecated="not deprecated">
   4919       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   4920     </method>
   4921     <method name="getEdgeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   4922       abstract="false" native="false" synchronized="false"
   4923       static="false" final="false" visibility="protected"
   4924       deprecated="not deprecated">
   4925       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   4926     </method>
   4927     <method name="getArrowString" return="java.lang.String"
   4928       abstract="false" native="false" synchronized="false"
   4929       static="false" final="false" visibility="protected"
   4930       deprecated="not deprecated">
   4931       <param name="arrows" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   4932       <doc>
   4933       <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that
   4934  represents combining them. With Graphviz, that just means concatenating
   4935  them.]]>
   4936       </doc>
   4937     </method>
   4938     <method name="getEdgeEndPoint" return="java.lang.String"
   4939       abstract="false" native="false" synchronized="false"
   4940       static="false" final="false" visibility="protected"
   4941       deprecated="not deprecated">
   4942       <param name="nodeId" type="java.lang.String"/>
   4943       <param name="portId" type="java.lang.String"/>
   4944       <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   4945     </method>
   4946     <method name="htmlEscape" return="java.lang.String"
   4947       abstract="false" native="false" synchronized="false"
   4948       static="false" final="false" visibility="protected"
   4949       deprecated="not deprecated">
   4950       <param name="str" type="java.lang.String"/>
   4951     </method>
   4952     <method name="htmlEscape" return="java.util.List&lt;java.lang.String&gt;"
   4953       abstract="false" native="false" synchronized="false"
   4954       static="false" final="false" visibility="protected"
   4955       deprecated="not deprecated">
   4956       <param name="elements" type="java.util.List&lt;java.lang.String&gt;"/>
   4957     </method>
   4958     <method name="newInterfaceNode"
   4959       abstract="false" native="false" synchronized="false"
   4960       static="false" final="false" visibility="protected"
   4961       deprecated="not deprecated">
   4962       <param name="node" type="com.google.inject.grapher.InterfaceNode"/>
   4963     </method>
   4964     <method name="newImplementationNode"
   4965       abstract="false" native="false" synchronized="false"
   4966       static="false" final="false" visibility="protected"
   4967       deprecated="not deprecated">
   4968       <param name="node" type="com.google.inject.grapher.ImplementationNode"/>
   4969     </method>
   4970     <method name="newInstanceNode"
   4971       abstract="false" native="false" synchronized="false"
   4972       static="false" final="false" visibility="protected"
   4973       deprecated="not deprecated">
   4974       <param name="node" type="com.google.inject.grapher.InstanceNode"/>
   4975     </method>
   4976     <method name="newDependencyEdge"
   4977       abstract="false" native="false" synchronized="false"
   4978       static="false" final="false" visibility="protected"
   4979       deprecated="not deprecated">
   4980       <param name="edge" type="com.google.inject.grapher.DependencyEdge"/>
   4981     </method>
   4982     <method name="newBindingEdge"
   4983       abstract="false" native="false" synchronized="false"
   4984       static="false" final="false" visibility="protected"
   4985       deprecated="not deprecated">
   4986       <param name="edge" type="com.google.inject.grapher.BindingEdge"/>
   4987     </method>
   4988     <doc>
   4989     <![CDATA[{@link InjectorGrapher} implementation that writes out a Graphviz DOT file of the graph.
   4990  Dependencies are bound in {@link GraphvizModule}.
   4991  <p>
   4992  Specify the {@link PrintWriter} to output to with {@link #setOut(PrintWriter)}.
   4993 
   4994  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4995     </doc>
   4996   </class>
   4997   <!-- end class com.google.inject.grapher.graphviz.GraphvizGrapher -->
   4998   <!-- start class com.google.inject.grapher.graphviz.GraphvizModule -->
   4999   <class name="GraphvizModule" extends="com.google.inject.AbstractModule"
   5000     abstract="false"
   5001     static="false" final="false" visibility="public"
   5002     deprecated="not deprecated">
   5003     <constructor name="GraphvizModule"
   5004       static="false" final="false" visibility="public"
   5005       deprecated="not deprecated">
   5006     </constructor>
   5007     <method name="configure"
   5008       abstract="false" native="false" synchronized="false"
   5009       static="false" final="false" visibility="protected"
   5010       deprecated="not deprecated">
   5011     </method>
   5012     <doc>
   5013     <![CDATA[Module that provides classes needed by {@link GraphvizGrapher}.
   5014 
   5015  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5016     </doc>
   5017   </class>
   5018   <!-- end class com.google.inject.grapher.graphviz.GraphvizModule -->
   5019   <!-- start class com.google.inject.grapher.graphviz.GraphvizNode -->
   5020   <class name="GraphvizNode" extends="java.lang.Object"
   5021     abstract="false"
   5022     static="false" final="false" visibility="public"
   5023     deprecated="not deprecated">
   5024     <constructor name="GraphvizNode" type="com.google.inject.grapher.NodeId"
   5025       static="false" final="false" visibility="public"
   5026       deprecated="not deprecated">
   5027     </constructor>
   5028     <method name="getNodeId" return="com.google.inject.grapher.NodeId"
   5029       abstract="false" native="false" synchronized="false"
   5030       static="false" final="false" visibility="public"
   5031       deprecated="not deprecated">
   5032     </method>
   5033     <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape"
   5034       abstract="false" native="false" synchronized="false"
   5035       static="false" final="false" visibility="public"
   5036       deprecated="not deprecated">
   5037     </method>
   5038     <method name="setShape"
   5039       abstract="false" native="false" synchronized="false"
   5040       static="false" final="false" visibility="public"
   5041       deprecated="not deprecated">
   5042       <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/>
   5043     </method>
   5044     <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle"
   5045       abstract="false" native="false" synchronized="false"
   5046       static="false" final="false" visibility="public"
   5047       deprecated="not deprecated">
   5048     </method>
   5049     <method name="setStyle"
   5050       abstract="false" native="false" synchronized="false"
   5051       static="false" final="false" visibility="public"
   5052       deprecated="not deprecated">
   5053       <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/>
   5054     </method>
   5055     <method name="getTitle" return="java.lang.String"
   5056       abstract="false" native="false" synchronized="false"
   5057       static="false" final="false" visibility="public"
   5058       deprecated="not deprecated">
   5059     </method>
   5060     <method name="setTitle"
   5061       abstract="false" native="false" synchronized="false"
   5062       static="false" final="false" visibility="public"
   5063       deprecated="not deprecated">
   5064       <param name="title" type="java.lang.String"/>
   5065     </method>
   5066     <method name="getSubtitles" return="java.util.List&lt;java.lang.String&gt;"
   5067       abstract="false" native="false" synchronized="false"
   5068       static="false" final="false" visibility="public"
   5069       deprecated="not deprecated">
   5070     </method>
   5071     <method name="addSubtitle"
   5072       abstract="false" native="false" synchronized="false"
   5073       static="false" final="false" visibility="public"
   5074       deprecated="not deprecated">
   5075       <param name="position" type="int"/>
   5076       <param name="subtitle" type="java.lang.String"/>
   5077     </method>
   5078     <method name="getHeaderTextColor" return="java.lang.String"
   5079       abstract="false" native="false" synchronized="false"
   5080       static="false" final="false" visibility="public"
   5081       deprecated="not deprecated">
   5082     </method>
   5083     <method name="setHeaderTextColor"
   5084       abstract="false" native="false" synchronized="false"
   5085       static="false" final="false" visibility="public"
   5086       deprecated="not deprecated">
   5087       <param name="headerTextColor" type="java.lang.String"/>
   5088     </method>
   5089     <method name="getHeaderBackgroundColor" return="java.lang.String"
   5090       abstract="false" native="false" synchronized="false"
   5091       static="false" final="false" visibility="public"
   5092       deprecated="not deprecated">
   5093     </method>
   5094     <method name="setHeaderBackgroundColor"
   5095       abstract="false" native="false" synchronized="false"
   5096       static="false" final="false" visibility="public"
   5097       deprecated="not deprecated">
   5098       <param name="headerBackgroundColor" type="java.lang.String"/>
   5099     </method>
   5100     <method name="addField"
   5101       abstract="false" native="false" synchronized="false"
   5102       static="false" final="false" visibility="public"
   5103       deprecated="not deprecated">
   5104       <param name="portId" type="java.lang.String"/>
   5105       <param name="title" type="java.lang.String"/>
   5106     </method>
   5107     <method name="getFields" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5108       abstract="false" native="false" synchronized="false"
   5109       static="false" final="false" visibility="public"
   5110       deprecated="not deprecated">
   5111     </method>
   5112     <method name="getIdentifier" return="java.lang.String"
   5113       abstract="false" native="false" synchronized="false"
   5114       static="false" final="false" visibility="public"
   5115       deprecated="not deprecated">
   5116     </method>
   5117     <method name="setIdentifier"
   5118       abstract="false" native="false" synchronized="false"
   5119       static="false" final="false" visibility="public"
   5120       deprecated="not deprecated">
   5121       <param name="identifier" type="java.lang.String"/>
   5122     </method>
   5123     <doc>
   5124     <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're
   5125  interested in drawing.
   5126 
   5127  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5128     </doc>
   5129   </class>
   5130   <!-- end class com.google.inject.grapher.graphviz.GraphvizNode -->
   5131   <!-- start class com.google.inject.grapher.graphviz.NodeShape -->
   5132   <class name="NodeShape" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeShape&gt;"
   5133     abstract="false"
   5134     static="false" final="true" visibility="public"
   5135     deprecated="not deprecated">
   5136     <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]"
   5137       abstract="false" native="false" synchronized="false"
   5138       static="true" final="false" visibility="public"
   5139       deprecated="not deprecated">
   5140     </method>
   5141     <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape"
   5142       abstract="false" native="false" synchronized="false"
   5143       static="true" final="false" visibility="public"
   5144       deprecated="not deprecated">
   5145       <param name="name" type="java.lang.String"/>
   5146     </method>
   5147     <method name="toString" return="java.lang.String"
   5148       abstract="false" native="false" synchronized="false"
   5149       static="false" final="false" visibility="public"
   5150       deprecated="not deprecated">
   5151     </method>
   5152     <doc>
   5153     <![CDATA[Enum for the shapes that are most interesting for Guice graphing.
   5154  <p>
   5155  See: http://www.graphviz.org/doc/info/shapes.html
   5156  
   5157  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5158     </doc>
   5159   </class>
   5160   <!-- end class com.google.inject.grapher.graphviz.NodeShape -->
   5161   <!-- start class com.google.inject.grapher.graphviz.NodeStyle -->
   5162   <class name="NodeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeStyle&gt;"
   5163     abstract="false"
   5164     static="false" final="true" visibility="public"
   5165     deprecated="not deprecated">
   5166     <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]"
   5167       abstract="false" native="false" synchronized="false"
   5168       static="true" final="false" visibility="public"
   5169       deprecated="not deprecated">
   5170     </method>
   5171     <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle"
   5172       abstract="false" native="false" synchronized="false"
   5173       static="true" final="false" visibility="public"
   5174       deprecated="not deprecated">
   5175       <param name="name" type="java.lang.String"/>
   5176     </method>
   5177     <method name="toString" return="java.lang.String"
   5178       abstract="false" native="false" synchronized="false"
   5179       static="false" final="false" visibility="public"
   5180       deprecated="not deprecated">
   5181     </method>
   5182     <doc>
   5183     <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options.
   5184  <p>
   5185  See: http://www.graphviz.org/doc/info/attrs.html#k:style
   5186 
   5187  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5188     </doc>
   5189   </class>
   5190   <!-- end class com.google.inject.grapher.graphviz.NodeStyle -->
   5191   <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory -->
   5192   <interface name="PortIdFactory"    abstract="true"
   5193     static="false" final="false" visibility="public"
   5194     deprecated="not deprecated">
   5195     <method name="getPortId" return="java.lang.String"
   5196       abstract="true" native="false" synchronized="false"
   5197       static="false" final="false" visibility="public"
   5198       deprecated="not deprecated">
   5199       <param name="member" type="java.lang.reflect.Member"/>
   5200     </method>
   5201     <doc>
   5202     <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the
   5203  rows in {@link ImplementationNode}-displaying {@link GraphvizNode}s.
   5204 
   5205  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5206     </doc>
   5207   </interface>
   5208   <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory -->
   5209   <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
   5210   <class name="PortIdFactoryImpl" extends="java.lang.Object"
   5211     abstract="false"
   5212     static="false" final="false" visibility="public"
   5213     deprecated="not deprecated">
   5214     <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/>
   5215     <constructor name="PortIdFactoryImpl"
   5216       static="false" final="false" visibility="public"
   5217       deprecated="not deprecated">
   5218     </constructor>
   5219     <method name="getPortId" return="java.lang.String"
   5220       abstract="false" native="false" synchronized="false"
   5221       static="false" final="false" visibility="public"
   5222       deprecated="not deprecated">
   5223       <param name="member" type="java.lang.reflect.Member"/>
   5224     </method>
   5225     <doc>
   5226     <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}.
   5227 
   5228  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5229     </doc>
   5230   </class>
   5231   <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
   5232 </package>
   5233 <package name="com.google.inject.jndi">
   5234   <!-- start class com.google.inject.jndi.JndiIntegration -->
   5235   <class name="JndiIntegration" extends="java.lang.Object"
   5236     abstract="false"
   5237     static="false" final="false" visibility="public"
   5238     deprecated="not deprecated">
   5239     <method name="fromJndi" return="com.google.inject.Provider&lt;T&gt;"
   5240       abstract="false" native="false" synchronized="false"
   5241       static="true" final="false" visibility="public"
   5242       deprecated="not deprecated">
   5243       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5244       <param name="name" type="java.lang.String"/>
   5245       <doc>
   5246       <![CDATA[Creates a provider which looks up objects in JNDI using the given name.
   5247  Example usage:
   5248 
   5249  <pre>
   5250  bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:..."));
   5251  </pre>]]>
   5252       </doc>
   5253     </method>
   5254     <doc>
   5255     <![CDATA[Integrates Guice with JNDI. Requires a binding to 
   5256  {@link javax.naming.Context}.
   5257 
   5258  @author crazybob (a] google.com (Bob Lee)]]>
   5259     </doc>
   5260   </class>
   5261   <!-- end class com.google.inject.jndi.JndiIntegration -->
   5262 </package>
   5263 <package name="com.google.inject.matcher">
   5264   <!-- start class com.google.inject.matcher.AbstractMatcher -->
   5265   <class name="AbstractMatcher" extends="java.lang.Object"
   5266     abstract="true"
   5267     static="false" final="false" visibility="public"
   5268     deprecated="not deprecated">
   5269     <implements name="com.google.inject.matcher.Matcher&lt;T&gt;"/>
   5270     <constructor name="AbstractMatcher"
   5271       static="false" final="false" visibility="public"
   5272       deprecated="not deprecated">
   5273     </constructor>
   5274     <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5275       abstract="false" native="false" synchronized="false"
   5276       static="false" final="false" visibility="public"
   5277       deprecated="not deprecated">
   5278       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5279     </method>
   5280     <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5281       abstract="false" native="false" synchronized="false"
   5282       static="false" final="false" visibility="public"
   5283       deprecated="not deprecated">
   5284       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5285     </method>
   5286     <doc>
   5287     <![CDATA[Implements {@code and()} and {@code or()}.
   5288 
   5289  @author crazybob (a] google.com (Bob Lee)]]>
   5290     </doc>
   5291   </class>
   5292   <!-- end class com.google.inject.matcher.AbstractMatcher -->
   5293   <!-- start interface com.google.inject.matcher.Matcher -->
   5294   <interface name="Matcher"    abstract="true"
   5295     static="false" final="false" visibility="public"
   5296     deprecated="not deprecated">
   5297     <method name="matches" return="boolean"
   5298       abstract="true" native="false" synchronized="false"
   5299       static="false" final="false" visibility="public"
   5300       deprecated="not deprecated">
   5301       <param name="t" type="T"/>
   5302       <doc>
   5303       <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]>
   5304       </doc>
   5305     </method>
   5306     <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5307       abstract="true" native="false" synchronized="false"
   5308       static="false" final="false" visibility="public"
   5309       deprecated="not deprecated">
   5310       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5311       <doc>
   5312       <![CDATA[Returns a new matcher which returns {@code true} if both this and the
   5313  given matcher return {@code true}.]]>
   5314       </doc>
   5315     </method>
   5316     <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5317       abstract="true" native="false" synchronized="false"
   5318       static="false" final="false" visibility="public"
   5319       deprecated="not deprecated">
   5320       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5321       <doc>
   5322       <![CDATA[Returns a new matcher which returns {@code true} if either this or the
   5323  given matcher return {@code true}.]]>
   5324       </doc>
   5325     </method>
   5326     <doc>
   5327     <![CDATA[Returns {@code true} or {@code false} for a given input.
   5328 
   5329  @author crazybob (a] google.com (Bob Lee)]]>
   5330     </doc>
   5331   </interface>
   5332   <!-- end interface com.google.inject.matcher.Matcher -->
   5333   <!-- start class com.google.inject.matcher.Matchers -->
   5334   <class name="Matchers" extends="java.lang.Object"
   5335     abstract="false"
   5336     static="false" final="false" visibility="public"
   5337     deprecated="not deprecated">
   5338     <method name="any" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5339       abstract="false" native="false" synchronized="false"
   5340       static="true" final="false" visibility="public"
   5341       deprecated="not deprecated">
   5342       <doc>
   5343       <![CDATA[Returns a matcher which matches any input.]]>
   5344       </doc>
   5345     </method>
   5346     <method name="not" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5347       abstract="false" native="false" synchronized="false"
   5348       static="true" final="false" visibility="public"
   5349       deprecated="not deprecated">
   5350       <param name="p" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5351       <doc>
   5352       <![CDATA[Inverts the given matcher.]]>
   5353       </doc>
   5354     </method>
   5355     <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
   5356       abstract="false" native="false" synchronized="false"
   5357       static="true" final="false" visibility="public"
   5358       deprecated="not deprecated">
   5359       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5360       <doc>
   5361       <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
   5362  with a given annotation.]]>
   5363       </doc>
   5364     </method>
   5365     <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
   5366       abstract="false" native="false" synchronized="false"
   5367       static="true" final="false" visibility="public"
   5368       deprecated="not deprecated">
   5369       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5370       <doc>
   5371       <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
   5372  with a given annotation.]]>
   5373       </doc>
   5374     </method>
   5375     <method name="subclassesOf" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5376       abstract="false" native="false" synchronized="false"
   5377       static="true" final="false" visibility="public"
   5378       deprecated="not deprecated">
   5379       <param name="superclass" type="java.lang.Class&lt;?&gt;"/>
   5380       <doc>
   5381       <![CDATA[Returns a matcher which matches subclasses of the given type (as well as
   5382  the given type).]]>
   5383       </doc>
   5384     </method>
   5385     <method name="only" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5386       abstract="false" native="false" synchronized="false"
   5387       static="true" final="false" visibility="public"
   5388       deprecated="not deprecated">
   5389       <param name="value" type="java.lang.Object"/>
   5390       <doc>
   5391       <![CDATA[Returns a matcher which matches objects equal to the given object.]]>
   5392       </doc>
   5393     </method>
   5394     <method name="identicalTo" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5395       abstract="false" native="false" synchronized="false"
   5396       static="true" final="false" visibility="public"
   5397       deprecated="not deprecated">
   5398       <param name="value" type="java.lang.Object"/>
   5399       <doc>
   5400       <![CDATA[Returns a matcher which matches only the given object.]]>
   5401       </doc>
   5402     </method>
   5403     <method name="inPackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5404       abstract="false" native="false" synchronized="false"
   5405       static="true" final="false" visibility="public"
   5406       deprecated="not deprecated">
   5407       <param name="targetPackage" type="java.lang.Package"/>
   5408       <doc>
   5409       <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their
   5410  classloader, so classes with the same package name may not have the same package at runtime.]]>
   5411       </doc>
   5412     </method>
   5413     <method name="inSubpackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5414       abstract="false" native="false" synchronized="false"
   5415       static="true" final="false" visibility="public"
   5416       deprecated="not deprecated">
   5417       <param name="targetPackageName" type="java.lang.String"/>
   5418       <doc>
   5419       <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike
   5420  {@link #inPackage(Package) inPackage()}, this matches classes from any classloader.
   5421  
   5422  @since 2.0]]>
   5423       </doc>
   5424     </method>
   5425     <method name="returns" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.Method&gt;"
   5426       abstract="false" native="false" synchronized="false"
   5427       static="true" final="false" visibility="public"
   5428       deprecated="not deprecated">
   5429       <param name="returnType" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
   5430       <doc>
   5431       <![CDATA[Returns a matcher which matches methods with matching return types.]]>
   5432       </doc>
   5433     </method>
   5434     <doc>
   5435     <![CDATA[Matcher implementations. Supports matching classes and methods.
   5436 
   5437  @author crazybob (a] google.com (Bob Lee)]]>
   5438     </doc>
   5439   </class>
   5440   <!-- end class com.google.inject.matcher.Matchers -->
   5441 </package>
   5442 <package name="com.google.inject.multibindings">
   5443   <!-- start class com.google.inject.multibindings.MapBinder -->
   5444   <class name="MapBinder" extends="java.lang.Object"
   5445     abstract="true"
   5446     static="false" final="false" visibility="public"
   5447     deprecated="not deprecated">
   5448     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5449       abstract="false" native="false" synchronized="false"
   5450       static="true" final="false" visibility="public"
   5451       deprecated="not deprecated">
   5452       <param name="binder" type="com.google.inject.Binder"/>
   5453       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5454       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5455       <doc>
   5456       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5457  {@link Map} that is itself bound with no binding annotation.]]>
   5458       </doc>
   5459     </method>
   5460     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5461       abstract="false" native="false" synchronized="false"
   5462       static="true" final="false" visibility="public"
   5463       deprecated="not deprecated">
   5464       <param name="binder" type="com.google.inject.Binder"/>
   5465       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5466       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5467       <doc>
   5468       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5469  {@link Map} that is itself bound with no binding annotation.]]>
   5470       </doc>
   5471     </method>
   5472     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5473       abstract="false" native="false" synchronized="false"
   5474       static="true" final="false" visibility="public"
   5475       deprecated="not deprecated">
   5476       <param name="binder" type="com.google.inject.Binder"/>
   5477       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5478       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5479       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5480       <doc>
   5481       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5482  {@link Map} that is itself bound with {@code annotation}.]]>
   5483       </doc>
   5484     </method>
   5485     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5486       abstract="false" native="false" synchronized="false"
   5487       static="true" final="false" visibility="public"
   5488       deprecated="not deprecated">
   5489       <param name="binder" type="com.google.inject.Binder"/>
   5490       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5491       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5492       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5493       <doc>
   5494       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5495  {@link Map} that is itself bound with {@code annotation}.]]>
   5496       </doc>
   5497     </method>
   5498     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5499       abstract="false" native="false" synchronized="false"
   5500       static="true" final="false" visibility="public"
   5501       deprecated="not deprecated">
   5502       <param name="binder" type="com.google.inject.Binder"/>
   5503       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5504       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5505       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5506       <doc>
   5507       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5508  {@link Map} that is itself bound with {@code annotationType}.]]>
   5509       </doc>
   5510     </method>
   5511     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5512       abstract="false" native="false" synchronized="false"
   5513       static="true" final="false" visibility="public"
   5514       deprecated="not deprecated">
   5515       <param name="binder" type="com.google.inject.Binder"/>
   5516       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5517       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5518       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5519       <doc>
   5520       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5521  {@link Map} that is itself bound with {@code annotationType}.]]>
   5522       </doc>
   5523     </method>
   5524     <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5525       abstract="true" native="false" synchronized="false"
   5526       static="false" final="false" visibility="public"
   5527       deprecated="not deprecated">
   5528       <doc>
   5529       <![CDATA[Configures the {@code MapBinder} to handle duplicate entries.
   5530  <p>When multiple equal keys are bound, the value that gets included in the map is
   5531  arbitrary.
   5532  <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>}
   5533  maps that are normally bound, a {@code Map<K, Set<V>>} and
   5534  {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain
   5535  all values bound to each key.
   5536  <p>
   5537  When multiple modules contribute elements to the map, this configuration
   5538  option impacts all of them.
   5539 
   5540  @return this map binder
   5541  @since 3.0]]>
   5542       </doc>
   5543     </method>
   5544     <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;V&gt;"
   5545       abstract="true" native="false" synchronized="false"
   5546       static="false" final="false" visibility="public"
   5547       deprecated="not deprecated">
   5548       <param name="key" type="K"/>
   5549       <doc>
   5550       <![CDATA[Returns a binding builder used to add a new entry in the map. Each
   5551  key must be distinct (and non-null). Bound providers will be evaluated each
   5552  time the map is injected.
   5553 
   5554  <p>It is an error to call this method without also calling one of the
   5555  {@code to} methods on the returned binding builder.
   5556 
   5557  <p>Scoping elements independently is supported. Use the {@code in} method
   5558  to specify a binding scope.]]>
   5559       </doc>
   5560     </method>
   5561     <doc>
   5562     <![CDATA[An API to bind multiple map entries separately, only to later inject them as
   5563  a complete map. MapBinder is intended for use in your application's module:
   5564  <pre><code>
   5565  public class SnacksModule extends AbstractModule {
   5566    protected void configure() {
   5567      MapBinder&lt;String, Snack&gt; mapbinder
   5568          = MapBinder.newMapBinder(binder(), String.class, Snack.class);
   5569      mapbinder.addBinding("twix").toInstance(new Twix());
   5570      mapbinder.addBinding("snickers").toProvider(SnickersProvider.class);
   5571      mapbinder.addBinding("skittles").to(Skittles.class);
   5572    }
   5573  }</code></pre>
   5574 
   5575  <p>With this binding, a {@link Map}{@code <String, Snack>} can now be
   5576  injected:
   5577  <pre><code>
   5578  class SnackMachine {
   5579    {@literal @}Inject
   5580    public SnackMachine(Map&lt;String, Snack&gt; snacks) { ... }
   5581  }</code></pre>
   5582 
   5583  <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind
   5584  {@code Map<K, Provider<V>>} for lazy value provision:
   5585  <pre><code>
   5586  class SnackMachine {
   5587    {@literal @}Inject
   5588    public SnackMachine(Map&lt;String, Provider&lt;Snack&gt;&gt; snackProviders) { ... }
   5589  }</code></pre>
   5590 
   5591  <p>Contributing mapbindings from different modules is supported. For example,
   5592  it is okay to have both {@code CandyModule} and {@code ChipsModule} both
   5593  create their own {@code MapBinder<String, Snack>}, and to each contribute
   5594  bindings to the snacks map. When that map is injected, it will contain
   5595  entries from both modules.
   5596 
   5597  <p>The map's iteration order is consistent with the binding order. This is
   5598  convenient when multiple elements are contributed by the same module because
   5599  that module can order its bindings appropriately. Avoid relying on the
   5600  iteration order of elements contributed by different modules, since there is
   5601  no equivalent mechanism to order modules.
   5602 
   5603  <p>The map is unmodifiable.  Elements can only be added to the map by
   5604  configuring the MapBinder.  Elements can never be removed from the map.
   5605 
   5606  <p>Values are resolved at map injection time. If a value is bound to a
   5607  provider, that provider's get method will be called each time the map is
   5608  injected (unless the binding is also scoped, or a map of providers is injected).
   5609 
   5610  <p>Annotations are used to create different maps of the same key/value
   5611  type. Each distinct annotation gets its own independent map.
   5612 
   5613  <p><strong>Keys must be distinct.</strong> If the same key is bound more than
   5614  once, map injection will fail. However, use {@link #permitDuplicates()} in
   5615  order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and
   5616  {@code Map<K, Set<Provider<V>>} will be added.
   5617 
   5618  <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will
   5619  throw an unchecked exception.
   5620 
   5621  <p><strong>Values must be non-null to use map injection.</strong> If any
   5622  value is null, map injection will fail (although injecting a map of providers
   5623  will not).
   5624 
   5625  @author dpb (a] google.com (David P. Baker)]]>
   5626     </doc>
   5627   </class>
   5628   <!-- end class com.google.inject.multibindings.MapBinder -->
   5629   <!-- start interface com.google.inject.multibindings.MapBinderBinding -->
   5630   <interface name="MapBinderBinding"    abstract="true"
   5631     static="false" final="false" visibility="public"
   5632     deprecated="not deprecated">
   5633     <method name="getMapKey" return="com.google.inject.Key&lt;T&gt;"
   5634       abstract="true" native="false" synchronized="false"
   5635       static="false" final="false" visibility="public"
   5636       deprecated="not deprecated">
   5637       <doc>
   5638       <![CDATA[Returns the {@link Key} for the map.]]>
   5639       </doc>
   5640     </method>
   5641     <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5642       abstract="true" native="false" synchronized="false"
   5643       static="false" final="false" visibility="public"
   5644       deprecated="not deprecated">
   5645       <doc>
   5646       <![CDATA[Returns the TypeLiteral describing the keys of the map.
   5647  <p>
   5648  The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
   5649  returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
   5650  <code>TypeLiteral&lt;String></code>.]]>
   5651       </doc>
   5652     </method>
   5653     <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5654       abstract="true" native="false" synchronized="false"
   5655       static="false" final="false" visibility="public"
   5656       deprecated="not deprecated">
   5657       <doc>
   5658       <![CDATA[Returns the TypeLiteral describing the values of the map.
   5659  <p>
   5660  The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
   5661  returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
   5662  <code>TypeLiteral&lt;Snack></code>.]]>
   5663       </doc>
   5664     </method>
   5665     <method name="getEntries" return="java.util.List&lt;java.util.Map.Entry&lt;?, com.google.inject.Binding&lt;?&gt;&gt;&gt;"
   5666       abstract="true" native="false" synchronized="false"
   5667       static="false" final="false" visibility="public"
   5668       deprecated="not deprecated">
   5669       <doc>
   5670       <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding
   5671  to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list.
   5672  This is only supported on bindings returned from an injector. This will throw
   5673  {@link UnsupportedOperationException} if it is called on an element retrieved from
   5674  {@link Elements#getElements}.
   5675  <p>
   5676  The elements will always match the type Map's generic type. For example, if getMapKey returns a
   5677  key of <code>Map&lt;String, Snack></code>, then this will always return a list of type
   5678  <code>List&lt;Map.Entry&lt;String, Binding&lt;Snack>>></code>.]]>
   5679       </doc>
   5680     </method>
   5681     <method name="permitsDuplicates" return="boolean"
   5682       abstract="true" native="false" synchronized="false"
   5683       static="false" final="false" visibility="public"
   5684       deprecated="not deprecated">
   5685       <doc>
   5686       <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned
   5687  from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
   5688  MapBinderBinding retrieved from {@link Elements#getElements}.]]>
   5689       </doc>
   5690     </method>
   5691     <method name="containsElement" return="boolean"
   5692       abstract="true" native="false" synchronized="false"
   5693       static="false" final="false" visibility="public"
   5694       deprecated="not deprecated">
   5695       <param name="element" type="com.google.inject.spi.Element"/>
   5696       <doc>
   5697       <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the
   5698  given Element in order to support building and injecting the map. This will work for
   5699  MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is
   5700  only necessary if you are working with elements retrieved from modules (without an Injector),
   5701  otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options.
   5702  <p>
   5703  If you need to introspect the details of the map, such as the keys, values or if it permits
   5704  duplicates, it is necessary to pass the elements through an Injector and use
   5705  {@link #getEntries()} and {@link #permitsDuplicates()}.]]>
   5706       </doc>
   5707     </method>
   5708     <doc>
   5709     <![CDATA[A binding for a MapBinder.
   5710  <p>
   5711  Although MapBinders may be injected through a variety of generic types (Map&lt;K, V>, Map
   5712  &lt;K, Provider&lt;V>>, Map&lt;K, Set&lt;V>>, Map<K, Set&lt;
   5713  Provider&lt;V>>, and even Set&lt;Map.Entry&lt;K, Provider&lt;V>>), a
   5714  MapBinderBinding exists only on the Binding associated with the Map&lt;K, V> key. Other
   5715  bindings can be validated to be derived from this MapBinderBinding using
   5716  {@link #containsElement(Element)}.
   5717  
   5718  @param <T> The fully qualified type of the map, including Map. For example:
   5719           <code>MapBinderBinding&lt;Map&lt;String, Snack>></code>
   5720  
   5721  @since 3.0
   5722  @author sameb (a] google.com (Sam Berlin)]]>
   5723     </doc>
   5724   </interface>
   5725   <!-- end interface com.google.inject.multibindings.MapBinderBinding -->
   5726   <!-- start class com.google.inject.multibindings.Multibinder -->
   5727   <class name="Multibinder" extends="java.lang.Object"
   5728     abstract="true"
   5729     static="false" final="false" visibility="public"
   5730     deprecated="not deprecated">
   5731     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5732       abstract="false" native="false" synchronized="false"
   5733       static="true" final="false" visibility="public"
   5734       deprecated="not deprecated">
   5735       <param name="binder" type="com.google.inject.Binder"/>
   5736       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5737       <doc>
   5738       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5739  itself bound with no binding annotation.]]>
   5740       </doc>
   5741     </method>
   5742     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5743       abstract="false" native="false" synchronized="false"
   5744       static="true" final="false" visibility="public"
   5745       deprecated="not deprecated">
   5746       <param name="binder" type="com.google.inject.Binder"/>
   5747       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5748       <doc>
   5749       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5750  itself bound with no binding annotation.]]>
   5751       </doc>
   5752     </method>
   5753     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5754       abstract="false" native="false" synchronized="false"
   5755       static="true" final="false" visibility="public"
   5756       deprecated="not deprecated">
   5757       <param name="binder" type="com.google.inject.Binder"/>
   5758       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5759       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5760       <doc>
   5761       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5762  itself bound with {@code annotation}.]]>
   5763       </doc>
   5764     </method>
   5765     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5766       abstract="false" native="false" synchronized="false"
   5767       static="true" final="false" visibility="public"
   5768       deprecated="not deprecated">
   5769       <param name="binder" type="com.google.inject.Binder"/>
   5770       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5771       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5772       <doc>
   5773       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5774  itself bound with {@code annotation}.]]>
   5775       </doc>
   5776     </method>
   5777     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5778       abstract="false" native="false" synchronized="false"
   5779       static="true" final="false" visibility="public"
   5780       deprecated="not deprecated">
   5781       <param name="binder" type="com.google.inject.Binder"/>
   5782       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5783       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5784       <doc>
   5785       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5786  itself bound with {@code annotationType}.]]>
   5787       </doc>
   5788     </method>
   5789     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5790       abstract="false" native="false" synchronized="false"
   5791       static="true" final="false" visibility="public"
   5792       deprecated="not deprecated">
   5793       <param name="binder" type="com.google.inject.Binder"/>
   5794       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5795       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5796       <doc>
   5797       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5798  itself bound with {@code annotationType}.]]>
   5799       </doc>
   5800     </method>
   5801     <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5802       abstract="true" native="false" synchronized="false"
   5803       static="false" final="false" visibility="public"
   5804       deprecated="not deprecated">
   5805       <doc>
   5806       <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are
   5807  bound, the one that gets included is arbitrary. When multiple modules contribute elements to
   5808  the set, this configuration option impacts all of them.
   5809 
   5810  @return this multibinder
   5811  @since 3.0]]>
   5812       </doc>
   5813     </method>
   5814     <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   5815       abstract="true" native="false" synchronized="false"
   5816       static="false" final="false" visibility="public"
   5817       deprecated="not deprecated">
   5818       <doc>
   5819       <![CDATA[Returns a binding builder used to add a new element in the set. Each
   5820  bound element must have a distinct value. Bound providers will be
   5821  evaluated each time the set is injected.
   5822 
   5823  <p>It is an error to call this method without also calling one of the
   5824  {@code to} methods on the returned binding builder.
   5825 
   5826  <p>Scoping elements independently is supported. Use the {@code in} method
   5827  to specify a binding scope.]]>
   5828       </doc>
   5829     </method>
   5830     <doc>
   5831     <![CDATA[An API to bind multiple values separately, only to later inject them as a
   5832  complete collection. Multibinder is intended for use in your application's
   5833  module:
   5834  <pre><code>
   5835  public class SnacksModule extends AbstractModule {
   5836    protected void configure() {
   5837      Multibinder&lt;Snack&gt; multibinder
   5838          = Multibinder.newSetBinder(binder(), Snack.class);
   5839      multibinder.addBinding().toInstance(new Twix());
   5840      multibinder.addBinding().toProvider(SnickersProvider.class);
   5841      multibinder.addBinding().to(Skittles.class);
   5842    }
   5843  }</code></pre>
   5844 
   5845  <p>With this binding, a {@link Set}{@code <Snack>} can now be injected:
   5846  <pre><code>
   5847  class SnackMachine {
   5848    {@literal @}Inject
   5849    public SnackMachine(Set&lt;Snack&gt; snacks) { ... }
   5850  }</code></pre>
   5851 
   5852  <p>Contributing multibindings from different modules is supported. For
   5853  example, it is okay for both {@code CandyModule} and {@code ChipsModule}
   5854  to create their own {@code Multibinder<Snack>}, and to each contribute
   5855  bindings to the set of snacks. When that set is injected, it will contain
   5856  elements from both modules.
   5857 
   5858  <p>The set's iteration order is consistent with the binding order. This is
   5859  convenient when multiple elements are contributed by the same module because
   5860  that module can order its bindings appropriately. Avoid relying on the
   5861  iteration order of elements contributed by different modules, since there is
   5862  no equivalent mechanism to order modules.
   5863 
   5864  <p>The set is unmodifiable.  Elements can only be added to the set by
   5865  configuring the multibinder.  Elements can never be removed from the set.
   5866 
   5867  <p>Elements are resolved at set injection time. If an element is bound to a
   5868  provider, that provider's get method will be called each time the set is
   5869  injected (unless the binding is also scoped).
   5870 
   5871  <p>Annotations are be used to create different sets of the same element
   5872  type. Each distinct annotation gets its own independent collection of
   5873  elements.
   5874 
   5875  <p><strong>Elements must be distinct.</strong> If multiple bound elements
   5876  have the same value, set injection will fail.
   5877 
   5878  <p><strong>Elements must be non-null.</strong> If any set element is null,
   5879  set injection will fail.
   5880 
   5881  @author jessewilson (a] google.com (Jesse Wilson)]]>
   5882     </doc>
   5883   </class>
   5884   <!-- end class com.google.inject.multibindings.Multibinder -->
   5885   <!-- start interface com.google.inject.multibindings.MultibinderBinding -->
   5886   <interface name="MultibinderBinding"    abstract="true"
   5887     static="false" final="false" visibility="public"
   5888     deprecated="not deprecated">
   5889     <method name="getSetKey" return="com.google.inject.Key&lt;T&gt;"
   5890       abstract="true" native="false" synchronized="false"
   5891       static="false" final="false" visibility="public"
   5892       deprecated="not deprecated">
   5893       <doc>
   5894       <![CDATA[Returns the key for the set.]]>
   5895       </doc>
   5896     </method>
   5897     <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5898       abstract="true" native="false" synchronized="false"
   5899       static="false" final="false" visibility="public"
   5900       deprecated="not deprecated">
   5901       <doc>
   5902       <![CDATA[Returns the TypeLiteral that describes the type of elements in the set.
   5903  <p>
   5904  The elements will always match the type Set's generic type. For example, if getSetKey returns a
   5905  key of <code>Set&lt;String></code>, then this will always return a
   5906  <code>TypeLiteral&lt;String></code>.]]>
   5907       </doc>
   5908     </method>
   5909     <method name="getElements" return="java.util.List&lt;com.google.inject.Binding&lt;?&gt;&gt;"
   5910       abstract="true" native="false" synchronized="false"
   5911       static="false" final="false" visibility="public"
   5912       deprecated="not deprecated">
   5913       <doc>
   5914       <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an
   5915  injector. This will throw {@link UnsupportedOperationException} if it is called on an element
   5916  retrieved from {@link Elements#getElements}.
   5917  <p>
   5918  The elements will always match the type Set's generic type. For example, if getSetKey returns a
   5919  key of <code>Set&lt;String></code>, then this will always return a list of type
   5920  <code>List&lt;Binding&lt;String>></code>.]]>
   5921       </doc>
   5922     </method>
   5923     <method name="permitsDuplicates" return="boolean"
   5924       abstract="true" native="false" synchronized="false"
   5925       static="false" final="false" visibility="public"
   5926       deprecated="not deprecated">
   5927       <doc>
   5928       <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned
   5929  from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
   5930  MultibinderBinding retrieved from {@link Elements#getElements}.]]>
   5931       </doc>
   5932     </method>
   5933     <method name="containsElement" return="boolean"
   5934       abstract="true" native="false" synchronized="false"
   5935       static="false" final="false" visibility="public"
   5936       deprecated="not deprecated">
   5937       <param name="element" type="com.google.inject.spi.Element"/>
   5938       <doc>
   5939       <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that
   5940  derive the elements of the set and other bindings that Multibinder uses internally. This will
   5941  work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}.
   5942  Usually this is only necessary if you are working with elements retrieved from modules (without
   5943  an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options.
   5944  <p>
   5945  If you need to introspect the details of the set, such as the values or if it permits
   5946  duplicates, it is necessary to pass the elements through an Injector and use
   5947  {@link #getElements()} and {@link #permitsDuplicates()}.]]>
   5948       </doc>
   5949     </method>
   5950     <doc>
   5951     <![CDATA[A binding for a Multibinder.
   5952  
   5953  @param <T> The fully qualified type of the set, including Set. For example:
   5954           <code>MultibinderBinding&lt;Set&lt;Boolean>></code>
   5955  
   5956  @since 3.0
   5957  @author sameb (a] google.com (Sam Berlin)]]>
   5958     </doc>
   5959   </interface>
   5960   <!-- end interface com.google.inject.multibindings.MultibinderBinding -->
   5961   <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
   5962   <interface name="MultibindingsTargetVisitor"    abstract="true"
   5963     static="false" final="false" visibility="public"
   5964     deprecated="not deprecated">
   5965     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   5966     <method name="visit" return="V"
   5967       abstract="true" native="false" synchronized="false"
   5968       static="false" final="false" visibility="public"
   5969       deprecated="not deprecated">
   5970       <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding&lt;? extends T&gt;"/>
   5971       <doc>
   5972       <![CDATA[Visits a binding created through {@link Multibinder}.]]>
   5973       </doc>
   5974     </method>
   5975     <method name="visit" return="V"
   5976       abstract="true" native="false" synchronized="false"
   5977       static="false" final="false" visibility="public"
   5978       deprecated="not deprecated">
   5979       <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding&lt;? extends T&gt;"/>
   5980       <doc>
   5981       <![CDATA[Visits a binding created through {@link MapBinder}.]]>
   5982       </doc>
   5983     </method>
   5984     <doc>
   5985     <![CDATA[A visitor for the multibinder extension.
   5986  <p>
   5987  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   5988  {@link Multibinder} or {@link MapBinder} will be visited through this interface.
   5989  
   5990  @since 3.0
   5991  @author sameb (a] google.com (Sam Berlin)]]>
   5992     </doc>
   5993   </interface>
   5994   <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
   5995 </package>
   5996 <package name="com.google.inject.name">
   5997   <!-- start class com.google.inject.name.Named -->
   5998   <class name="Named"    abstract="true"
   5999     static="false" final="false" visibility="public"
   6000     deprecated="not deprecated">
   6001     <implements name="java.lang.annotation.Annotation"/>
   6002     <doc>
   6003     <![CDATA[Annotates named things.
   6004 
   6005  @author crazybob (a] google.com (Bob Lee)]]>
   6006     </doc>
   6007   </class>
   6008   <!-- end class com.google.inject.name.Named -->
   6009   <!-- start class com.google.inject.name.Names -->
   6010   <class name="Names" extends="java.lang.Object"
   6011     abstract="false"
   6012     static="false" final="false" visibility="public"
   6013     deprecated="not deprecated">
   6014     <method name="named" return="com.google.inject.name.Named"
   6015       abstract="false" native="false" synchronized="false"
   6016       static="true" final="false" visibility="public"
   6017       deprecated="not deprecated">
   6018       <param name="name" type="java.lang.String"/>
   6019       <doc>
   6020       <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]>
   6021       </doc>
   6022     </method>
   6023     <method name="bindProperties"
   6024       abstract="false" native="false" synchronized="false"
   6025       static="true" final="false" visibility="public"
   6026       deprecated="not deprecated">
   6027       <param name="binder" type="com.google.inject.Binder"/>
   6028       <param name="properties" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6029       <doc>
   6030       <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in
   6031  {@code properties}.]]>
   6032       </doc>
   6033     </method>
   6034     <method name="bindProperties"
   6035       abstract="false" native="false" synchronized="false"
   6036       static="true" final="false" visibility="public"
   6037       deprecated="not deprecated">
   6038       <param name="binder" type="com.google.inject.Binder"/>
   6039       <param name="properties" type="java.util.Properties"/>
   6040       <doc>
   6041       <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This
   6042  method binds all properties including those inherited from 
   6043  {@link Properties#defaults defaults}.]]>
   6044       </doc>
   6045     </method>
   6046     <doc>
   6047     <![CDATA[Utility methods for use with {@code @}{@link Named}.
   6048 
   6049  @author crazybob (a] google.com (Bob Lee)]]>
   6050     </doc>
   6051   </class>
   6052   <!-- end class com.google.inject.name.Names -->
   6053 </package>
   6054 <package name="com.google.inject.persist">
   6055   <!-- start class com.google.inject.persist.PersistFilter -->
   6056   <class name="PersistFilter" extends="java.lang.Object"
   6057     abstract="false"
   6058     static="false" final="true" visibility="public"
   6059     deprecated="not deprecated">
   6060     <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService"
   6061       static="false" final="false" visibility="public"
   6062       deprecated="not deprecated">
   6063     </constructor>
   6064     <method name="init"
   6065       abstract="false" native="false" synchronized="false"
   6066       static="false" final="false" visibility="public"
   6067       deprecated="not deprecated">
   6068       <param name="filterConfig" type="FilterConfig"/>
   6069       <exception name="ServletException" type="ServletException"/>
   6070     </method>
   6071     <method name="destroy"
   6072       abstract="false" native="false" synchronized="false"
   6073       static="false" final="false" visibility="public"
   6074       deprecated="not deprecated">
   6075     </method>
   6076     <method name="doFilter"
   6077       abstract="false" native="false" synchronized="false"
   6078       static="false" final="false" visibility="public"
   6079       deprecated="not deprecated">
   6080       <param name="servletRequest" type="ServletRequest"/>
   6081       <param name="servletResponse" type="ServletResponse"/>
   6082       <param name="filterChain" type="FilterChain"/>
   6083       <exception name="IOException" type="java.io.IOException"/>
   6084       <exception name="ServletException" type="ServletException"/>
   6085     </method>
   6086     <doc>
   6087     <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have
   6088  guice-persist manage the lifecycle of active units of work.
   6089  The filter automatically starts and stops the relevant {@link PersistService}
   6090  upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and
   6091  {@link javax.servlet.Filter#destroy()} respectively.
   6092 
   6093  <p> To be able to use the open session-in-view pattern (i.e. work per request),
   6094  register this filter <b>once</b> in your Guice {@code ServletModule}. It is
   6095  important that you register this filter before any other filter.
   6096 
   6097  For multiple providers, you should register this filter once per provider, inside
   6098  a private module for each persist module installed (this must be the same private
   6099  module where the specific persist module is itself installed).
   6100 
   6101  <p>
   6102  Example configuration:
   6103  <pre>{@code
   6104   public class MyModule extends ServletModule {
   6105     public void configureServlets() {
   6106       filter("/*").through(PersistFilter.class);
   6107 
   6108       serve("/index.html").with(MyHtmlServlet.class);
   6109       // Etc.
   6110     }
   6111   }
   6112  }</pre>
   6113  <p>
   6114  This filter is thread safe and allows you to create injectors concurrently
   6115  and deploy multiple guice-persist modules within the same injector, or even
   6116  multiple injectors with persist modules withing the same JVM or web app.
   6117  <p>
   6118  This filter requires the Guice Servlet extension.
   6119 
   6120  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6121     </doc>
   6122   </class>
   6123   <!-- end class com.google.inject.persist.PersistFilter -->
   6124   <!-- start class com.google.inject.persist.PersistModule -->
   6125   <class name="PersistModule" extends="com.google.inject.AbstractModule"
   6126     abstract="true"
   6127     static="false" final="false" visibility="public"
   6128     deprecated="not deprecated">
   6129     <constructor name="PersistModule"
   6130       static="false" final="false" visibility="public"
   6131       deprecated="not deprecated">
   6132     </constructor>
   6133     <method name="configure"
   6134       abstract="false" native="false" synchronized="false"
   6135       static="false" final="true" visibility="protected"
   6136       deprecated="not deprecated">
   6137     </method>
   6138     <method name="configurePersistence"
   6139       abstract="true" native="false" synchronized="false"
   6140       static="false" final="false" visibility="protected"
   6141       deprecated="not deprecated">
   6142     </method>
   6143     <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
   6144       abstract="true" native="false" synchronized="false"
   6145       static="false" final="false" visibility="protected"
   6146       deprecated="not deprecated">
   6147     </method>
   6148     <doc>
   6149     <![CDATA[Install this module to add guice-persist library support for JPA persistence
   6150  providers.
   6151 
   6152  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6153     </doc>
   6154   </class>
   6155   <!-- end class com.google.inject.persist.PersistModule -->
   6156   <!-- start interface com.google.inject.persist.PersistService -->
   6157   <interface name="PersistService"    abstract="true"
   6158     static="false" final="false" visibility="public"
   6159     deprecated="not deprecated">
   6160     <method name="start"
   6161       abstract="true" native="false" synchronized="false"
   6162       static="false" final="false" visibility="public"
   6163       deprecated="not deprecated">
   6164       <doc>
   6165       <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for
   6166  use. For instance, with JPA, it creates an EntityManagerFactory and may
   6167  open connection pools. This method must be called by your code prior to
   6168  using any guice-persist or JPA artifacts. If already started,
   6169  calling this method does nothing, if already stopped, it also does
   6170  nothing.]]>
   6171       </doc>
   6172     </method>
   6173     <method name="stop"
   6174       abstract="true" native="false" synchronized="false"
   6175       static="false" final="false" visibility="public"
   6176       deprecated="not deprecated">
   6177       <doc>
   6178       <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it
   6179  closes the {@code EntityManagerFactory}. If already stopped, calling this
   6180  method does nothing. If not yet started, it also does nothing.]]>
   6181       </doc>
   6182     </method>
   6183     <doc>
   6184     <![CDATA[Persistence provider service. Use this to manage the overall
   6185  startup and stop of the persistence module(s).
   6186 
   6187  TODO(dhanji): Integrate with Service API when appropriate.
   6188 
   6189  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6190     </doc>
   6191   </interface>
   6192   <!-- end interface com.google.inject.persist.PersistService -->
   6193   <!-- start class com.google.inject.persist.Transactional -->
   6194   <class name="Transactional"    abstract="true"
   6195     static="false" final="false" visibility="public"
   6196     deprecated="not deprecated">
   6197     <implements name="java.lang.annotation.Annotation"/>
   6198     <doc>
   6199     <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality.
   6200  Consult the documentation on http://code.google.com/p/google-guice for detailed semantics.
   6201  Marking a method {@code @Transactional} will start a new transaction before the method
   6202  executes and commit it after the method returns.
   6203  <p>
   6204  If the method throws an exception, the transaction will be rolled back <em>unless</em>
   6205  you have specifically requested not to in the {@link #ignore()} clause.
   6206  <p>
   6207  Similarly, the set of exceptions that will trigger a rollback can be defined in
   6208  the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a
   6209  rollback.
   6210 
   6211  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6212     </doc>
   6213   </class>
   6214   <!-- end class com.google.inject.persist.Transactional -->
   6215   <!-- start interface com.google.inject.persist.UnitOfWork -->
   6216   <interface name="UnitOfWork"    abstract="true"
   6217     static="false" final="false" visibility="public"
   6218     deprecated="not deprecated">
   6219     <method name="begin"
   6220       abstract="true" native="false" synchronized="false"
   6221       static="false" final="false" visibility="public"
   6222       deprecated="not deprecated">
   6223       <doc>
   6224       <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there
   6225  is already one open, the invocation will do nothing. In this way, you can define arbitrary
   6226  units-of-work that nest within one another safely.
   6227 
   6228  Transaction semantics are not affected.]]>
   6229       </doc>
   6230     </method>
   6231     <method name="end"
   6232       abstract="true" native="false" synchronized="false"
   6233       static="false" final="false" visibility="public"
   6234       deprecated="not deprecated">
   6235       <doc>
   6236       <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data
   6237  layer to close. If there is no Unit of work open, then the call returns silently. You can
   6238  safely invoke end() repeatedly.
   6239  <p>
   6240  Transaction semantics are not affected.]]>
   6241       </doc>
   6242     </method>
   6243     <doc>
   6244     <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do
   6245  work in non-request, non-transactional threads. Or where more fine-grained control over the unit
   6246  of work is required. Starting and ending a unit of work directly corresponds to opening and
   6247  closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively.
   6248  <p> The
   6249  Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to
   6250  end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning
   6251  behind thread-locality of Unit of Work semantics).
   6252 
   6253  <ul>
   6254    <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li>
   6255    <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li>
   6256    <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a
   6257        background or bootstrap thread) is probably a good use case.</li>
   6258   </ul>
   6259 
   6260  @author Dhanji R. Prasanna (dhanji@gmail com)]]>
   6261     </doc>
   6262   </interface>
   6263   <!-- end interface com.google.inject.persist.UnitOfWork -->
   6264 </package>
   6265 <package name="com.google.inject.persist.finder">
   6266   <!-- start class com.google.inject.persist.finder.DynamicFinder -->
   6267   <class name="DynamicFinder" extends="java.lang.Object"
   6268     abstract="false"
   6269     static="false" final="true" visibility="public"
   6270     deprecated="not deprecated">
   6271     <constructor name="DynamicFinder" type="java.lang.reflect.Method"
   6272       static="false" final="false" visibility="public"
   6273       deprecated="not deprecated">
   6274     </constructor>
   6275     <method name="from" return="com.google.inject.persist.finder.DynamicFinder"
   6276       abstract="false" native="false" synchronized="false"
   6277       static="true" final="false" visibility="public"
   6278       deprecated="not deprecated">
   6279       <param name="method" type="java.lang.reflect.Method"/>
   6280       <doc>
   6281       <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null.
   6282 
   6283  @param method a method you want to test as a dynamic finder]]>
   6284       </doc>
   6285     </method>
   6286     <method name="metadata" return="com.google.inject.persist.finder.Finder"
   6287       abstract="false" native="false" synchronized="false"
   6288       static="false" final="false" visibility="public"
   6289       deprecated="not deprecated">
   6290     </method>
   6291     <doc>
   6292     <![CDATA[Utility that helps you introspect dynamic finder methods.
   6293 
   6294  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6295     </doc>
   6296   </class>
   6297   <!-- end class com.google.inject.persist.finder.DynamicFinder -->
   6298   <!-- start class com.google.inject.persist.finder.Finder -->
   6299   <class name="Finder"    abstract="true"
   6300     static="false" final="false" visibility="public"
   6301     deprecated="not deprecated">
   6302     <implements name="java.lang.annotation.Annotation"/>
   6303     <doc>
   6304     <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the
   6305  specified JPAQL query. Provides result auto-boxing and automatic parameter binding.
   6306 
   6307  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6308     </doc>
   6309   </class>
   6310   <!-- end class com.google.inject.persist.finder.Finder -->
   6311   <!-- start class com.google.inject.persist.finder.FirstResult -->
   6312   <class name="FirstResult"    abstract="true"
   6313     static="false" final="false" visibility="public"
   6314     deprecated="not deprecated">
   6315     <implements name="java.lang.annotation.Annotation"/>
   6316     <doc>
   6317     <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
   6318  the index of the first result in the result set you are interested in.
   6319  Useful for paging result sets. Complemented by {@link MaxResults}.
   6320 
   6321  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6322     </doc>
   6323   </class>
   6324   <!-- end class com.google.inject.persist.finder.FirstResult -->
   6325   <!-- start class com.google.inject.persist.finder.MaxResults -->
   6326   <class name="MaxResults"    abstract="true"
   6327     static="false" final="false" visibility="public"
   6328     deprecated="not deprecated">
   6329     <implements name="java.lang.annotation.Annotation"/>
   6330     <doc>
   6331     <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
   6332  the maximum size of returned result window. Usefule for paging result sets.
   6333  Complement of {@link FirstResult}.
   6334 
   6335  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6336     </doc>
   6337   </class>
   6338   <!-- end class com.google.inject.persist.finder.MaxResults -->
   6339 </package>
   6340 <package name="com.google.inject.persist.jpa">
   6341   <!-- start class com.google.inject.persist.jpa.JpaPersistModule -->
   6342   <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule"
   6343     abstract="false"
   6344     static="false" final="true" visibility="public"
   6345     deprecated="not deprecated">
   6346     <constructor name="JpaPersistModule" type="java.lang.String"
   6347       static="false" final="false" visibility="public"
   6348       deprecated="not deprecated">
   6349     </constructor>
   6350     <method name="configurePersistence"
   6351       abstract="false" native="false" synchronized="false"
   6352       static="false" final="false" visibility="protected"
   6353       deprecated="not deprecated">
   6354     </method>
   6355     <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
   6356       abstract="false" native="false" synchronized="false"
   6357       static="false" final="false" visibility="protected"
   6358       deprecated="not deprecated">
   6359     </method>
   6360     <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule"
   6361       abstract="false" native="false" synchronized="false"
   6362       static="false" final="false" visibility="public"
   6363       deprecated="not deprecated">
   6364       <param name="properties" type="java.util.Properties"/>
   6365       <doc>
   6366       <![CDATA[Configures the JPA persistence provider with a set of properties.
   6367  
   6368  @param properties A set of name value pairs that configure a JPA persistence
   6369  provider as per the specification.]]>
   6370       </doc>
   6371     </method>
   6372     <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule"
   6373       abstract="false" native="false" synchronized="false"
   6374       static="false" final="false" visibility="public"
   6375       deprecated="not deprecated">
   6376       <param name="iface" type="java.lang.Class&lt;T&gt;"/>
   6377       <doc>
   6378       <![CDATA[Adds an interface to this module to use as a dynamic finder.
   6379 
   6380  @param iface Any interface type whose methods are all dynamic finders.]]>
   6381       </doc>
   6382     </method>
   6383     <doc>
   6384     <![CDATA[JPA provider for guice persist.
   6385 
   6386  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6387     </doc>
   6388   </class>
   6389   <!-- end class com.google.inject.persist.jpa.JpaPersistModule -->
   6390 </package>
   6391 <package name="com.google.inject.servlet">
   6392   <!-- start class com.google.inject.servlet.GuiceFilter -->
   6393   <class name="GuiceFilter" extends="java.lang.Object"
   6394     abstract="false"
   6395     static="false" final="false" visibility="public"
   6396     deprecated="not deprecated">
   6397     <constructor name="GuiceFilter"
   6398       static="false" final="false" visibility="public"
   6399       deprecated="not deprecated">
   6400     </constructor>
   6401     <method name="doFilter"
   6402       abstract="false" native="false" synchronized="false"
   6403       static="false" final="false" visibility="public"
   6404       deprecated="not deprecated">
   6405       <param name="servletRequest" type="ServletRequest"/>
   6406       <param name="servletResponse" type="ServletResponse"/>
   6407       <param name="filterChain" type="FilterChain"/>
   6408       <exception name="IOException" type="java.io.IOException"/>
   6409       <exception name="ServletException" type="ServletException"/>
   6410     </method>
   6411     <method name="init"
   6412       abstract="false" native="false" synchronized="false"
   6413       static="false" final="false" visibility="public"
   6414       deprecated="not deprecated">
   6415       <param name="filterConfig" type="FilterConfig"/>
   6416       <exception name="ServletException" type="ServletException"/>
   6417     </method>
   6418     <method name="destroy"
   6419       abstract="false" native="false" synchronized="false"
   6420       static="false" final="false" visibility="public"
   6421       deprecated="not deprecated">
   6422     </method>
   6423     <doc>
   6424     <![CDATA[<p>
   6425  Apply this filter in web.xml above all other filters (typically), to all requests where you plan
   6426   to use servlet scopes. This is also needed in order to dispatch requests to injectable filters
   6427   and servlets:
   6428   <pre>
   6429   &lt;filter&gt;
   6430     &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
   6431     &lt;filter-class&gt;<b>com.google.inject.servlet.GuiceFilter</b>&lt;/filter-class&gt;
   6432   &lt;/filter&gt;
   6433 
   6434   &lt;filter-mapping&gt;
   6435     &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
   6436     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
   6437   &lt;/filter-mapping&gt;
   6438   </pre>
   6439 
   6440  This filter must appear before every filter that makes use of Guice injection or servlet
   6441  scopes functionality. Typically, you will only register this filter in web.xml and register
   6442  any other filters (and servlets) using a {@link ServletModule}.
   6443 
   6444  @author crazybob (a] google.com (Bob Lee)
   6445  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6446     </doc>
   6447   </class>
   6448   <!-- end class com.google.inject.servlet.GuiceFilter -->
   6449   <!-- start class com.google.inject.servlet.GuiceServletContextListener -->
   6450   <class name="GuiceServletContextListener" extends="java.lang.Object"
   6451     abstract="true"
   6452     static="false" final="false" visibility="public"
   6453     deprecated="not deprecated">
   6454     <constructor name="GuiceServletContextListener"
   6455       static="false" final="false" visibility="public"
   6456       deprecated="not deprecated">
   6457     </constructor>
   6458     <method name="contextInitialized"
   6459       abstract="false" native="false" synchronized="false"
   6460       static="false" final="false" visibility="public"
   6461       deprecated="not deprecated">
   6462       <param name="servletContextEvent" type="ServletContextEvent"/>
   6463     </method>
   6464     <method name="contextDestroyed"
   6465       abstract="false" native="false" synchronized="false"
   6466       static="false" final="false" visibility="public"
   6467       deprecated="not deprecated">
   6468       <param name="servletContextEvent" type="ServletContextEvent"/>
   6469     </method>
   6470     <method name="getInjector" return="com.google.inject.Injector"
   6471       abstract="true" native="false" synchronized="false"
   6472       static="false" final="false" visibility="protected"
   6473       deprecated="not deprecated">
   6474       <doc>
   6475       <![CDATA[Override this method to create (or otherwise obtain a reference to) your
   6476  injector.]]>
   6477       </doc>
   6478     </method>
   6479     <doc>
   6480     <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener}
   6481  class as a logical place to create and configure your injector. This will ensure the injector
   6482  is created when the web application is deployed.
   6483  
   6484  @author Kevin Bourrillion (kevinb (a] google.com)
   6485  @since 2.0]]>
   6486     </doc>
   6487   </class>
   6488   <!-- end class com.google.inject.servlet.GuiceServletContextListener -->
   6489   <!-- start interface com.google.inject.servlet.InstanceFilterBinding -->
   6490   <interface name="InstanceFilterBinding"    abstract="true"
   6491     static="false" final="false" visibility="public"
   6492     deprecated="not deprecated">
   6493     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   6494     <method name="getFilterInstance" return="Filter"
   6495       abstract="true" native="false" synchronized="false"
   6496       static="false" final="false" visibility="public"
   6497       deprecated="not deprecated">
   6498       <doc>
   6499       <![CDATA[Returns the filter instance that will be used.]]>
   6500       </doc>
   6501     </method>
   6502     <doc>
   6503     <![CDATA[A binding to a single instance of a filter. 
   6504 
   6505  @author sameb (a] google.com
   6506  @since 3.0]]>
   6507     </doc>
   6508   </interface>
   6509   <!-- end interface com.google.inject.servlet.InstanceFilterBinding -->
   6510   <!-- start interface com.google.inject.servlet.InstanceServletBinding -->
   6511   <interface name="InstanceServletBinding"    abstract="true"
   6512     static="false" final="false" visibility="public"
   6513     deprecated="not deprecated">
   6514     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   6515     <method name="getServletInstance" return="HttpServlet"
   6516       abstract="true" native="false" synchronized="false"
   6517       static="false" final="false" visibility="public"
   6518       deprecated="not deprecated">
   6519       <doc>
   6520       <![CDATA[Returns the servlet instance that will be used.]]>
   6521       </doc>
   6522     </method>
   6523     <doc>
   6524     <![CDATA[A binding to a single instance of a servlet. 
   6525 
   6526  @author sameb (a] google.com
   6527  @since 3.0]]>
   6528     </doc>
   6529   </interface>
   6530   <!-- end interface com.google.inject.servlet.InstanceServletBinding -->
   6531   <!-- start interface com.google.inject.servlet.LinkedFilterBinding -->
   6532   <interface name="LinkedFilterBinding"    abstract="true"
   6533     static="false" final="false" visibility="public"
   6534     deprecated="not deprecated">
   6535     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   6536     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends Filter&gt;"
   6537       abstract="true" native="false" synchronized="false"
   6538       static="false" final="false" visibility="public"
   6539       deprecated="not deprecated">
   6540       <doc>
   6541       <![CDATA[Returns the key used to lookup the filter instance.]]>
   6542       </doc>
   6543     </method>
   6544     <doc>
   6545     <![CDATA[A linked binding to a filter. 
   6546 
   6547  @author sameb (a] google.com
   6548  @since 3.0]]>
   6549     </doc>
   6550   </interface>
   6551   <!-- end interface com.google.inject.servlet.LinkedFilterBinding -->
   6552   <!-- start interface com.google.inject.servlet.LinkedServletBinding -->
   6553   <interface name="LinkedServletBinding"    abstract="true"
   6554     static="false" final="false" visibility="public"
   6555     deprecated="not deprecated">
   6556     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   6557     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends HttpServlet&gt;"
   6558       abstract="true" native="false" synchronized="false"
   6559       static="false" final="false" visibility="public"
   6560       deprecated="not deprecated">
   6561       <doc>
   6562       <![CDATA[Returns the key used to lookup the servlet instance.]]>
   6563       </doc>
   6564     </method>
   6565     <doc>
   6566     <![CDATA[A linked binding to a servlet. 
   6567 
   6568  @author sameb (a] google.com
   6569  @since 3.0]]>
   6570     </doc>
   6571   </interface>
   6572   <!-- end interface com.google.inject.servlet.LinkedServletBinding -->
   6573   <!-- start class com.google.inject.servlet.RequestParameters -->
   6574   <class name="RequestParameters"    abstract="true"
   6575     static="false" final="false" visibility="public"
   6576     deprecated="not deprecated">
   6577     <implements name="java.lang.annotation.Annotation"/>
   6578     <doc>
   6579     <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>}
   6580  when you want the HTTP request parameter map to be injected.
   6581 
   6582  @author crazybob (a] google.com (Bob Lee)]]>
   6583     </doc>
   6584   </class>
   6585   <!-- end class com.google.inject.servlet.RequestParameters -->
   6586   <!-- start class com.google.inject.servlet.RequestScoped -->
   6587   <class name="RequestScoped"    abstract="true"
   6588     static="false" final="false" visibility="public"
   6589     deprecated="not deprecated">
   6590     <implements name="java.lang.annotation.Annotation"/>
   6591     <doc>
   6592     <![CDATA[Apply this to implementation classes when you want one instance per request.
   6593 
   6594  @author crazybob (a] google.com (Bob Lee)]]>
   6595     </doc>
   6596   </class>
   6597   <!-- end class com.google.inject.servlet.RequestScoped -->
   6598   <!-- start class com.google.inject.servlet.ScopingException -->
   6599   <class name="ScopingException" extends="java.lang.IllegalStateException"
   6600     abstract="false"
   6601     static="false" final="true" visibility="public"
   6602     deprecated="not deprecated">
   6603     <constructor name="ScopingException" type="java.lang.String"
   6604       static="false" final="false" visibility="public"
   6605       deprecated="not deprecated">
   6606     </constructor>
   6607     <doc>
   6608     <![CDATA[Exception thrown when there was a failure entering request scope.
   6609 
   6610  @author Chris Nokleberg]]>
   6611     </doc>
   6612   </class>
   6613   <!-- end class com.google.inject.servlet.ScopingException -->
   6614   <!-- start class com.google.inject.servlet.ScopingOnly -->
   6615   <class name="ScopingOnly"    abstract="true"
   6616     static="false" final="false" visibility="public"
   6617     deprecated="not deprecated">
   6618     <implements name="java.lang.annotation.Annotation"/>
   6619     <doc>
   6620     <![CDATA[Annotates a {@link GuiceFilter} that provides scope functionality, but
   6621  doesn't dispatch to {@link ServletModule} bound servlets or filters.
   6622 
   6623  @author iqshum (a] google.com (Isaac Shum)]]>
   6624     </doc>
   6625   </class>
   6626   <!-- end class com.google.inject.servlet.ScopingOnly -->
   6627   <!-- start class com.google.inject.servlet.ServletModule -->
   6628   <class name="ServletModule" extends="com.google.inject.AbstractModule"
   6629     abstract="false"
   6630     static="false" final="false" visibility="public"
   6631     deprecated="not deprecated">
   6632     <constructor name="ServletModule"
   6633       static="false" final="false" visibility="public"
   6634       deprecated="not deprecated">
   6635     </constructor>
   6636     <method name="configure"
   6637       abstract="false" native="false" synchronized="false"
   6638       static="false" final="true" visibility="protected"
   6639       deprecated="not deprecated">
   6640     </method>
   6641     <method name="configureServlets"
   6642       abstract="false" native="false" synchronized="false"
   6643       static="false" final="false" visibility="protected"
   6644       deprecated="not deprecated">
   6645       <doc>
   6646       <![CDATA[<h3>Servlet Mapping EDSL</h3>
   6647 
   6648  <p> Part of the EDSL builder language for configuring servlets
   6649  and filters with guice-servlet. Think of this as an in-code replacement for web.xml.
   6650  Filters and servlets are configured here using simple java method calls. Here is a typical
   6651  example of registering a filter when creating your Guice injector:
   6652 
   6653  <pre>
   6654    Guice.createInjector(..., new ServletModule() {
   6655 
   6656      {@literal @}Override
   6657      protected void configureServlets() {
   6658        <b>serve("*.html").with(MyServlet.class)</b>
   6659      }
   6660    }
   6661  </pre>
   6662 
   6663  This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service
   6664  any web pages ending in {@code .html}. You can also use a path-style syntax to register
   6665  servlets:
   6666 
   6667  <pre>
   6668        <b>serve("/my/*").with(MyServlet.class)</b>
   6669  </pre>
   6670 
   6671  Every servlet (or filter) is required to be a singleton. If you cannot annotate the class
   6672  directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in
   6673  your module. Mapping a servlet that is bound under any other scope is an error.
   6674 
   6675  <p>
   6676  <h4>Dispatch Order</h4>
   6677  You are free to register as many servlets and filters as you like this way. They will
   6678  be compared and dispatched in the order in which the filter methods are called:
   6679 
   6680  <pre>
   6681 
   6682    Guice.createInjector(..., new ServletModule() {
   6683 
   6684      {@literal @}Override
   6685      protected void configureServlets() {
   6686        filter("/*").through(MyFilter.class);
   6687        filter("*.css").through(MyCssFilter.class);
   6688        filter("*.jpg").through(new MyJpgFilter());
   6689        // etc..
   6690 
   6691        serve("*.html").with(MyServlet.class);
   6692        serve("/my/*").with(MyServlet.class);
   6693        serve("*.jpg").with(new MyServlet());
   6694        // etc..
   6695       }
   6696     }
   6697  </pre>
   6698  This will traverse down the list of rules in lexical order. For example, a url
   6699   "{@code /my/file.js}" (after it runs through the matching filters) will first
   6700   be compared against the servlet mapping:
   6701  
   6702  <pre>
   6703        serve("*.html").with(MyServlet.class);
   6704  </pre>
   6705  And failing that, it will descend to the next servlet mapping:
   6706 
   6707  <pre>
   6708        serve("/my/*").with(MyServlet.class);
   6709  </pre>
   6710 
   6711  Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These
   6712  two mapping rules can also be written in more compact form using varargs syntax:
   6713 
   6714  <pre>
   6715        serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class);
   6716  </pre>
   6717  
   6718  This way you can map several URI patterns to the same servlet. A similar syntax is
   6719  also available for filter mappings.
   6720 
   6721  <p>
   6722  <h4>Regular Expressions</h4>
   6723  You can also map servlets (or filters) to URIs using regular expressions:
   6724  <pre>
   6725     <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b>
   6726  </pre>
   6727 
   6728  This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as:
   6729  <ul>
   6730  <li>http://www.google.com/ajax.html</li>
   6731  <li>http://www.google.com/content/ajax/index</li>
   6732  <li>http://www.google.com/it/is_totally_ajaxian</li>
   6733  </ul>
   6734 
   6735 
   6736  <h3>Initialization Parameters</h3>
   6737 
   6738  Servlets (and filters) allow you to pass in init params
   6739  using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to
   6740  Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter
   6741  name/value pairs. For example, to initialize {@code MyServlet} with two parameters
   6742  ({@code name="Dhanji", site="google.com"}) you could write:
   6743 
   6744  <pre>
   6745   Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;();
   6746   params.put("name", "Dhanji");
   6747   params.put("site", "google.com");
   6748 
   6749   ...
   6750       serve("/*").with(MyServlet.class, <b>params</b>)
   6751  </pre>
   6752 
   6753  <p>
   6754  <h3>Binding Keys</h3>
   6755 
   6756  You can also bind keys rather than classes. This lets you hide
   6757  implementations with package-local visbility and expose them using
   6758  only a Guice module and an annotation:
   6759 
   6760  <pre>
   6761   ...
   6762       filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>);
   6763  </pre>
   6764 
   6765  Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a
   6766  custom binding annotation. Elsewhere (in one of your own modules) you can bind this
   6767  filter's implementation:
   6768 
   6769  <pre>
   6770    bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class);
   6771  </pre>
   6772 
   6773  See {@link com.google.inject.Binder} for more information on binding syntax.
   6774 
   6775  <p>
   6776  <h3>Multiple Modules</h3>
   6777 
   6778  It is sometimes useful to capture servlet and filter mappings from multiple different
   6779  modules. This is essential if you want to package and offer drop-in Guice plugins that
   6780  provide servlet functionality.
   6781 
   6782  <p>
   6783  Guice Servlet allows you to register several instances of {@code ServletModule} to your
   6784  injector. The order in which these modules are installed determines the dispatch order
   6785  of filters and the precedence order of servlets. For example, if you had two servlet modules,
   6786  {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped
   6787  to the same URI pattern, {@code "/*"}:
   6788 
   6789  <p>
   6790  In {@code RpcModule}:
   6791  <pre>
   6792      filter("/*").through(RpcFilter.class);
   6793  </pre>
   6794 
   6795  In {@code WebServiceModule}:
   6796  <pre>
   6797      filter("/*").through(WebServiceFilter.class);
   6798  </pre>
   6799 
   6800  Then the order in which these filters are dispatched is determined by the order in which
   6801  the modules are installed:
   6802 
   6803  <pre>
   6804    <b>install(new WebServiceModule());</b>
   6805    install(new RpcModule());
   6806  </pre>
   6807 
   6808  In the case shown above {@code WebServiceFilter} will run first.
   6809  
   6810  @since 2.0]]>
   6811       </doc>
   6812     </method>
   6813     <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   6814       abstract="false" native="false" synchronized="false"
   6815       static="false" final="true" visibility="protected"
   6816       deprecated="not deprecated">
   6817       <param name="urlPattern" type="java.lang.String"/>
   6818       <param name="morePatterns" type="java.lang.String[]"/>
   6819       <doc>
   6820       <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
   6821  @since 2.0]]>
   6822       </doc>
   6823     </method>
   6824     <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   6825       abstract="false" native="false" synchronized="false"
   6826       static="false" final="true" visibility="protected"
   6827       deprecated="not deprecated">
   6828       <param name="regex" type="java.lang.String"/>
   6829       <param name="regexes" type="java.lang.String[]"/>
   6830       <doc>
   6831       <![CDATA[@param regex Any Java-style regular expression.
   6832  @since 2.0]]>
   6833       </doc>
   6834     </method>
   6835     <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   6836       abstract="false" native="false" synchronized="false"
   6837       static="false" final="true" visibility="protected"
   6838       deprecated="not deprecated">
   6839       <param name="urlPattern" type="java.lang.String"/>
   6840       <param name="morePatterns" type="java.lang.String[]"/>
   6841       <doc>
   6842       <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
   6843  @since 2.0]]>
   6844       </doc>
   6845     </method>
   6846     <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   6847       abstract="false" native="false" synchronized="false"
   6848       static="false" final="true" visibility="protected"
   6849       deprecated="not deprecated">
   6850       <param name="regex" type="java.lang.String"/>
   6851       <param name="regexes" type="java.lang.String[]"/>
   6852       <doc>
   6853       <![CDATA[@param regex Any Java-style regular expression.
   6854  @since 2.0]]>
   6855       </doc>
   6856     </method>
   6857     <method name="getServletContext" return="ServletContext"
   6858       abstract="false" native="false" synchronized="false"
   6859       static="false" final="true" visibility="protected"
   6860       deprecated="not deprecated">
   6861       <doc>
   6862       <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to
   6863  create your injector. Otherwise, it returns null.
   6864  @return The current servlet context.
   6865  @since 3.0]]>
   6866       </doc>
   6867     </method>
   6868     <doc>
   6869     <![CDATA[Configures the servlet scopes and creates bindings for the servlet API
   6870  objects so you can inject the request, response, session, etc.
   6871 
   6872  <p>
   6873  You should subclass this module to register servlets and
   6874  filters in the {@link #configureServlets()} method.
   6875 
   6876  @author crazybob (a] google.com (Bob Lee)
   6877  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6878     </doc>
   6879   </class>
   6880   <!-- end class com.google.inject.servlet.ServletModule -->
   6881   <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
   6882   <interface name="ServletModule.FilterKeyBindingBuilder"    abstract="true"
   6883     static="true" final="false" visibility="public"
   6884     deprecated="not deprecated">
   6885     <method name="through"
   6886       abstract="true" native="false" synchronized="false"
   6887       static="false" final="false" visibility="public"
   6888       deprecated="not deprecated">
   6889       <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
   6890     </method>
   6891     <method name="through"
   6892       abstract="true" native="false" synchronized="false"
   6893       static="false" final="false" visibility="public"
   6894       deprecated="not deprecated">
   6895       <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
   6896     </method>
   6897     <method name="through"
   6898       abstract="true" native="false" synchronized="false"
   6899       static="false" final="false" visibility="public"
   6900       deprecated="not deprecated">
   6901       <param name="filter" type="Filter"/>
   6902       <doc>
   6903       <![CDATA[@since 3.0]]>
   6904       </doc>
   6905     </method>
   6906     <method name="through"
   6907       abstract="true" native="false" synchronized="false"
   6908       static="false" final="false" visibility="public"
   6909       deprecated="not deprecated">
   6910       <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
   6911       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6912     </method>
   6913     <method name="through"
   6914       abstract="true" native="false" synchronized="false"
   6915       static="false" final="false" visibility="public"
   6916       deprecated="not deprecated">
   6917       <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
   6918       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6919     </method>
   6920     <method name="through"
   6921       abstract="true" native="false" synchronized="false"
   6922       static="false" final="false" visibility="public"
   6923       deprecated="not deprecated">
   6924       <param name="filter" type="Filter"/>
   6925       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6926       <doc>
   6927       <![CDATA[@since 3.0]]>
   6928       </doc>
   6929     </method>
   6930     <doc>
   6931     <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
   6932 
   6933  @since 2.0]]>
   6934     </doc>
   6935   </interface>
   6936   <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
   6937   <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
   6938   <interface name="ServletModule.ServletKeyBindingBuilder"    abstract="true"
   6939     static="true" final="false" visibility="public"
   6940     deprecated="not deprecated">
   6941     <method name="with"
   6942       abstract="true" native="false" synchronized="false"
   6943       static="false" final="false" visibility="public"
   6944       deprecated="not deprecated">
   6945       <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
   6946     </method>
   6947     <method name="with"
   6948       abstract="true" native="false" synchronized="false"
   6949       static="false" final="false" visibility="public"
   6950       deprecated="not deprecated">
   6951       <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
   6952     </method>
   6953     <method name="with"
   6954       abstract="true" native="false" synchronized="false"
   6955       static="false" final="false" visibility="public"
   6956       deprecated="not deprecated">
   6957       <param name="servlet" type="HttpServlet"/>
   6958       <doc>
   6959       <![CDATA[@since 3.0]]>
   6960       </doc>
   6961     </method>
   6962     <method name="with"
   6963       abstract="true" native="false" synchronized="false"
   6964       static="false" final="false" visibility="public"
   6965       deprecated="not deprecated">
   6966       <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
   6967       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6968     </method>
   6969     <method name="with"
   6970       abstract="true" native="false" synchronized="false"
   6971       static="false" final="false" visibility="public"
   6972       deprecated="not deprecated">
   6973       <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
   6974       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6975     </method>
   6976     <method name="with"
   6977       abstract="true" native="false" synchronized="false"
   6978       static="false" final="false" visibility="public"
   6979       deprecated="not deprecated">
   6980       <param name="servlet" type="HttpServlet"/>
   6981       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6982       <doc>
   6983       <![CDATA[@since 3.0]]>
   6984       </doc>
   6985     </method>
   6986     <doc>
   6987     <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
   6988 
   6989  @since 2.0]]>
   6990     </doc>
   6991   </interface>
   6992   <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
   6993   <!-- start interface com.google.inject.servlet.ServletModuleBinding -->
   6994   <interface name="ServletModuleBinding"    abstract="true"
   6995     static="false" final="false" visibility="public"
   6996     deprecated="not deprecated">
   6997     <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType"
   6998       abstract="true" native="false" synchronized="false"
   6999       static="false" final="false" visibility="public"
   7000       deprecated="not deprecated">
   7001       <doc>
   7002       <![CDATA[Returns the pattern type that this binding was created with.]]>
   7003       </doc>
   7004     </method>
   7005     <method name="getPattern" return="java.lang.String"
   7006       abstract="true" native="false" synchronized="false"
   7007       static="false" final="false" visibility="public"
   7008       deprecated="not deprecated">
   7009       <doc>
   7010       <![CDATA[Returns the pattern used to match against the binding.]]>
   7011       </doc>
   7012     </method>
   7013     <method name="getInitParams" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   7014       abstract="true" native="false" synchronized="false"
   7015       static="false" final="false" visibility="public"
   7016       deprecated="not deprecated">
   7017       <doc>
   7018       <![CDATA[Returns any context params supplied when creating the binding.]]>
   7019       </doc>
   7020     </method>
   7021     <method name="matchesUri" return="boolean"
   7022       abstract="true" native="false" synchronized="false"
   7023       static="false" final="false" visibility="public"
   7024       deprecated="not deprecated">
   7025       <param name="uri" type="java.lang.String"/>
   7026       <doc>
   7027       <![CDATA[Returns true if the given URI will match this binding.]]>
   7028       </doc>
   7029     </method>
   7030     <doc>
   7031     <![CDATA[A binding created by {@link ServletModule}.
   7032  
   7033  @author sameb (a] google.com (Sam Berlin)
   7034  @since 3.0]]>
   7035     </doc>
   7036   </interface>
   7037   <!-- end interface com.google.inject.servlet.ServletModuleBinding -->
   7038   <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor -->
   7039   <interface name="ServletModuleTargetVisitor"    abstract="true"
   7040     static="false" final="false" visibility="public"
   7041     deprecated="not deprecated">
   7042     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   7043     <method name="visit" return="V"
   7044       abstract="true" native="false" synchronized="false"
   7045       static="false" final="false" visibility="public"
   7046       deprecated="not deprecated">
   7047       <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/>
   7048       <doc>
   7049       <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where
   7050  {@link FilterKeyBindingBuilder#through} is called with a Class or Key.
   7051  
   7052  If multiple patterns were specified, this will be called multiple times.]]>
   7053       </doc>
   7054     </method>
   7055     <method name="visit" return="V"
   7056       abstract="true" native="false" synchronized="false"
   7057       static="false" final="false" visibility="public"
   7058       deprecated="not deprecated">
   7059       <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/>
   7060       <doc>
   7061       <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where
   7062  {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}.
   7063  
   7064  If multiple patterns were specified, this will be called multiple times.]]>
   7065       </doc>
   7066     </method>
   7067     <method name="visit" return="V"
   7068       abstract="true" native="false" synchronized="false"
   7069       static="false" final="false" visibility="public"
   7070       deprecated="not deprecated">
   7071       <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/>
   7072       <doc>
   7073       <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
   7074  {@link ServletKeyBindingBuilder#with}, is called with a Class or Key.
   7075  
   7076  If multiple patterns were specified, this will be called multiple times.]]>
   7077       </doc>
   7078     </method>
   7079     <method name="visit" return="V"
   7080       abstract="true" native="false" synchronized="false"
   7081       static="false" final="false" visibility="public"
   7082       deprecated="not deprecated">
   7083       <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/>
   7084       <doc>
   7085       <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 
   7086  {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}.
   7087  
   7088  If multiple patterns were specified, this will be called multiple times.]]>
   7089       </doc>
   7090     </method>
   7091     <doc>
   7092     <![CDATA[A visitor for the servlet extension.
   7093  
   7094  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   7095  {@link ServletModule} will be visited through this interface.
   7096  
   7097  @since 3.0
   7098  @author sameb (a] google.com (Sam Berlin)]]>
   7099     </doc>
   7100   </interface>
   7101   <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor -->
   7102   <!-- start class com.google.inject.servlet.ServletScopes -->
   7103   <class name="ServletScopes" extends="java.lang.Object"
   7104     abstract="false"
   7105     static="false" final="false" visibility="public"
   7106     deprecated="not deprecated">
   7107     <method name="continueRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7108       abstract="false" native="false" synchronized="false"
   7109       static="true" final="false" visibility="public"
   7110       deprecated="not deprecated">
   7111       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7112       <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
   7113       <doc>
   7114       <![CDATA[Wraps the given callable in a contextual callable that "continues" the
   7115  HTTP request in another thread. This acts as a way of transporting
   7116  request context data from the request processing thread to to worker
   7117  threads.
   7118  <p>
   7119  There are some limitations:
   7120  <ul>
   7121    <li>Derived objects (i.e. anything marked @RequestScoped will not be
   7122       transported.</li>
   7123    <li>State changes to the HttpServletRequest after this method is called
   7124       will not be seen in the continued thread.</li>
   7125    <li>Only the HttpServletRequest, ServletContext and request parameter
   7126       map are available in the continued thread. The response and session
   7127       are not available.</li>
   7128  </ul>
   7129 
   7130  <p>The returned callable will throw a {@link ScopingException} when called
   7131  if the HTTP request scope is still active on the current thread.
   7132 
   7133  @param callable code to be executed in another thread, which depends on
   7134      the request scope.
   7135  @param seedMap the initial set of scoped instances for Guice to seed the
   7136      request scope with.  To seed a key with null, use {@code null} as
   7137      the value.
   7138  @return a callable that will invoke the given callable, making the request
   7139      context available to it.
   7140  @throws OutOfScopeException if this method is called from a non-request
   7141      thread, or if the request has completed.
   7142  
   7143  @since 3.0]]>
   7144       </doc>
   7145     </method>
   7146     <method name="transferRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7147       abstract="false" native="false" synchronized="false"
   7148       static="true" final="false" visibility="public"
   7149       deprecated="not deprecated">
   7150       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7151       <doc>
   7152       <![CDATA[Wraps the given callable in a contextual callable that "transfers" the
   7153  request to another thread. This acts as a way of transporting
   7154  request context data from the current thread to a future thread.
   7155 
   7156  <p>As opposed to {@link #continueRequest}, this method propagates all
   7157  existing scoped objects. The primary use case is in server implementations
   7158  where you can detach the request processing thread while waiting for data,
   7159  and reattach to a different thread to finish processing at a later time.
   7160 
   7161  <p>Because {@code HttpServletRequest} objects are not typically
   7162  thread-safe, the callable returned by this method must not be run on a
   7163  different thread until the current request scope has terminated. In other
   7164  words, do not use this method to propagate the current request scope to
   7165  worker threads that may run concurrently with the current thread.
   7166 
   7167  <p>The returned callable will throw a {@link ScopingException} when called
   7168  if the request scope being transferred is still active on a different
   7169  thread.
   7170 
   7171  @param callable code to be executed in another thread, which depends on
   7172      the request scope.
   7173  @return a callable that will invoke the given callable, making the request
   7174      context available to it.
   7175  @throws OutOfScopeException if this method is called from a non-request
   7176      thread, or if the request has completed.]]>
   7177       </doc>
   7178     </method>
   7179     <method name="isRequestScoped" return="boolean"
   7180       abstract="false" native="false" synchronized="false"
   7181       static="true" final="false" visibility="public"
   7182       deprecated="not deprecated">
   7183       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   7184       <doc>
   7185       <![CDATA[Returns true if {@code binding} is request-scoped. If the binding is a
   7186  {@link com.google.inject.spi.LinkedKeyBinding linked key binding} and
   7187  belongs to an injector (i. e. it was retrieved via
   7188  {@link Injector#getBinding Injector.getBinding()}), then this method will
   7189  also return true if the target binding is request-scoped.]]>
   7190       </doc>
   7191     </method>
   7192     <method name="scopeRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7193       abstract="false" native="false" synchronized="false"
   7194       static="true" final="false" visibility="public"
   7195       deprecated="not deprecated">
   7196       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7197       <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
   7198       <doc>
   7199       <![CDATA[Scopes the given callable inside a request scope. This is not the same
   7200  as the HTTP request scope, but is used if no HTTP request scope is in
   7201  progress. In this way, keys can be scoped as @RequestScoped and exist
   7202  in non-HTTP requests (for example: RPC requests) as well as in HTTP
   7203  request threads.
   7204 
   7205  <p>The returned callable will throw a {@link ScopingException} when called
   7206  if there is a request scope already active on the current thread.
   7207 
   7208  @param callable code to be executed which depends on the request scope.
   7209      Typically in another thread, but not necessarily so.
   7210  @param seedMap the initial set of scoped instances for Guice to seed the
   7211      request scope with.  To seed a key with null, use {@code null} as
   7212      the value.
   7213  @return a callable that when called will run inside the a request scope
   7214      that exposes the instances in the {@code seedMap} as scoped keys.
   7215  @since 3.0]]>
   7216       </doc>
   7217     </method>
   7218     <field name="REQUEST" type="com.google.inject.Scope"
   7219       transient="false" volatile="false"
   7220       static="true" final="true" visibility="public"
   7221       deprecated="not deprecated">
   7222       <doc>
   7223       <![CDATA[HTTP servlet request scope.]]>
   7224       </doc>
   7225     </field>
   7226     <field name="SESSION" type="com.google.inject.Scope"
   7227       transient="false" volatile="false"
   7228       static="true" final="true" visibility="public"
   7229       deprecated="not deprecated">
   7230       <doc>
   7231       <![CDATA[HTTP session scope.]]>
   7232       </doc>
   7233     </field>
   7234     <doc>
   7235     <![CDATA[Servlet scopes.
   7236 
   7237  @author crazybob (a] google.com (Bob Lee)]]>
   7238     </doc>
   7239   </class>
   7240   <!-- end class com.google.inject.servlet.ServletScopes -->
   7241   <!-- start class com.google.inject.servlet.SessionScoped -->
   7242   <class name="SessionScoped"    abstract="true"
   7243     static="false" final="false" visibility="public"
   7244     deprecated="not deprecated">
   7245     <implements name="java.lang.annotation.Annotation"/>
   7246     <doc>
   7247     <![CDATA[Apply this to implementation classes when you want one instance per session.
   7248 
   7249  @see com.google.inject.Scopes#SINGLETON
   7250  @author crazybob (a] google.com (Bob Lee)]]>
   7251     </doc>
   7252   </class>
   7253   <!-- end class com.google.inject.servlet.SessionScoped -->
   7254   <!-- start class com.google.inject.servlet.UriPatternType -->
   7255   <class name="UriPatternType" extends="java.lang.Enum&lt;com.google.inject.servlet.UriPatternType&gt;"
   7256     abstract="false"
   7257     static="false" final="true" visibility="public"
   7258     deprecated="not deprecated">
   7259     <method name="values" return="com.google.inject.servlet.UriPatternType[]"
   7260       abstract="false" native="false" synchronized="false"
   7261       static="true" final="false" visibility="public"
   7262       deprecated="not deprecated">
   7263     </method>
   7264     <method name="valueOf" return="com.google.inject.servlet.UriPatternType"
   7265       abstract="false" native="false" synchronized="false"
   7266       static="true" final="false" visibility="public"
   7267       deprecated="not deprecated">
   7268       <param name="name" type="java.lang.String"/>
   7269     </method>
   7270     <doc>
   7271     <![CDATA[An enumeration of the available URI-pattern matching styles
   7272  
   7273  @since 3.0]]>
   7274     </doc>
   7275   </class>
   7276   <!-- end class com.google.inject.servlet.UriPatternType -->
   7277 </package>
   7278 <package name="com.google.inject.spi">
   7279   <!-- start interface com.google.inject.spi.BindingScopingVisitor -->
   7280   <interface name="BindingScopingVisitor"    abstract="true"
   7281     static="false" final="false" visibility="public"
   7282     deprecated="not deprecated">
   7283     <method name="visitEagerSingleton" return="V"
   7284       abstract="true" native="false" synchronized="false"
   7285       static="false" final="false" visibility="public"
   7286       deprecated="not deprecated">
   7287       <doc>
   7288       <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and
   7289  injector bindings.]]>
   7290       </doc>
   7291     </method>
   7292     <method name="visitScope" return="V"
   7293       abstract="true" native="false" synchronized="false"
   7294       static="false" final="false" visibility="public"
   7295       deprecated="not deprecated">
   7296       <param name="scope" type="com.google.inject.Scope"/>
   7297       <doc>
   7298       <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]>
   7299       </doc>
   7300     </method>
   7301     <method name="visitScopeAnnotation" return="V"
   7302       abstract="true" native="false" synchronized="false"
   7303       static="false" final="false" visibility="public"
   7304       deprecated="not deprecated">
   7305       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   7306       <doc>
   7307       <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance
   7308  that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class,
   7309  Scope) Binder.bindScope()}.]]>
   7310       </doc>
   7311     </method>
   7312     <method name="visitNoScoping" return="V"
   7313       abstract="true" native="false" synchronized="false"
   7314       static="false" final="false" visibility="public"
   7315       deprecated="not deprecated">
   7316       <doc>
   7317       <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the
   7318  injector should use scoping annotations to find a scope. On an injector, it indicates that
   7319  no scope is applied to the binding. An unscoped binding will behave like a scoped one when it
   7320  is linked to a scoped binding.]]>
   7321       </doc>
   7322     </method>
   7323     <doc>
   7324     <![CDATA[Visits each of the strategies used to scope an injection.
   7325 
   7326  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7327      {@code return null} if no return type is needed.
   7328  @since 2.0]]>
   7329     </doc>
   7330   </interface>
   7331   <!-- end interface com.google.inject.spi.BindingScopingVisitor -->
   7332   <!-- start interface com.google.inject.spi.BindingTargetVisitor -->
   7333   <interface name="BindingTargetVisitor"    abstract="true"
   7334     static="false" final="false" visibility="public"
   7335     deprecated="not deprecated">
   7336     <method name="visit" return="V"
   7337       abstract="true" native="false" synchronized="false"
   7338       static="false" final="false" visibility="public"
   7339       deprecated="not deprecated">
   7340       <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
   7341       <doc>
   7342       <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is
   7343  found in both module and injector bindings.]]>
   7344       </doc>
   7345     </method>
   7346     <method name="visit" return="V"
   7347       abstract="true" native="false" synchronized="false"
   7348       static="false" final="false" visibility="public"
   7349       deprecated="not deprecated">
   7350       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
   7351       <doc>
   7352       <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve
   7353  injections. This target is found in both module and injector bindings.]]>
   7354       </doc>
   7355     </method>
   7356     <method name="visit" return="V"
   7357       abstract="true" native="false" synchronized="false"
   7358       static="false" final="false" visibility="public"
   7359       deprecated="not deprecated">
   7360       <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
   7361       <doc>
   7362       <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then
   7363  that provider's {@code get} method is invoked. This target is found in both module and injector
   7364  bindings.]]>
   7365       </doc>
   7366     </method>
   7367     <method name="visit" return="V"
   7368       abstract="true" native="false" synchronized="false"
   7369       static="false" final="false" visibility="public"
   7370       deprecated="not deprecated">
   7371       <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
   7372       <doc>
   7373       <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This
   7374  target is found in both module and injector bindings.]]>
   7375       </doc>
   7376     </method>
   7377     <method name="visit" return="V"
   7378       abstract="true" native="false" synchronized="false"
   7379       static="false" final="false" visibility="public"
   7380       deprecated="not deprecated">
   7381       <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
   7382       <doc>
   7383       <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only
   7384  found in injector bindings.]]>
   7385       </doc>
   7386     </method>
   7387     <method name="visit" return="V"
   7388       abstract="true" native="false" synchronized="false"
   7389       static="false" final="false" visibility="public"
   7390       deprecated="not deprecated">
   7391       <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
   7392       <doc>
   7393       <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates
   7394  that the injector should use its implicit binding strategies to resolve injections.]]>
   7395       </doc>
   7396     </method>
   7397     <method name="visit" return="V"
   7398       abstract="true" native="false" synchronized="false"
   7399       static="false" final="false" visibility="public"
   7400       deprecated="not deprecated">
   7401       <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
   7402       <doc>
   7403       <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking
   7404  {@code constructor}. This target is found only on injector bindings.]]>
   7405       </doc>
   7406     </method>
   7407     <method name="visit" return="V"
   7408       abstract="true" native="false" synchronized="false"
   7409       static="false" final="false" visibility="public"
   7410       deprecated="not deprecated">
   7411       <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
   7412       <doc>
   7413       <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding
   7414  has the same binding annotation but a different type. This target is found only on injector
   7415  bindings.]]>
   7416       </doc>
   7417     </method>
   7418     <method name="visit" return="V"
   7419       abstract="true" native="false" synchronized="false"
   7420       static="false" final="false" visibility="public"
   7421       deprecated="not deprecated">
   7422       <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
   7423       <doc>
   7424       <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the
   7425  provided type. This target is found only on injector bindings.]]>
   7426       </doc>
   7427     </method>
   7428     <doc>
   7429     <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection.
   7430 
   7431  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7432      {@code return null} if no return type is needed.
   7433  @since 2.0]]>
   7434     </doc>
   7435   </interface>
   7436   <!-- end interface com.google.inject.spi.BindingTargetVisitor -->
   7437   <!-- start interface com.google.inject.spi.ConstructorBinding -->
   7438   <interface name="ConstructorBinding"    abstract="true"
   7439     static="false" final="false" visibility="public"
   7440     deprecated="not deprecated">
   7441     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   7442     <implements name="com.google.inject.spi.HasDependencies"/>
   7443     <method name="getConstructor" return="com.google.inject.spi.InjectionPoint"
   7444       abstract="true" native="false" synchronized="false"
   7445       static="false" final="false" visibility="public"
   7446       deprecated="not deprecated">
   7447       <doc>
   7448       <![CDATA[Gets the constructor this binding injects.]]>
   7449       </doc>
   7450     </method>
   7451     <method name="getInjectableMembers" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   7452       abstract="true" native="false" synchronized="false"
   7453       static="false" final="false" visibility="public"
   7454       deprecated="not deprecated">
   7455       <doc>
   7456       <![CDATA[Returns all instance method and field injection points on {@code type}.
   7457 
   7458  @return a possibly empty set of injection points. The set has a specified iteration order. All
   7459       fields are returned and then all methods. Within the fields, supertype fields are returned
   7460       before subtype fields. Similarly, supertype methods are returned before subtype methods.]]>
   7461       </doc>
   7462     </method>
   7463     <method name="getMethodInterceptors" return="java.util.Map&lt;java.lang.reflect.Method, java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;&gt;"
   7464       abstract="true" native="false" synchronized="false"
   7465       static="false" final="false" visibility="public"
   7466       deprecated="not deprecated">
   7467       <doc>
   7468       <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied.
   7469 
   7470  @return a possibly empty map]]>
   7471       </doc>
   7472     </method>
   7473     <doc>
   7474     <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is
   7475  instantiated by invoking the constructor.
   7476 
   7477  @author jessewilson (a] google.com (Jesse Wilson)
   7478  @since 2.0]]>
   7479     </doc>
   7480   </interface>
   7481   <!-- end interface com.google.inject.spi.ConstructorBinding -->
   7482   <!-- start interface com.google.inject.spi.ConvertedConstantBinding -->
   7483   <interface name="ConvertedConstantBinding"    abstract="true"
   7484     static="false" final="false" visibility="public"
   7485     deprecated="not deprecated">
   7486     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   7487     <implements name="com.google.inject.spi.HasDependencies"/>
   7488     <method name="getValue" return="T"
   7489       abstract="true" native="false" synchronized="false"
   7490       static="false" final="false" visibility="public"
   7491       deprecated="not deprecated">
   7492       <doc>
   7493       <![CDATA[Returns the converted value.]]>
   7494       </doc>
   7495     </method>
   7496     <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding"
   7497       abstract="true" native="false" synchronized="false"
   7498       static="false" final="false" visibility="public"
   7499       deprecated="not deprecated">
   7500       <doc>
   7501       <![CDATA[Returns the type converter binding used to convert the constant.
   7502  
   7503  @since 3.0]]>
   7504       </doc>
   7505     </method>
   7506     <method name="getSourceKey" return="com.google.inject.Key&lt;java.lang.String&gt;"
   7507       abstract="true" native="false" synchronized="false"
   7508       static="false" final="false" visibility="public"
   7509       deprecated="not deprecated">
   7510       <doc>
   7511       <![CDATA[Returns the key for the source binding. That binding can be retrieved from an injector using
   7512  {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
   7513       </doc>
   7514     </method>
   7515     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   7516       abstract="true" native="false" synchronized="false"
   7517       static="false" final="false" visibility="public"
   7518       deprecated="not deprecated">
   7519       <doc>
   7520       <![CDATA[Returns a singleton set containing only the converted key.]]>
   7521       </doc>
   7522     </method>
   7523     <doc>
   7524     <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same
   7525  binding annotation but a different type.
   7526 
   7527  @author jessewilson (a] google.com (Jesse Wilson)
   7528  @since 2.0]]>
   7529     </doc>
   7530   </interface>
   7531   <!-- end interface com.google.inject.spi.ConvertedConstantBinding -->
   7532   <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor -->
   7533   <class name="DefaultBindingScopingVisitor" extends="java.lang.Object"
   7534     abstract="false"
   7535     static="false" final="false" visibility="public"
   7536     deprecated="not deprecated">
   7537     <implements name="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
   7538     <constructor name="DefaultBindingScopingVisitor"
   7539       static="false" final="false" visibility="public"
   7540       deprecated="not deprecated">
   7541     </constructor>
   7542     <method name="visitOther" return="V"
   7543       abstract="false" native="false" synchronized="false"
   7544       static="false" final="false" visibility="protected"
   7545       deprecated="not deprecated">
   7546       <doc>
   7547       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   7548       </doc>
   7549     </method>
   7550     <method name="visitEagerSingleton" return="V"
   7551       abstract="false" native="false" synchronized="false"
   7552       static="false" final="false" visibility="public"
   7553       deprecated="not deprecated">
   7554     </method>
   7555     <method name="visitScope" return="V"
   7556       abstract="false" native="false" synchronized="false"
   7557       static="false" final="false" visibility="public"
   7558       deprecated="not deprecated">
   7559       <param name="scope" type="com.google.inject.Scope"/>
   7560     </method>
   7561     <method name="visitScopeAnnotation" return="V"
   7562       abstract="false" native="false" synchronized="false"
   7563       static="false" final="false" visibility="public"
   7564       deprecated="not deprecated">
   7565       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   7566     </method>
   7567     <method name="visitNoScoping" return="V"
   7568       abstract="false" native="false" synchronized="false"
   7569       static="false" final="false" visibility="public"
   7570       deprecated="not deprecated">
   7571     </method>
   7572     <doc>
   7573     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
   7574  {@link #visitOther()}, returning its result.
   7575 
   7576  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7577      {@code return null} if no return type is needed.
   7578  
   7579  @author jessewilson (a] google.com (Jesse Wilson)
   7580  @since 2.0]]>
   7581     </doc>
   7582   </class>
   7583   <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor -->
   7584   <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor -->
   7585   <class name="DefaultBindingTargetVisitor" extends="java.lang.Object"
   7586     abstract="true"
   7587     static="false" final="false" visibility="public"
   7588     deprecated="not deprecated">
   7589     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   7590     <constructor name="DefaultBindingTargetVisitor"
   7591       static="false" final="false" visibility="public"
   7592       deprecated="not deprecated">
   7593     </constructor>
   7594     <method name="visitOther" return="V"
   7595       abstract="false" native="false" synchronized="false"
   7596       static="false" final="false" visibility="protected"
   7597       deprecated="not deprecated">
   7598       <param name="binding" type="com.google.inject.Binding&lt;? extends T&gt;"/>
   7599       <doc>
   7600       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   7601       </doc>
   7602     </method>
   7603     <method name="visit" return="V"
   7604       abstract="false" native="false" synchronized="false"
   7605       static="false" final="false" visibility="public"
   7606       deprecated="not deprecated">
   7607       <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
   7608     </method>
   7609     <method name="visit" return="V"
   7610       abstract="false" native="false" synchronized="false"
   7611       static="false" final="false" visibility="public"
   7612       deprecated="not deprecated">
   7613       <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
   7614     </method>
   7615     <method name="visit" return="V"
   7616       abstract="false" native="false" synchronized="false"
   7617       static="false" final="false" visibility="public"
   7618       deprecated="not deprecated">
   7619       <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
   7620     </method>
   7621     <method name="visit" return="V"
   7622       abstract="false" native="false" synchronized="false"
   7623       static="false" final="false" visibility="public"
   7624       deprecated="not deprecated">
   7625       <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
   7626     </method>
   7627     <method name="visit" return="V"
   7628       abstract="false" native="false" synchronized="false"
   7629       static="false" final="false" visibility="public"
   7630       deprecated="not deprecated">
   7631       <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
   7632     </method>
   7633     <method name="visit" return="V"
   7634       abstract="false" native="false" synchronized="false"
   7635       static="false" final="false" visibility="public"
   7636       deprecated="not deprecated">
   7637       <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
   7638     </method>
   7639     <method name="visit" return="V"
   7640       abstract="false" native="false" synchronized="false"
   7641       static="false" final="false" visibility="public"
   7642       deprecated="not deprecated">
   7643       <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
   7644     </method>
   7645     <method name="visit" return="V"
   7646       abstract="false" native="false" synchronized="false"
   7647       static="false" final="false" visibility="public"
   7648       deprecated="not deprecated">
   7649       <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
   7650     </method>
   7651     <method name="visit" return="V"
   7652       abstract="false" native="false" synchronized="false"
   7653       static="false" final="false" visibility="public"
   7654       deprecated="not deprecated">
   7655       <param name="providerBinding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
   7656     </method>
   7657     <doc>
   7658     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link
   7659  #visitOther(Binding)}, returning its result.
   7660 
   7661  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7662      {@code return null} if no return type is needed.
   7663 
   7664  @author jessewilson (a] google.com (Jesse Wilson)
   7665  @since 2.0]]>
   7666     </doc>
   7667   </class>
   7668   <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor -->
   7669   <!-- start class com.google.inject.spi.DefaultElementVisitor -->
   7670   <class name="DefaultElementVisitor" extends="java.lang.Object"
   7671     abstract="true"
   7672     static="false" final="false" visibility="public"
   7673     deprecated="not deprecated">
   7674     <implements name="com.google.inject.spi.ElementVisitor&lt;V&gt;"/>
   7675     <constructor name="DefaultElementVisitor"
   7676       static="false" final="false" visibility="public"
   7677       deprecated="not deprecated">
   7678     </constructor>
   7679     <method name="visitOther" return="V"
   7680       abstract="false" native="false" synchronized="false"
   7681       static="false" final="false" visibility="protected"
   7682       deprecated="not deprecated">
   7683       <param name="element" type="com.google.inject.spi.Element"/>
   7684       <doc>
   7685       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   7686       </doc>
   7687     </method>
   7688     <method name="visit" return="V"
   7689       abstract="false" native="false" synchronized="false"
   7690       static="false" final="false" visibility="public"
   7691       deprecated="not deprecated">
   7692       <param name="message" type="com.google.inject.spi.Message"/>
   7693     </method>
   7694     <method name="visit" return="V"
   7695       abstract="false" native="false" synchronized="false"
   7696       static="false" final="false" visibility="public"
   7697       deprecated="not deprecated">
   7698       <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
   7699     </method>
   7700     <method name="visit" return="V"
   7701       abstract="false" native="false" synchronized="false"
   7702       static="false" final="false" visibility="public"
   7703       deprecated="not deprecated">
   7704       <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/>
   7705     </method>
   7706     <method name="visit" return="V"
   7707       abstract="false" native="false" synchronized="false"
   7708       static="false" final="false" visibility="public"
   7709       deprecated="not deprecated">
   7710       <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/>
   7711     </method>
   7712     <method name="visit" return="V"
   7713       abstract="false" native="false" synchronized="false"
   7714       static="false" final="false" visibility="public"
   7715       deprecated="not deprecated">
   7716       <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/>
   7717     </method>
   7718     <method name="visit" return="V"
   7719       abstract="false" native="false" synchronized="false"
   7720       static="false" final="false" visibility="public"
   7721       deprecated="not deprecated">
   7722       <param name="providerLookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
   7723     </method>
   7724     <method name="visit" return="V"
   7725       abstract="false" native="false" synchronized="false"
   7726       static="false" final="false" visibility="public"
   7727       deprecated="not deprecated">
   7728       <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
   7729     </method>
   7730     <method name="visit" return="V"
   7731       abstract="false" native="false" synchronized="false"
   7732       static="false" final="false" visibility="public"
   7733       deprecated="not deprecated">
   7734       <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/>
   7735     </method>
   7736     <method name="visit" return="V"
   7737       abstract="false" native="false" synchronized="false"
   7738       static="false" final="false" visibility="public"
   7739       deprecated="not deprecated">
   7740       <param name="privateElements" type="com.google.inject.spi.PrivateElements"/>
   7741     </method>
   7742     <method name="visit" return="V"
   7743       abstract="false" native="false" synchronized="false"
   7744       static="false" final="false" visibility="public"
   7745       deprecated="not deprecated">
   7746       <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
   7747     </method>
   7748     <method name="visit" return="V"
   7749       abstract="false" native="false" synchronized="false"
   7750       static="false" final="false" visibility="public"
   7751       deprecated="not deprecated">
   7752       <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
   7753     </method>
   7754     <method name="visit" return="V"
   7755       abstract="false" native="false" synchronized="false"
   7756       static="false" final="false" visibility="public"
   7757       deprecated="not deprecated">
   7758       <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/>
   7759     </method>
   7760     <method name="visit" return="V"
   7761       abstract="false" native="false" synchronized="false"
   7762       static="false" final="false" visibility="public"
   7763       deprecated="not deprecated">
   7764       <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
   7765     </method>
   7766     <method name="visit" return="V"
   7767       abstract="false" native="false" synchronized="false"
   7768       static="false" final="false" visibility="public"
   7769       deprecated="not deprecated">
   7770       <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
   7771     </method>
   7772     <method name="visit" return="V"
   7773       abstract="false" native="false" synchronized="false"
   7774       static="false" final="false" visibility="public"
   7775       deprecated="not deprecated">
   7776       <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/>
   7777     </method>
   7778     <method name="visit" return="V"
   7779       abstract="false" native="false" synchronized="false"
   7780       static="false" final="false" visibility="public"
   7781       deprecated="not deprecated">
   7782       <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/>
   7783     </method>
   7784     <doc>
   7785     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
   7786  {@link #visitOther(Element)}, returning its result.
   7787 
   7788  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7789      {@code return null} if no return type is needed.
   7790 
   7791  @author sberlin (a] gmail.com (Sam Berlin)
   7792  @since 2.0]]>
   7793     </doc>
   7794   </class>
   7795   <!-- end class com.google.inject.spi.DefaultElementVisitor -->
   7796   <!-- start class com.google.inject.spi.Dependency -->
   7797   <class name="Dependency" extends="java.lang.Object"
   7798     abstract="false"
   7799     static="false" final="true" visibility="public"
   7800     deprecated="not deprecated">
   7801     <method name="get" return="com.google.inject.spi.Dependency&lt;T&gt;"
   7802       abstract="false" native="false" synchronized="false"
   7803       static="true" final="false" visibility="public"
   7804       deprecated="not deprecated">
   7805       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   7806       <doc>
   7807       <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is
   7808  nullable.]]>
   7809       </doc>
   7810     </method>
   7811     <method name="forInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   7812       abstract="false" native="false" synchronized="false"
   7813       static="true" final="false" visibility="public"
   7814       deprecated="not deprecated">
   7815       <param name="injectionPoints" type="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"/>
   7816       <doc>
   7817       <![CDATA[Returns the dependencies from the given injection points.]]>
   7818       </doc>
   7819     </method>
   7820     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   7821       abstract="false" native="false" synchronized="false"
   7822       static="false" final="false" visibility="public"
   7823       deprecated="not deprecated">
   7824       <doc>
   7825       <![CDATA[Returns the key to the binding that satisfies this dependency.]]>
   7826       </doc>
   7827     </method>
   7828     <method name="isNullable" return="boolean"
   7829       abstract="false" native="false" synchronized="false"
   7830       static="false" final="false" visibility="public"
   7831       deprecated="not deprecated">
   7832       <doc>
   7833       <![CDATA[Returns true if null is a legal value for this dependency.]]>
   7834       </doc>
   7835     </method>
   7836     <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
   7837       abstract="false" native="false" synchronized="false"
   7838       static="false" final="false" visibility="public"
   7839       deprecated="not deprecated">
   7840       <doc>
   7841       <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't
   7842  attached to a particular injection point.]]>
   7843       </doc>
   7844     </method>
   7845     <method name="getParameterIndex" return="int"
   7846       abstract="false" native="false" synchronized="false"
   7847       static="false" final="false" visibility="public"
   7848       deprecated="not deprecated">
   7849       <doc>
   7850       <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if
   7851  this dependency does not belong to a parameter list. Only method and constuctor dependencies
   7852  are elements in a parameter list.]]>
   7853       </doc>
   7854     </method>
   7855     <method name="hashCode" return="int"
   7856       abstract="false" native="false" synchronized="false"
   7857       static="false" final="false" visibility="public"
   7858       deprecated="not deprecated">
   7859     </method>
   7860     <method name="equals" return="boolean"
   7861       abstract="false" native="false" synchronized="false"
   7862       static="false" final="false" visibility="public"
   7863       deprecated="not deprecated">
   7864       <param name="o" type="java.lang.Object"/>
   7865     </method>
   7866     <method name="toString" return="java.lang.String"
   7867       abstract="false" native="false" synchronized="false"
   7868       static="false" final="false" visibility="public"
   7869       deprecated="not deprecated">
   7870     </method>
   7871     <doc>
   7872     <![CDATA[A variable that can be resolved by an injector.
   7873 
   7874  <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one
   7875  that's attached to a constructor, method or field.
   7876 
   7877  @author crazybob (a] google.com (Bob Lee)
   7878  @author jessewilson (a] google.com (Jesse Wilson)
   7879  @since 2.0]]>
   7880     </doc>
   7881   </class>
   7882   <!-- end class com.google.inject.spi.Dependency -->
   7883   <!-- start class com.google.inject.spi.DependencyAndSource -->
   7884   <class name="DependencyAndSource" extends="java.lang.Object"
   7885     abstract="false"
   7886     static="false" final="true" visibility="public"
   7887     deprecated="not deprecated">
   7888     <constructor name="DependencyAndSource" type="com.google.inject.spi.Dependency&lt;?&gt;, java.lang.Object"
   7889       static="false" final="false" visibility="public"
   7890       deprecated="not deprecated">
   7891     </constructor>
   7892     <method name="getDependency" return="com.google.inject.spi.Dependency&lt;?&gt;"
   7893       abstract="false" native="false" synchronized="false"
   7894       static="false" final="false" visibility="public"
   7895       deprecated="not deprecated">
   7896       <doc>
   7897       <![CDATA[Returns the Dependency, if one exists. For anything that can be referenced
   7898  by {@link Injector#getBinding}, a dependency exists. A dependency will not
   7899  exist (and this will return null) for types initialized with
   7900  {@link Binder#requestInjection} or {@link Injector#injectMembers(Object)},
   7901  nor will it exist for objects injected into Providers bound with
   7902  LinkedBindingBuilder#toProvider(Provider).]]>
   7903       </doc>
   7904     </method>
   7905     <method name="getBindingSource" return="java.lang.String"
   7906       abstract="false" native="false" synchronized="false"
   7907       static="false" final="false" visibility="public"
   7908       deprecated="not deprecated">
   7909       <doc>
   7910       <![CDATA[Returns a string describing where this dependency was bound. If the binding
   7911  was just-in-time, there is no valid binding source, so this describes the
   7912  class in question.]]>
   7913       </doc>
   7914     </method>
   7915     <method name="toString" return="java.lang.String"
   7916       abstract="false" native="false" synchronized="false"
   7917       static="false" final="false" visibility="public"
   7918       deprecated="not deprecated">
   7919     </method>
   7920     <doc>
   7921     <![CDATA[A combination of a {@link Dependency} and the {@link Binding#getSource()
   7922  source} where the dependency was bound.
   7923  
   7924  @author sameb (a] google.com (Sam Berlin)]]>
   7925     </doc>
   7926   </class>
   7927   <!-- end class com.google.inject.spi.DependencyAndSource -->
   7928   <!-- start class com.google.inject.spi.DisableCircularProxiesOption -->
   7929   <class name="DisableCircularProxiesOption" extends="java.lang.Object"
   7930     abstract="false"
   7931     static="false" final="true" visibility="public"
   7932     deprecated="not deprecated">
   7933     <implements name="com.google.inject.spi.Element"/>
   7934     <method name="getSource" return="java.lang.Object"
   7935       abstract="false" native="false" synchronized="false"
   7936       static="false" final="false" visibility="public"
   7937       deprecated="not deprecated">
   7938     </method>
   7939     <method name="applyTo"
   7940       abstract="false" native="false" synchronized="false"
   7941       static="false" final="false" visibility="public"
   7942       deprecated="not deprecated">
   7943       <param name="binder" type="com.google.inject.Binder"/>
   7944     </method>
   7945     <method name="acceptVisitor" return="T"
   7946       abstract="false" native="false" synchronized="false"
   7947       static="false" final="false" visibility="public"
   7948       deprecated="not deprecated">
   7949       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   7950     </method>
   7951     <doc>
   7952     <![CDATA[A request to disable circular proxies.
   7953 
   7954  @author sameb (a] google.com (Sam Berlin)
   7955  @since 3.0]]>
   7956     </doc>
   7957   </class>
   7958   <!-- end class com.google.inject.spi.DisableCircularProxiesOption -->
   7959   <!-- start interface com.google.inject.spi.Element -->
   7960   <interface name="Element"    abstract="true"
   7961     static="false" final="false" visibility="public"
   7962     deprecated="not deprecated">
   7963     <method name="getSource" return="java.lang.Object"
   7964       abstract="true" native="false" synchronized="false"
   7965       static="false" final="false" visibility="public"
   7966       deprecated="not deprecated">
   7967       <doc>
   7968       <![CDATA[Returns an arbitrary object containing information about the "place" where this element was
   7969  configured. Used by Guice in the production of descriptive error messages.
   7970 
   7971  <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
   7972  example. Tools should simply call {@code toString()} on the source object if the type is
   7973  unfamiliar.]]>
   7974       </doc>
   7975     </method>
   7976     <method name="acceptVisitor" return="T"
   7977       abstract="true" native="false" synchronized="false"
   7978       static="false" final="false" visibility="public"
   7979       deprecated="not deprecated">
   7980       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   7981       <doc>
   7982       <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type.
   7983 
   7984  @param visitor to call back on]]>
   7985       </doc>
   7986     </method>
   7987     <method name="applyTo"
   7988       abstract="true" native="false" synchronized="false"
   7989       static="false" final="false" visibility="public"
   7990       deprecated="not deprecated">
   7991       <param name="binder" type="com.google.inject.Binder"/>
   7992       <doc>
   7993       <![CDATA[Writes this module element to the given binder (optional operation).
   7994 
   7995  @param binder to apply configuration element to
   7996  @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this
   7997      element.]]>
   7998       </doc>
   7999     </method>
   8000     <doc>
   8001     <![CDATA[A core component of a module or injector.
   8002 
   8003  <p>The elements of a module can be inspected, validated and rewritten. Use {@link
   8004  Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements
   8005  from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them.
   8006  This can be used for static analysis and generation of Guice modules.
   8007 
   8008  <p>The elements of an injector can be inspected and exercised. Use {@link
   8009  com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors.
   8010 
   8011  @author jessewilson (a] google.com (Jesse Wilson)
   8012  @author crazybob (a] google.com (Bob Lee)
   8013  @since 2.0]]>
   8014     </doc>
   8015   </interface>
   8016   <!-- end interface com.google.inject.spi.Element -->
   8017   <!-- start class com.google.inject.spi.Elements -->
   8018   <class name="Elements" extends="java.lang.Object"
   8019     abstract="false"
   8020     static="false" final="true" visibility="public"
   8021     deprecated="not deprecated">
   8022     <constructor name="Elements"
   8023       static="false" final="false" visibility="public"
   8024       deprecated="not deprecated">
   8025     </constructor>
   8026     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8027       abstract="false" native="false" synchronized="false"
   8028       static="true" final="false" visibility="public"
   8029       deprecated="not deprecated">
   8030       <param name="modules" type="com.google.inject.Module[]"/>
   8031       <doc>
   8032       <![CDATA[Records the elements executed by {@code modules}.]]>
   8033       </doc>
   8034     </method>
   8035     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8036       abstract="false" native="false" synchronized="false"
   8037       static="true" final="false" visibility="public"
   8038       deprecated="not deprecated">
   8039       <param name="stage" type="com.google.inject.Stage"/>
   8040       <param name="modules" type="com.google.inject.Module[]"/>
   8041       <doc>
   8042       <![CDATA[Records the elements executed by {@code modules}.]]>
   8043       </doc>
   8044     </method>
   8045     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8046       abstract="false" native="false" synchronized="false"
   8047       static="true" final="false" visibility="public"
   8048       deprecated="not deprecated">
   8049       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   8050       <doc>
   8051       <![CDATA[Records the elements executed by {@code modules}.]]>
   8052       </doc>
   8053     </method>
   8054     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8055       abstract="false" native="false" synchronized="false"
   8056       static="true" final="false" visibility="public"
   8057       deprecated="not deprecated">
   8058       <param name="stage" type="com.google.inject.Stage"/>
   8059       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   8060       <doc>
   8061       <![CDATA[Records the elements executed by {@code modules}.]]>
   8062       </doc>
   8063     </method>
   8064     <method name="getModule" return="com.google.inject.Module"
   8065       abstract="false" native="false" synchronized="false"
   8066       static="true" final="false" visibility="public"
   8067       deprecated="not deprecated">
   8068       <param name="elements" type="java.lang.Iterable&lt;? extends com.google.inject.spi.Element&gt;"/>
   8069       <doc>
   8070       <![CDATA[Returns the module composed of {@code elements}.]]>
   8071       </doc>
   8072     </method>
   8073     <doc>
   8074     <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link
   8075  Element#applyTo(Binder) rewritten}.
   8076 
   8077  @author jessewilson (a] google.com (Jesse Wilson)
   8078  @since 2.0]]>
   8079     </doc>
   8080   </class>
   8081   <!-- end class com.google.inject.spi.Elements -->
   8082   <!-- start class com.google.inject.spi.ElementSource -->
   8083   <class name="ElementSource" extends="java.lang.Object"
   8084     abstract="false"
   8085     static="false" final="true" visibility="public"
   8086     deprecated="not deprecated">
   8087     <method name="getOriginalElementSource" return="com.google.inject.spi.ElementSource"
   8088       abstract="false" native="false" synchronized="false"
   8089       static="false" final="false" visibility="public"
   8090       deprecated="not deprecated">
   8091       <doc>
   8092       <![CDATA[Returns the {@link ElementSource} of the element this was created or copied from. If this was
   8093  not created or copied from another element, returns {@code null}.]]>
   8094       </doc>
   8095     </method>
   8096     <method name="getDeclaringSource" return="java.lang.Object"
   8097       abstract="false" native="false" synchronized="false"
   8098       static="false" final="false" visibility="public"
   8099       deprecated="not deprecated">
   8100       <doc>
   8101       <![CDATA[Returns a single location in source code that defines the element. It can be any object
   8102  such as {@link Constructor}, {@link Method}, {@link Field}, {@link StackTraceElement}, etc. For
   8103  example, if the element is created from a method annotated by {@literal @Provides}, the 
   8104  declaring source of element would be the method itself.]]>
   8105       </doc>
   8106     </method>
   8107     <method name="getModuleClassNames" return="java.util.List&lt;java.lang.String&gt;"
   8108       abstract="false" native="false" synchronized="false"
   8109       static="false" final="false" visibility="public"
   8110       deprecated="not deprecated">
   8111       <doc>
   8112       <![CDATA[Returns the class names of modules involved in creating this {@link Element}. The first
   8113  element (index 0) is the class name of module that defined the element, and the last element
   8114  is the class name of root module.]]>
   8115       </doc>
   8116     </method>
   8117     <method name="getModuleConfigurePositionsInStackTrace" return="java.util.List&lt;java.lang.Integer&gt;"
   8118       abstract="false" native="false" synchronized="false"
   8119       static="false" final="false" visibility="public"
   8120       deprecated="not deprecated">
   8121       <doc>
   8122       <![CDATA[Returns the position of {@link Module#configure(Binder) configure(Binder)} method call in the
   8123  {@link #getStackTrace() stack trace} for modules that their classes returned by
   8124  {@link #getModuleClassNames()}. For example, if the stack trace looks like the following:
   8125  <p>
   8126  {@code
   8127   0 - Binder.bind(),
   8128   1 - ModuleTwo.configure(),
   8129   2 - Binder.install(),
   8130   3 - ModuleOne.configure(),
   8131   4 - theRest(). 
   8132  }
   8133  <p>
   8134  1 and 3 are returned.
   8135  <p>
   8136  In the cases where stack trace is not available (i.e., the stack trace was not collected),
   8137  it returns -1 for all module positions.]]>
   8138       </doc>
   8139     </method>
   8140     <method name="getStackTrace" return="java.lang.StackTraceElement[]"
   8141       abstract="false" native="false" synchronized="false"
   8142       static="false" final="false" visibility="public"
   8143       deprecated="not deprecated">
   8144       <doc>
   8145       <![CDATA[Returns the sequence of method calls that ends at one of {@link Binder} {@code bindXXX()} 
   8146  methods and eventually defines the element. Note that {@link #getStackTrace()} lists {@link 
   8147  StackTraceElement StackTraceElements} in reverse chronological order. The first element (index 
   8148  zero) is the last method call and the last element is the first method invocation. In the cases
   8149  where stack trace is not available (i.e.,the stack trace was not collected), it returns an 
   8150  empty array.]]>
   8151       </doc>
   8152     </method>
   8153     <method name="toString" return="java.lang.String"
   8154       abstract="false" native="false" synchronized="false"
   8155       static="false" final="false" visibility="public"
   8156       deprecated="not deprecated">
   8157       <doc>
   8158       <![CDATA[Returns {@code getDeclaringSource().toString()} value.]]>
   8159       </doc>
   8160     </method>
   8161     <doc>
   8162     <![CDATA[Contains information about where and how an {@link Element element} was bound.
   8163  <p> 
   8164  The {@link #getDeclaringSource() declaring source} refers to a location in source code that 
   8165  defines the Guice {@link Element element}. For example, if the element is created from a method
   8166  annotated by {@literal @Provides}, the declaring source of element would be the method itself. 
   8167  <p>
   8168  The {@link #getStackTrace()} refers to the sequence of calls ends at one of {@link Binder} 
   8169  {@code bindXXX()} methods and eventually defines the element. Note that {@link #getStackTrace()} 
   8170  lists {@link StackTraceElement StackTraceElements} in reverse chronological order. The first 
   8171  element (index zero) is the last method call and the last element is the first method invocation.
   8172  By default, the stack trace is not collected. The default behavior can be changed by setting the 
   8173  {@code guice_include_stack_traces} flag value. The value can be either {@code OFF}, {@code
   8174  ONLY_FOR_DECLARING_SOURCE} or {@code COMPLETE}. Note that collecting stack traces for every
   8175  binding can cause a performance hit when the injector is created.
   8176  <p>
   8177  The sequence of class names of {@link Module modules} involved in the element creation can be 
   8178  retrieved by {@link #getModuleClassNames()}. Similar to {@link #getStackTrace()}, the order is 
   8179  reverse chronological. The first module (index 0) is the module that installs the {@link Element 
   8180  element}. The last module is the root module.
   8181  <p>
   8182  In order to support the cases where a Guice {@link Element element} is created from another
   8183  Guice {@link Element element} (original) (e.g., by {@link Element#applyTo()}), it also
   8184  provides a reference to the original element source ({@link #getOriginalElementSource()}).]]>
   8185     </doc>
   8186   </class>
   8187   <!-- end class com.google.inject.spi.ElementSource -->
   8188   <!-- start interface com.google.inject.spi.ElementVisitor -->
   8189   <interface name="ElementVisitor"    abstract="true"
   8190     static="false" final="false" visibility="public"
   8191     deprecated="not deprecated">
   8192     <method name="visit" return="V"
   8193       abstract="true" native="false" synchronized="false"
   8194       static="false" final="false" visibility="public"
   8195       deprecated="not deprecated">
   8196       <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
   8197       <doc>
   8198       <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting
   8199  instances of the type.]]>
   8200       </doc>
   8201     </method>
   8202     <method name="visit" return="V"
   8203       abstract="true" native="false" synchronized="false"
   8204       static="false" final="false" visibility="public"
   8205       deprecated="not deprecated">
   8206       <param name="binding" type="com.google.inject.spi.InterceptorBinding"/>
   8207       <doc>
   8208       <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]>
   8209       </doc>
   8210     </method>
   8211     <method name="visit" return="V"
   8212       abstract="true" native="false" synchronized="false"
   8213       static="false" final="false" visibility="public"
   8214       deprecated="not deprecated">
   8215       <param name="binding" type="com.google.inject.spi.ScopeBinding"/>
   8216       <doc>
   8217       <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]>
   8218       </doc>
   8219     </method>
   8220     <method name="visit" return="V"
   8221       abstract="true" native="false" synchronized="false"
   8222       static="false" final="false" visibility="public"
   8223       deprecated="not deprecated">
   8224       <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/>
   8225       <doc>
   8226       <![CDATA[Visit a registration of type converters for matching target types.]]>
   8227       </doc>
   8228     </method>
   8229     <method name="visit" return="V"
   8230       abstract="true" native="false" synchronized="false"
   8231       static="false" final="false" visibility="public"
   8232       deprecated="not deprecated">
   8233       <param name="request" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
   8234       <doc>
   8235       <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]>
   8236       </doc>
   8237     </method>
   8238     <method name="visit" return="V"
   8239       abstract="true" native="false" synchronized="false"
   8240       static="false" final="false" visibility="public"
   8241       deprecated="not deprecated">
   8242       <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/>
   8243       <doc>
   8244       <![CDATA[Visit a request to inject the static fields and methods of type.]]>
   8245       </doc>
   8246     </method>
   8247     <method name="visit" return="V"
   8248       abstract="true" native="false" synchronized="false"
   8249       static="false" final="false" visibility="public"
   8250       deprecated="not deprecated">
   8251       <param name="lookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
   8252       <doc>
   8253       <![CDATA[Visit a lookup of the provider for a type.]]>
   8254       </doc>
   8255     </method>
   8256     <method name="visit" return="V"
   8257       abstract="true" native="false" synchronized="false"
   8258       static="false" final="false" visibility="public"
   8259       deprecated="not deprecated">
   8260       <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
   8261       <doc>
   8262       <![CDATA[Visit a lookup of the members injector.]]>
   8263       </doc>
   8264     </method>
   8265     <method name="visit" return="V"
   8266       abstract="true" native="false" synchronized="false"
   8267       static="false" final="false" visibility="public"
   8268       deprecated="not deprecated">
   8269       <param name="message" type="com.google.inject.spi.Message"/>
   8270       <doc>
   8271       <![CDATA[Visit an error message and the context in which it occured.]]>
   8272       </doc>
   8273     </method>
   8274     <method name="visit" return="V"
   8275       abstract="true" native="false" synchronized="false"
   8276       static="false" final="false" visibility="public"
   8277       deprecated="not deprecated">
   8278       <param name="elements" type="com.google.inject.spi.PrivateElements"/>
   8279       <doc>
   8280       <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder
   8281  private binder}.]]>
   8282       </doc>
   8283     </method>
   8284     <method name="visit" return="V"
   8285       abstract="true" native="false" synchronized="false"
   8286       static="false" final="false" visibility="public"
   8287       deprecated="not deprecated">
   8288       <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
   8289       <doc>
   8290       <![CDATA[Visit an injectable type listener binding.]]>
   8291       </doc>
   8292     </method>
   8293     <method name="visit" return="V"
   8294       abstract="true" native="false" synchronized="false"
   8295       static="false" final="false" visibility="public"
   8296       deprecated="not deprecated">
   8297       <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/>
   8298       <doc>
   8299       <![CDATA[Visit a provision listener binding.]]>
   8300       </doc>
   8301     </method>
   8302     <method name="visit" return="V"
   8303       abstract="true" native="false" synchronized="false"
   8304       static="false" final="false" visibility="public"
   8305       deprecated="not deprecated">
   8306       <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
   8307       <doc>
   8308       <![CDATA[Visit a require explicit bindings command.
   8309  
   8310  @since 3.0]]>
   8311       </doc>
   8312     </method>
   8313     <method name="visit" return="V"
   8314       abstract="true" native="false" synchronized="false"
   8315       static="false" final="false" visibility="public"
   8316       deprecated="not deprecated">
   8317       <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
   8318       <doc>
   8319       <![CDATA[Visit a disable circular proxies command.
   8320  
   8321  @since 3.0]]>
   8322       </doc>
   8323     </method>
   8324     <method name="visit" return="V"
   8325       abstract="true" native="false" synchronized="false"
   8326       static="false" final="false" visibility="public"
   8327       deprecated="not deprecated">
   8328       <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/>
   8329       <doc>
   8330       <![CDATA[Visit a require explicit {@literal @}{@link Inject} command.
   8331  
   8332  @since 4.0]]>
   8333       </doc>
   8334     </method>
   8335     <method name="visit" return="V"
   8336       abstract="true" native="false" synchronized="false"
   8337       static="false" final="false" visibility="public"
   8338       deprecated="not deprecated">
   8339       <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/>
   8340       <doc>
   8341       <![CDATA[Visit a require exact binding annotations command.
   8342 
   8343  @since 4.0]]>
   8344       </doc>
   8345     </method>
   8346     <doc>
   8347     <![CDATA[Visit elements.
   8348 
   8349  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8350      {@code return null} if no return type is needed.
   8351  
   8352  @since 2.0]]>
   8353     </doc>
   8354   </interface>
   8355   <!-- end interface com.google.inject.spi.ElementVisitor -->
   8356   <!-- start interface com.google.inject.spi.ExposedBinding -->
   8357   <interface name="ExposedBinding"    abstract="true"
   8358     static="false" final="false" visibility="public"
   8359     deprecated="not deprecated">
   8360     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8361     <implements name="com.google.inject.spi.HasDependencies"/>
   8362     <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements"
   8363       abstract="true" native="false" synchronized="false"
   8364       static="false" final="false" visibility="public"
   8365       deprecated="not deprecated">
   8366       <doc>
   8367       <![CDATA[Returns the enclosed environment that holds the original binding.]]>
   8368       </doc>
   8369     </method>
   8370     <method name="applyTo"
   8371       abstract="true" native="false" synchronized="false"
   8372       static="false" final="false" visibility="public"
   8373       deprecated="not deprecated">
   8374       <param name="binder" type="com.google.inject.Binder"/>
   8375       <doc>
   8376       <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]>
   8377       </doc>
   8378     </method>
   8379     <doc>
   8380     <![CDATA[A binding to a key exposed from an enclosed private environment.
   8381 
   8382  @author jessewilson (a] google.com (Jesse Wilson)
   8383  @since 2.0]]>
   8384     </doc>
   8385   </interface>
   8386   <!-- end interface com.google.inject.spi.ExposedBinding -->
   8387   <!-- start interface com.google.inject.spi.HasDependencies -->
   8388   <interface name="HasDependencies"    abstract="true"
   8389     static="false" final="false" visibility="public"
   8390     deprecated="not deprecated">
   8391     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   8392       abstract="true" native="false" synchronized="false"
   8393       static="false" final="false" visibility="public"
   8394       deprecated="not deprecated">
   8395       <doc>
   8396       <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not
   8397  known statically, a dependency for the {@link com.google.inject.Injector Injector} will be
   8398  included in the returned set.
   8399  
   8400  @return a possibly empty set]]>
   8401       </doc>
   8402     </method>
   8403     <doc>
   8404     <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider
   8405  providers} and instances that expose their dependencies explicitly.
   8406 
   8407  @author jessewilson (a] google.com (Jesse Wilson)
   8408  @since 2.0]]>
   8409     </doc>
   8410   </interface>
   8411   <!-- end interface com.google.inject.spi.HasDependencies -->
   8412   <!-- start interface com.google.inject.spi.InjectionListener -->
   8413   <interface name="InjectionListener"    abstract="true"
   8414     static="false" final="false" visibility="public"
   8415     deprecated="not deprecated">
   8416     <method name="afterInjection"
   8417       abstract="true" native="false" synchronized="false"
   8418       static="false" final="false" visibility="public"
   8419       deprecated="not deprecated">
   8420       <param name="injectee" type="I"/>
   8421       <doc>
   8422       <![CDATA[Invoked by Guice after it injects the fields and methods of instance.
   8423 
   8424  @param injectee instance that Guice injected dependencies into]]>
   8425       </doc>
   8426     </method>
   8427     <doc>
   8428     <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further
   8429  injections, post-injection initialization, and more.
   8430 
   8431  @author crazybob (a] google.com (Bob Lee)
   8432  @author jessewilson (a] google.com (Jesse Wilson)
   8433  @since 2.0]]>
   8434     </doc>
   8435   </interface>
   8436   <!-- end interface com.google.inject.spi.InjectionListener -->
   8437   <!-- start class com.google.inject.spi.InjectionPoint -->
   8438   <class name="InjectionPoint" extends="java.lang.Object"
   8439     abstract="false"
   8440     static="false" final="true" visibility="public"
   8441     deprecated="not deprecated">
   8442     <method name="getMember" return="java.lang.reflect.Member"
   8443       abstract="false" native="false" synchronized="false"
   8444       static="false" final="false" visibility="public"
   8445       deprecated="not deprecated">
   8446       <doc>
   8447       <![CDATA[Returns the injected constructor, field, or method.]]>
   8448       </doc>
   8449     </method>
   8450     <method name="getDependencies" return="java.util.List&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   8451       abstract="false" native="false" synchronized="false"
   8452       static="false" final="false" visibility="public"
   8453       deprecated="not deprecated">
   8454       <doc>
   8455       <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or
   8456  constructor, the dependencies will correspond to that member's parameters. Field injection
   8457  points always have a single dependency for the field itself.
   8458 
   8459  @return a possibly-empty list]]>
   8460       </doc>
   8461     </method>
   8462     <method name="isOptional" return="boolean"
   8463       abstract="false" native="false" synchronized="false"
   8464       static="false" final="false" visibility="public"
   8465       deprecated="not deprecated">
   8466       <doc>
   8467       <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings
   8468  for all required dependencies. Both explicit bindings (as specified in a module), and implicit
   8469  bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default
   8470  constructors etc.) may be used to satisfy optional injection points.]]>
   8471       </doc>
   8472     </method>
   8473     <method name="isToolable" return="boolean"
   8474       abstract="false" native="false" synchronized="false"
   8475       static="false" final="false" visibility="public"
   8476       deprecated="not deprecated">
   8477       <doc>
   8478       <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}.
   8479  
   8480  @since 3.0]]>
   8481       </doc>
   8482     </method>
   8483     <method name="getDeclaringType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   8484       abstract="false" native="false" synchronized="false"
   8485       static="false" final="false" visibility="public"
   8486       deprecated="not deprecated">
   8487       <doc>
   8488       <![CDATA[Returns the generic type that defines this injection point. If the member exists on a
   8489  parameterized type, the result will include more type information than the member's {@link
   8490  Member#getDeclaringClass() raw declaring class}.
   8491  
   8492  @since 3.0]]>
   8493       </doc>
   8494     </method>
   8495     <method name="equals" return="boolean"
   8496       abstract="false" native="false" synchronized="false"
   8497       static="false" final="false" visibility="public"
   8498       deprecated="not deprecated">
   8499       <param name="o" type="java.lang.Object"/>
   8500     </method>
   8501     <method name="hashCode" return="int"
   8502       abstract="false" native="false" synchronized="false"
   8503       static="false" final="false" visibility="public"
   8504       deprecated="not deprecated">
   8505     </method>
   8506     <method name="toString" return="java.lang.String"
   8507       abstract="false" native="false" synchronized="false"
   8508       static="false" final="false" visibility="public"
   8509       deprecated="not deprecated">
   8510     </method>
   8511     <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
   8512       abstract="false" native="false" synchronized="false"
   8513       static="true" final="false" visibility="public"
   8514       deprecated="not deprecated">
   8515       <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
   8516       <doc>
   8517       <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code
   8518  constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a
   8519  type literal.
   8520 
   8521  @param constructor any single constructor present on {@code type}.
   8522  
   8523  @since 3.0]]>
   8524       </doc>
   8525     </method>
   8526     <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
   8527       abstract="false" native="false" synchronized="false"
   8528       static="true" final="false" visibility="public"
   8529       deprecated="not deprecated">
   8530       <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
   8531       <param name="type" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   8532       <doc>
   8533       <![CDATA[Returns a new injection point for the specified constructor of {@code type}.
   8534 
   8535  @param constructor any single constructor present on {@code type}.
   8536  @param type the concrete type that defines {@code constructor}.
   8537  
   8538  @since 3.0]]>
   8539       </doc>
   8540     </method>
   8541     <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
   8542       abstract="false" native="false" synchronized="false"
   8543       static="true" final="false" visibility="public"
   8544       deprecated="not deprecated">
   8545       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   8546       <doc>
   8547       <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
   8548 
   8549  @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
   8550      or a no-arguments constructor that is not private.
   8551  @throws ConfigurationException if there is no injectable constructor, more than one injectable
   8552      constructor, or if parameters of the injectable constructor are malformed, such as a
   8553      parameter with multiple binding annotations.]]>
   8554       </doc>
   8555     </method>
   8556     <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
   8557       abstract="false" native="false" synchronized="false"
   8558       static="true" final="false" visibility="public"
   8559       deprecated="not deprecated">
   8560       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   8561       <doc>
   8562       <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
   8563 
   8564  @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
   8565      or a no-arguments constructor that is not private.
   8566  @throws ConfigurationException if there is no injectable constructor, more than one injectable
   8567      constructor, or if parameters of the injectable constructor are malformed, such as a
   8568      parameter with multiple binding annotations.]]>
   8569       </doc>
   8570     </method>
   8571     <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8572       abstract="false" native="false" synchronized="false"
   8573       static="true" final="false" visibility="public"
   8574       deprecated="not deprecated">
   8575       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   8576       <doc>
   8577       <![CDATA[Returns all static method and field injection points on {@code type}.
   8578 
   8579  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8580       fields are returned and then all methods. Within the fields, supertype fields are returned
   8581       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8582  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   8583       a field with multiple binding annotations. The exception's {@link
   8584       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8585       of the valid injection points.]]>
   8586       </doc>
   8587     </method>
   8588     <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8589       abstract="false" native="false" synchronized="false"
   8590       static="true" final="false" visibility="public"
   8591       deprecated="not deprecated">
   8592       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   8593       <doc>
   8594       <![CDATA[Returns all static method and field injection points on {@code type}.
   8595 
   8596  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8597       fields are returned and then all methods. Within the fields, supertype fields are returned
   8598       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8599  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   8600       a field with multiple binding annotations. The exception's {@link
   8601       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8602       of the valid injection points.]]>
   8603       </doc>
   8604     </method>
   8605     <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8606       abstract="false" native="false" synchronized="false"
   8607       static="true" final="false" visibility="public"
   8608       deprecated="not deprecated">
   8609       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   8610       <doc>
   8611       <![CDATA[Returns all instance method and field injection points on {@code type}.
   8612 
   8613  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8614       fields are returned and then all methods. Within the fields, supertype fields are returned
   8615       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8616  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   8617       a field with multiple binding annotations. The exception's {@link
   8618       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8619       of the valid injection points.]]>
   8620       </doc>
   8621     </method>
   8622     <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8623       abstract="false" native="false" synchronized="false"
   8624       static="true" final="false" visibility="public"
   8625       deprecated="not deprecated">
   8626       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   8627       <doc>
   8628       <![CDATA[Returns all instance method and field injection points on {@code type}.
   8629 
   8630  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8631       fields are returned and then all methods. Within the fields, supertype fields are returned
   8632       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8633  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   8634       a field with multiple binding annotations. The exception's {@link
   8635       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8636       of the valid injection points.]]>
   8637       </doc>
   8638     </method>
   8639     <doc>
   8640     <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the
   8641  {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may
   8642  omit the annotation.
   8643 
   8644  @author crazybob (a] google.com (Bob Lee)
   8645  @since 2.0]]>
   8646     </doc>
   8647   </class>
   8648   <!-- end class com.google.inject.spi.InjectionPoint -->
   8649   <!-- start class com.google.inject.spi.InjectionRequest -->
   8650   <class name="InjectionRequest" extends="java.lang.Object"
   8651     abstract="false"
   8652     static="false" final="true" visibility="public"
   8653     deprecated="not deprecated">
   8654     <implements name="com.google.inject.spi.Element"/>
   8655     <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;, T"
   8656       static="false" final="false" visibility="public"
   8657       deprecated="not deprecated">
   8658     </constructor>
   8659     <method name="getSource" return="java.lang.Object"
   8660       abstract="false" native="false" synchronized="false"
   8661       static="false" final="false" visibility="public"
   8662       deprecated="not deprecated">
   8663     </method>
   8664     <method name="getInstance" return="T"
   8665       abstract="false" native="false" synchronized="false"
   8666       static="false" final="false" visibility="public"
   8667       deprecated="not deprecated">
   8668     </method>
   8669     <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
   8670       abstract="false" native="false" synchronized="false"
   8671       static="false" final="false" visibility="public"
   8672       deprecated="not deprecated">
   8673     </method>
   8674     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8675       abstract="false" native="false" synchronized="false"
   8676       static="false" final="false" visibility="public"
   8677       deprecated="not deprecated">
   8678       <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
   8679       <doc>
   8680       <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill
   8681  this request.
   8682 
   8683  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8684       fields are returned and then all methods. Within the fields, supertype fields are returned
   8685       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8686  @throws ConfigurationException if there is a malformed injection point on the class of {@code
   8687       instance}, such as a field with multiple binding annotations. The exception's {@link
   8688       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8689       of the valid injection points.]]>
   8690       </doc>
   8691     </method>
   8692     <method name="acceptVisitor" return="R"
   8693       abstract="false" native="false" synchronized="false"
   8694       static="false" final="false" visibility="public"
   8695       deprecated="not deprecated">
   8696       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
   8697     </method>
   8698     <method name="applyTo"
   8699       abstract="false" native="false" synchronized="false"
   8700       static="false" final="false" visibility="public"
   8701       deprecated="not deprecated">
   8702       <param name="binder" type="com.google.inject.Binder"/>
   8703     </method>
   8704     <doc>
   8705     <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created
   8706  explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object)
   8707  requestInjection()} statements:
   8708  <pre>
   8709      requestInjection(serviceInstance);</pre>
   8710 
   8711  @author mikeward (a] google.com (Mike Ward)
   8712  @since 2.0]]>
   8713     </doc>
   8714   </class>
   8715   <!-- end class com.google.inject.spi.InjectionRequest -->
   8716   <!-- start interface com.google.inject.spi.InstanceBinding -->
   8717   <interface name="InstanceBinding"    abstract="true"
   8718     static="false" final="false" visibility="public"
   8719     deprecated="not deprecated">
   8720     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8721     <implements name="com.google.inject.spi.HasDependencies"/>
   8722     <method name="getInstance" return="T"
   8723       abstract="true" native="false" synchronized="false"
   8724       static="false" final="false" visibility="public"
   8725       deprecated="not deprecated">
   8726       <doc>
   8727       <![CDATA[Returns the user-supplied instance.]]>
   8728       </doc>
   8729     </method>
   8730     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8731       abstract="true" native="false" synchronized="false"
   8732       static="false" final="false" visibility="public"
   8733       deprecated="not deprecated">
   8734       <doc>
   8735       <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation
   8736  time only.
   8737 
   8738  @return a possibly empty set]]>
   8739       </doc>
   8740     </method>
   8741     <doc>
   8742     <![CDATA[A binding to a single instance. The same instance is returned for every injection.
   8743 
   8744  @author jessewilson (a] google.com (Jesse Wilson)
   8745  @since 2.0]]>
   8746     </doc>
   8747   </interface>
   8748   <!-- end interface com.google.inject.spi.InstanceBinding -->
   8749   <!-- start class com.google.inject.spi.InterceptorBinding -->
   8750   <class name="InterceptorBinding" extends="java.lang.Object"
   8751     abstract="false"
   8752     static="false" final="true" visibility="public"
   8753     deprecated="not deprecated">
   8754     <implements name="com.google.inject.spi.Element"/>
   8755     <method name="getSource" return="java.lang.Object"
   8756       abstract="false" native="false" synchronized="false"
   8757       static="false" final="false" visibility="public"
   8758       deprecated="not deprecated">
   8759     </method>
   8760     <method name="getClassMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"
   8761       abstract="false" native="false" synchronized="false"
   8762       static="false" final="false" visibility="public"
   8763       deprecated="not deprecated">
   8764     </method>
   8765     <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"
   8766       abstract="false" native="false" synchronized="false"
   8767       static="false" final="false" visibility="public"
   8768       deprecated="not deprecated">
   8769     </method>
   8770     <method name="getInterceptors" return="java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;"
   8771       abstract="false" native="false" synchronized="false"
   8772       static="false" final="false" visibility="public"
   8773       deprecated="not deprecated">
   8774     </method>
   8775     <method name="acceptVisitor" return="T"
   8776       abstract="false" native="false" synchronized="false"
   8777       static="false" final="false" visibility="public"
   8778       deprecated="not deprecated">
   8779       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8780     </method>
   8781     <method name="applyTo"
   8782       abstract="false" native="false" synchronized="false"
   8783       static="false" final="false" visibility="public"
   8784       deprecated="not deprecated">
   8785       <param name="binder" type="com.google.inject.Binder"/>
   8786     </method>
   8787     <doc>
   8788     <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created
   8789  explicitly in a module using {@link com.google.inject.Binder#bindInterceptor(
   8790  Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements:
   8791  <pre>
   8792      bindInterceptor(Matchers.subclassesOf(MyAction.class),
   8793          Matchers.annotatedWith(Transactional.class),
   8794          new MyTransactionInterceptor());</pre>
   8795 
   8796  or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher,
   8797  org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}.
   8798 
   8799  @author jessewilson (a] google.com (Jesse Wilson)
   8800  @since 2.0]]>
   8801     </doc>
   8802   </class>
   8803   <!-- end class com.google.inject.spi.InterceptorBinding -->
   8804   <!-- start interface com.google.inject.spi.LinkedKeyBinding -->
   8805   <interface name="LinkedKeyBinding"    abstract="true"
   8806     static="false" final="false" visibility="public"
   8807     deprecated="not deprecated">
   8808     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8809     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends T&gt;"
   8810       abstract="true" native="false" synchronized="false"
   8811       static="false" final="false" visibility="public"
   8812       deprecated="not deprecated">
   8813       <doc>
   8814       <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an
   8815  injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
   8816       </doc>
   8817     </method>
   8818     <doc>
   8819     <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections.
   8820 
   8821  @author jessewilson (a] google.com (Jesse Wilson)
   8822  @since 2.0]]>
   8823     </doc>
   8824   </interface>
   8825   <!-- end interface com.google.inject.spi.LinkedKeyBinding -->
   8826   <!-- start class com.google.inject.spi.MembersInjectorLookup -->
   8827   <class name="MembersInjectorLookup" extends="java.lang.Object"
   8828     abstract="false"
   8829     static="false" final="true" visibility="public"
   8830     deprecated="not deprecated">
   8831     <implements name="com.google.inject.spi.Element"/>
   8832     <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;"
   8833       static="false" final="false" visibility="public"
   8834       deprecated="not deprecated">
   8835     </constructor>
   8836     <method name="getSource" return="java.lang.Object"
   8837       abstract="false" native="false" synchronized="false"
   8838       static="false" final="false" visibility="public"
   8839       deprecated="not deprecated">
   8840     </method>
   8841     <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
   8842       abstract="false" native="false" synchronized="false"
   8843       static="false" final="false" visibility="public"
   8844       deprecated="not deprecated">
   8845       <doc>
   8846       <![CDATA[Gets the type containing the members to be injected.]]>
   8847       </doc>
   8848     </method>
   8849     <method name="acceptVisitor" return="T"
   8850       abstract="false" native="false" synchronized="false"
   8851       static="false" final="false" visibility="public"
   8852       deprecated="not deprecated">
   8853       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8854     </method>
   8855     <method name="initializeDelegate"
   8856       abstract="false" native="false" synchronized="false"
   8857       static="false" final="false" visibility="public"
   8858       deprecated="not deprecated">
   8859       <param name="delegate" type="com.google.inject.MembersInjector&lt;T&gt;"/>
   8860       <doc>
   8861       <![CDATA[Sets the actual members injector.
   8862 
   8863  @throws IllegalStateException if the delegate is already set]]>
   8864       </doc>
   8865     </method>
   8866     <method name="applyTo"
   8867       abstract="false" native="false" synchronized="false"
   8868       static="false" final="false" visibility="public"
   8869       deprecated="not deprecated">
   8870       <param name="binder" type="com.google.inject.Binder"/>
   8871     </method>
   8872     <method name="getDelegate" return="com.google.inject.MembersInjector&lt;T&gt;"
   8873       abstract="false" native="false" synchronized="false"
   8874       static="false" final="false" visibility="public"
   8875       deprecated="not deprecated">
   8876       <doc>
   8877       <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized.
   8878  The delegate will be initialized when this element is processed, or otherwise used to create
   8879  an injector.]]>
   8880       </doc>
   8881     </method>
   8882     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   8883       abstract="false" native="false" synchronized="false"
   8884       static="false" final="false" visibility="public"
   8885       deprecated="not deprecated">
   8886       <doc>
   8887       <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been
   8888  initialized, which usually happens when the injector is created. The members injector will
   8889  throw an {@code IllegalStateException} if you try to use it beforehand.]]>
   8890       </doc>
   8891     </method>
   8892     <doc>
   8893     <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using
   8894  {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements:
   8895  <pre>
   8896      MembersInjector&lt;PaymentService&gt; membersInjector
   8897          = getMembersInjector(PaymentService.class);</pre>
   8898 
   8899  @author crazybob (a] google.com (Bob Lee)
   8900  @since 2.0]]>
   8901     </doc>
   8902   </class>
   8903   <!-- end class com.google.inject.spi.MembersInjectorLookup -->
   8904   <!-- start class com.google.inject.spi.Message -->
   8905   <class name="Message" extends="java.lang.Object"
   8906     abstract="false"
   8907     static="false" final="true" visibility="public"
   8908     deprecated="not deprecated">
   8909     <implements name="java.io.Serializable"/>
   8910     <implements name="com.google.inject.spi.Element"/>
   8911     <constructor name="Message" type="java.util.List&lt;java.lang.Object&gt;, java.lang.String, java.lang.Throwable"
   8912       static="false" final="false" visibility="public"
   8913       deprecated="not deprecated">
   8914       <doc>
   8915       <![CDATA[@since 2.0]]>
   8916       </doc>
   8917     </constructor>
   8918     <constructor name="Message" type="java.lang.String, java.lang.Throwable"
   8919       static="false" final="false" visibility="public"
   8920       deprecated="not deprecated">
   8921       <doc>
   8922       <![CDATA[@since 4.0]]>
   8923       </doc>
   8924     </constructor>
   8925     <constructor name="Message" type="java.lang.Object, java.lang.String"
   8926       static="false" final="false" visibility="public"
   8927       deprecated="not deprecated">
   8928     </constructor>
   8929     <constructor name="Message" type="java.lang.String"
   8930       static="false" final="false" visibility="public"
   8931       deprecated="not deprecated">
   8932     </constructor>
   8933     <method name="getSource" return="java.lang.String"
   8934       abstract="false" native="false" synchronized="false"
   8935       static="false" final="false" visibility="public"
   8936       deprecated="not deprecated">
   8937     </method>
   8938     <method name="getSources" return="java.util.List&lt;java.lang.Object&gt;"
   8939       abstract="false" native="false" synchronized="false"
   8940       static="false" final="false" visibility="public"
   8941       deprecated="not deprecated">
   8942       <doc>
   8943       <![CDATA[@since 2.0]]>
   8944       </doc>
   8945     </method>
   8946     <method name="getMessage" return="java.lang.String"
   8947       abstract="false" native="false" synchronized="false"
   8948       static="false" final="false" visibility="public"
   8949       deprecated="not deprecated">
   8950       <doc>
   8951       <![CDATA[Gets the error message text.]]>
   8952       </doc>
   8953     </method>
   8954     <method name="acceptVisitor" return="T"
   8955       abstract="false" native="false" synchronized="false"
   8956       static="false" final="false" visibility="public"
   8957       deprecated="not deprecated">
   8958       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8959       <doc>
   8960       <![CDATA[@since 2.0]]>
   8961       </doc>
   8962     </method>
   8963     <method name="getCause" return="java.lang.Throwable"
   8964       abstract="false" native="false" synchronized="false"
   8965       static="false" final="false" visibility="public"
   8966       deprecated="not deprecated">
   8967       <doc>
   8968       <![CDATA[Returns the throwable that caused this message, or {@code null} if this
   8969  message was not caused by a throwable.
   8970 
   8971  @since 2.0]]>
   8972       </doc>
   8973     </method>
   8974     <method name="toString" return="java.lang.String"
   8975       abstract="false" native="false" synchronized="false"
   8976       static="false" final="false" visibility="public"
   8977       deprecated="not deprecated">
   8978     </method>
   8979     <method name="hashCode" return="int"
   8980       abstract="false" native="false" synchronized="false"
   8981       static="false" final="false" visibility="public"
   8982       deprecated="not deprecated">
   8983     </method>
   8984     <method name="equals" return="boolean"
   8985       abstract="false" native="false" synchronized="false"
   8986       static="false" final="false" visibility="public"
   8987       deprecated="not deprecated">
   8988       <param name="o" type="java.lang.Object"/>
   8989     </method>
   8990     <method name="applyTo"
   8991       abstract="false" native="false" synchronized="false"
   8992       static="false" final="false" visibility="public"
   8993       deprecated="not deprecated">
   8994       <param name="binder" type="com.google.inject.Binder"/>
   8995       <doc>
   8996       <![CDATA[@since 2.0]]>
   8997       </doc>
   8998     </method>
   8999     <doc>
   9000     <![CDATA[An error message and the context in which it occured. Messages are usually created internally by
   9001  Guice and its extensions. Messages can be created explicitly in a module using {@link
   9002  com.google.inject.Binder#addError(Throwable) addError()} statements:
   9003  <pre>
   9004      try {
   9005        bindPropertiesFromFile();
   9006      } catch (IOException e) {
   9007        addError(e);
   9008      }</pre>
   9009 
   9010  @author crazybob (a] google.com (Bob Lee)]]>
   9011     </doc>
   9012   </class>
   9013   <!-- end class com.google.inject.spi.Message -->
   9014   <!-- start interface com.google.inject.spi.PrivateElements -->
   9015   <interface name="PrivateElements"    abstract="true"
   9016     static="false" final="false" visibility="public"
   9017     deprecated="not deprecated">
   9018     <implements name="com.google.inject.spi.Element"/>
   9019     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   9020       abstract="true" native="false" synchronized="false"
   9021       static="false" final="false" visibility="public"
   9022       deprecated="not deprecated">
   9023       <doc>
   9024       <![CDATA[Returns the configuration information in this private environment.]]>
   9025       </doc>
   9026     </method>
   9027     <method name="getInjector" return="com.google.inject.Injector"
   9028       abstract="true" native="false" synchronized="false"
   9029       static="false" final="false" visibility="public"
   9030       deprecated="not deprecated">
   9031       <doc>
   9032       <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't
   9033  been used to create an injector.]]>
   9034       </doc>
   9035     </method>
   9036     <method name="getExposedKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   9037       abstract="true" native="false" synchronized="false"
   9038       static="false" final="false" visibility="public"
   9039       deprecated="not deprecated">
   9040       <doc>
   9041       <![CDATA[Returns the unique exposed keys for these private elements.]]>
   9042       </doc>
   9043     </method>
   9044     <method name="getExposedSource" return="java.lang.Object"
   9045       abstract="true" native="false" synchronized="false"
   9046       static="false" final="false" visibility="public"
   9047       deprecated="not deprecated">
   9048       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   9049       <doc>
   9050       <![CDATA[Returns an arbitrary object containing information about the "place" where this key was
   9051  exposed. Used by Guice in the production of descriptive error messages.
   9052 
   9053  <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
   9054  example. Tools should simply call {@code toString()} on the source object if the type is
   9055  unfamiliar.
   9056 
   9057  @param key one of the keys exposed by this module.]]>
   9058       </doc>
   9059     </method>
   9060     <doc>
   9061     <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by
   9062  default. See {@link com.google.inject.PrivateModule PrivateModule} for details.
   9063 
   9064  @author jessewilson (a] google.com (Jesse Wilson)
   9065  @since 2.0]]>
   9066     </doc>
   9067   </interface>
   9068   <!-- end interface com.google.inject.spi.PrivateElements -->
   9069   <!-- start interface com.google.inject.spi.ProviderBinding -->
   9070   <interface name="ProviderBinding"    abstract="true"
   9071     static="false" final="false" visibility="public"
   9072     deprecated="not deprecated">
   9073     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9074     <method name="getProvidedKey" return="com.google.inject.Key&lt;?&gt;"
   9075       abstract="true" native="false" synchronized="false"
   9076       static="false" final="false" visibility="public"
   9077       deprecated="not deprecated">
   9078       <doc>
   9079       <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding
   9080  can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key)
   9081  Injector.getBinding(providedKey)}]]>
   9082       </doc>
   9083     </method>
   9084     <doc>
   9085     <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding
   9086  is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly).
   9087 
   9088  @author jessewilson (a] google.com (Jesse Wilson)
   9089  @since 2.0]]>
   9090     </doc>
   9091   </interface>
   9092   <!-- end interface com.google.inject.spi.ProviderBinding -->
   9093   <!-- start interface com.google.inject.spi.ProviderInstanceBinding -->
   9094   <interface name="ProviderInstanceBinding"    abstract="true"
   9095     static="false" final="false" visibility="public"
   9096     deprecated="not deprecated">
   9097     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9098     <implements name="com.google.inject.spi.HasDependencies"/>
   9099     <method name="getProviderInstance" return="com.google.inject.Provider&lt;? extends T&gt;"
   9100       abstract="true" native="false" synchronized="false"
   9101       static="false" final="false" visibility="public"
   9102       deprecated="Use {@link #getUserSuppliedProvider} instead.">
   9103       <doc>
   9104       <![CDATA[If the user supplied a JSR330 binding, then this will wrap that one. To always return the
   9105  user-supplied provider, use {@link #getUserSuppliedProvider}.
   9106  
   9107  @deprecated Use {@link #getUserSuppliedProvider} instead.]]>
   9108       </doc>
   9109     </method>
   9110     <method name="getUserSuppliedProvider" return="javax.inject.Provider&lt;? extends T&gt;"
   9111       abstract="true" native="false" synchronized="false"
   9112       static="false" final="false" visibility="public"
   9113       deprecated="not deprecated">
   9114       <doc>
   9115       <![CDATA[Returns the user-supplied, unscoped provider.]]>
   9116       </doc>
   9117     </method>
   9118     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9119       abstract="true" native="false" synchronized="false"
   9120       static="false" final="false" visibility="public"
   9121       deprecated="not deprecated">
   9122       <doc>
   9123       <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation
   9124  time only.
   9125 
   9126  @return a possibly empty set]]>
   9127       </doc>
   9128     </method>
   9129     <doc>
   9130     <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve
   9131  injections.
   9132 
   9133  @author jessewilson (a] google.com (Jesse Wilson)
   9134  @since 2.0]]>
   9135     </doc>
   9136   </interface>
   9137   <!-- end interface com.google.inject.spi.ProviderInstanceBinding -->
   9138   <!-- start interface com.google.inject.spi.ProviderKeyBinding -->
   9139   <interface name="ProviderKeyBinding"    abstract="true"
   9140     static="false" final="false" visibility="public"
   9141     deprecated="not deprecated">
   9142     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9143     <method name="getProviderKey" return="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"
   9144       abstract="true" native="false" synchronized="false"
   9145       static="false" final="false" visibility="public"
   9146       deprecated="not deprecated">
   9147       <doc>
   9148       <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an
   9149  injector using {@link com.google.inject.Injector#getBinding(Key)
   9150  Injector.getBinding(providerKey)}]]>
   9151       </doc>
   9152     </method>
   9153     <doc>
   9154     <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that
   9155  provider's {@code get} method is invoked.
   9156 
   9157  @author jessewilson (a] google.com (Jesse Wilson)
   9158  @since 2.0]]>
   9159     </doc>
   9160   </interface>
   9161   <!-- end interface com.google.inject.spi.ProviderKeyBinding -->
   9162   <!-- start class com.google.inject.spi.ProviderLookup -->
   9163   <class name="ProviderLookup" extends="java.lang.Object"
   9164     abstract="false"
   9165     static="false" final="true" visibility="public"
   9166     deprecated="not deprecated">
   9167     <implements name="com.google.inject.spi.Element"/>
   9168     <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key&lt;T&gt;"
   9169       static="false" final="false" visibility="public"
   9170       deprecated="not deprecated">
   9171     </constructor>
   9172     <method name="getSource" return="java.lang.Object"
   9173       abstract="false" native="false" synchronized="false"
   9174       static="false" final="false" visibility="public"
   9175       deprecated="not deprecated">
   9176     </method>
   9177     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   9178       abstract="false" native="false" synchronized="false"
   9179       static="false" final="false" visibility="public"
   9180       deprecated="not deprecated">
   9181     </method>
   9182     <method name="acceptVisitor" return="T"
   9183       abstract="false" native="false" synchronized="false"
   9184       static="false" final="false" visibility="public"
   9185       deprecated="not deprecated">
   9186       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9187     </method>
   9188     <method name="initializeDelegate"
   9189       abstract="false" native="false" synchronized="false"
   9190       static="false" final="false" visibility="public"
   9191       deprecated="not deprecated">
   9192       <param name="delegate" type="com.google.inject.Provider&lt;T&gt;"/>
   9193       <doc>
   9194       <![CDATA[Sets the actual provider.
   9195 
   9196  @throws IllegalStateException if the delegate is already set]]>
   9197       </doc>
   9198     </method>
   9199     <method name="applyTo"
   9200       abstract="false" native="false" synchronized="false"
   9201       static="false" final="false" visibility="public"
   9202       deprecated="not deprecated">
   9203       <param name="binder" type="com.google.inject.Binder"/>
   9204     </method>
   9205     <method name="getDelegate" return="com.google.inject.Provider&lt;T&gt;"
   9206       abstract="false" native="false" synchronized="false"
   9207       static="false" final="false" visibility="public"
   9208       deprecated="not deprecated">
   9209       <doc>
   9210       <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate
   9211  will be initialized when this element is processed, or otherwise used to create an injector.]]>
   9212       </doc>
   9213     </method>
   9214     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   9215       abstract="false" native="false" synchronized="false"
   9216       static="false" final="false" visibility="public"
   9217       deprecated="not deprecated">
   9218       <doc>
   9219       <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized,
   9220  which usually happens when the injector is created. The provider will throw an {@code
   9221  IllegalStateException} if you try to use it beforehand.]]>
   9222       </doc>
   9223     </method>
   9224     <doc>
   9225     <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using
   9226  {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements:
   9227  <pre>
   9228      Provider&lt;PaymentService&gt; paymentServiceProvider
   9229          = getProvider(PaymentService.class);</pre>
   9230 
   9231  @author jessewilson (a] google.com (Jesse Wilson)
   9232  @since 2.0]]>
   9233     </doc>
   9234   </class>
   9235   <!-- end class com.google.inject.spi.ProviderLookup -->
   9236   <!-- start interface com.google.inject.spi.ProviderWithDependencies -->
   9237   <interface name="ProviderWithDependencies"    abstract="true"
   9238     static="false" final="false" visibility="public"
   9239     deprecated="not deprecated">
   9240     <implements name="com.google.inject.Provider&lt;T&gt;"/>
   9241     <implements name="com.google.inject.spi.HasDependencies"/>
   9242     <doc>
   9243     <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that
   9244  aren't specified in injections, this interface should be used to expose all dependencies.
   9245 
   9246  @since 2.0]]>
   9247     </doc>
   9248   </interface>
   9249   <!-- end interface com.google.inject.spi.ProviderWithDependencies -->
   9250   <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor -->
   9251   <interface name="ProviderWithExtensionVisitor"    abstract="true"
   9252     static="false" final="false" visibility="public"
   9253     deprecated="not deprecated">
   9254     <implements name="com.google.inject.Provider&lt;T&gt;"/>
   9255     <method name="acceptExtensionVisitor" return="V"
   9256       abstract="true" native="false" synchronized="false"
   9257       static="false" final="false" visibility="public"
   9258       deprecated="not deprecated">
   9259       <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;B, V&gt;"/>
   9260       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends B&gt;"/>
   9261       <doc>
   9262       <![CDATA[Instructs the extension determine if the visitor is an instance of a custom
   9263  extension visitor, and if so, visit it using that method. If the visitor is
   9264  not an instance of the custom extension visitor, this method <b>MUST</b>
   9265  call visitor.visit(binding).
   9266  <p> 
   9267  Due to issues with generics, the type parameters of this method do not
   9268  relate to the type of the provider. In practice, the 'B' type will always
   9269  be a supertype of 'T'.]]>
   9270       </doc>
   9271     </method>
   9272     <doc>
   9273     <![CDATA[A Provider that is part of an extension which supports a custom
   9274  BindingTargetVisitor.
   9275  <p> 
   9276  When an extension binds a provider instance, the provider can implement this
   9277  interface to allow users using the
   9278  {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a
   9279  custom visitor designed for that extension. A typical implementation within
   9280  the extension would look like
   9281  <pre> 
   9282  &lt;V, B> V acceptExtensionVisitor(BindingTargetVisitor&lt;B, V> visitor, ProviderInstanceBinding&lt;? extends B> binding) {
   9283    if(visitor instanceof MyCustomExtensionVisitor) {
   9284      return ((MyCustomExtensionVisitor&lt;B, V>)visitor).visitCustomExtension(customProperties, binding);
   9285    } else {
   9286      return visitor.visit(binding);
   9287    }
   9288  }</pre> 
   9289  'MyCustomExtensionVisitor' in the example above would be an interface the
   9290  extension provides that users can implement in order to be notified of custom
   9291  extension information. These visitor interfaces must extend from
   9292  BindingTargetVisitor.
   9293 
   9294  @since 3.0
   9295  @author sameb (a] google.com (Sam Berlin)]]>
   9296     </doc>
   9297   </interface>
   9298   <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor -->
   9299   <!-- start interface com.google.inject.spi.ProvidesMethodBinding -->
   9300   <interface name="ProvidesMethodBinding"    abstract="true"
   9301     static="false" final="false" visibility="public"
   9302     deprecated="not deprecated">
   9303     <implements name="com.google.inject.spi.HasDependencies"/>
   9304     <method name="getMethod" return="java.lang.reflect.Method"
   9305       abstract="true" native="false" synchronized="false"
   9306       static="false" final="false" visibility="public"
   9307       deprecated="not deprecated">
   9308       <doc>
   9309       <![CDATA[Returns the method this binding uses.]]>
   9310       </doc>
   9311     </method>
   9312     <method name="getEnclosingInstance" return="java.lang.Object"
   9313       abstract="true" native="false" synchronized="false"
   9314       static="false" final="false" visibility="public"
   9315       deprecated="not deprecated">
   9316       <doc>
   9317       <![CDATA[Returns the instance of the object the method is defined in.]]>
   9318       </doc>
   9319     </method>
   9320     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   9321       abstract="true" native="false" synchronized="false"
   9322       static="false" final="false" visibility="public"
   9323       deprecated="not deprecated">
   9324       <doc>
   9325       <![CDATA[Returns the key of the binding.]]>
   9326       </doc>
   9327     </method>
   9328     <doc>
   9329     <![CDATA[An {@literal @}{@link Provides} binding.
   9330  
   9331  @since 4.0
   9332  @author sameb (a] google.com (Sam Berlin)]]>
   9333     </doc>
   9334   </interface>
   9335   <!-- end interface com.google.inject.spi.ProvidesMethodBinding -->
   9336   <!-- start interface com.google.inject.spi.ProvidesMethodTargetVisitor -->
   9337   <interface name="ProvidesMethodTargetVisitor"    abstract="true"
   9338     static="false" final="false" visibility="public"
   9339     deprecated="not deprecated">
   9340     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   9341     <method name="visit" return="V"
   9342       abstract="true" native="false" synchronized="false"
   9343       static="false" final="false" visibility="public"
   9344       deprecated="not deprecated">
   9345       <param name="providesMethodBinding" type="com.google.inject.spi.ProvidesMethodBinding&lt;? extends T&gt;"/>
   9346       <doc>
   9347       <![CDATA[Visits an {@link ProvidesMethodBinding} created with an {@literal @}{@link Provides} method.]]>
   9348       </doc>
   9349     </method>
   9350     <doc>
   9351     <![CDATA[A visitor for the {@literal @}{@link Provides} bindings.
   9352  <p>
   9353  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   9354  {@code @Provides} will be visited through this interface.
   9355 
   9356  @since 4.0
   9357  @author sameb (a] google.com (Sam Berlin)]]>
   9358     </doc>
   9359   </interface>
   9360   <!-- end interface com.google.inject.spi.ProvidesMethodTargetVisitor -->
   9361   <!-- start interface com.google.inject.spi.ProvisionListener -->
   9362   <interface name="ProvisionListener"    abstract="true"
   9363     static="false" final="false" visibility="public"
   9364     deprecated="not deprecated">
   9365     <method name="onProvision"
   9366       abstract="true" native="false" synchronized="false"
   9367       static="false" final="false" visibility="public"
   9368       deprecated="not deprecated">
   9369       <param name="provision" type="com.google.inject.spi.ProvisionListener.ProvisionInvocation&lt;T&gt;"/>
   9370       <doc>
   9371       <![CDATA[Invoked by Guice when an object requires provisioning. Provisioning occurs
   9372  when Guice locates and injects the dependencies for a binding. For types
   9373  bound to a Provider, provisioning encapsulates the {@link Provider#get}
   9374  method. For toInstance or constant bindings, provisioning encapsulates
   9375  the injecting of {@literal @}{@code Inject}ed fields or methods.
   9376  For other types, provisioning encapsulates the construction of the
   9377  object. If a type is bound within a {@link Scope}, provisioning depends on
   9378  the scope. Types bound in Singleton scope will only be provisioned once.
   9379  Types bound in no scope will be provisioned every time they are injected.
   9380  Other scopes define their own behavior for provisioning.
   9381  <p>
   9382  To perform the provision, call {@link ProvisionInvocation#provision()}.
   9383  If you do not explicitly call provision, it will be automatically done after
   9384  this method returns.  It is an error to call provision more than once.]]>
   9385       </doc>
   9386     </method>
   9387     <doc>
   9388     <![CDATA[Listens for provisioning of objects. Useful for gathering timing information
   9389  about provisioning, post-provision initialization, and more.
   9390  
   9391  @author sameb (a] google.com (Sam Berlin)
   9392  @since 4.0]]>
   9393     </doc>
   9394   </interface>
   9395   <!-- end interface com.google.inject.spi.ProvisionListener -->
   9396   <!-- start class com.google.inject.spi.ProvisionListener.ProvisionInvocation -->
   9397   <class name="ProvisionListener.ProvisionInvocation" extends="java.lang.Object"
   9398     abstract="true"
   9399     static="true" final="false" visibility="public"
   9400     deprecated="not deprecated">
   9401     <constructor name="ProvisionInvocation"
   9402       static="false" final="false" visibility="public"
   9403       deprecated="not deprecated">
   9404     </constructor>
   9405     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   9406       abstract="true" native="false" synchronized="false"
   9407       static="false" final="false" visibility="public"
   9408       deprecated="not deprecated">
   9409       <doc>
   9410       <![CDATA[Returns the Binding this is provisioning.
   9411  <p>
   9412  You must not call {@link Provider#get()} on the provider returned by
   9413  {@link Binding#getProvider}, otherwise you will get confusing error messages.]]>
   9414       </doc>
   9415     </method>
   9416     <method name="provision" return="T"
   9417       abstract="true" native="false" synchronized="false"
   9418       static="false" final="false" visibility="public"
   9419       deprecated="not deprecated">
   9420       <doc>
   9421       <![CDATA[Performs the provision, returning the object provisioned.]]>
   9422       </doc>
   9423     </method>
   9424     <method name="getDependencyChain" return="java.util.List&lt;com.google.inject.spi.DependencyAndSource&gt;"
   9425       abstract="true" native="false" synchronized="false"
   9426       static="false" final="false" visibility="public"
   9427       deprecated="not deprecated">
   9428       <doc>
   9429       <![CDATA[Returns the dependency chain that led to this object being provisioned.]]>
   9430       </doc>
   9431     </method>
   9432     <doc>
   9433     <![CDATA[Encapsulates a single act of provisioning.]]>
   9434     </doc>
   9435   </class>
   9436   <!-- end class com.google.inject.spi.ProvisionListener.ProvisionInvocation -->
   9437   <!-- start class com.google.inject.spi.ProvisionListenerBinding -->
   9438   <class name="ProvisionListenerBinding" extends="java.lang.Object"
   9439     abstract="false"
   9440     static="false" final="true" visibility="public"
   9441     deprecated="not deprecated">
   9442     <implements name="com.google.inject.spi.Element"/>
   9443     <method name="getListeners" return="java.util.List&lt;com.google.inject.spi.ProvisionListener&gt;"
   9444       abstract="false" native="false" synchronized="false"
   9445       static="false" final="false" visibility="public"
   9446       deprecated="not deprecated">
   9447       <doc>
   9448       <![CDATA[Returns the registered listeners.]]>
   9449       </doc>
   9450     </method>
   9451     <method name="getBindingMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"
   9452       abstract="false" native="false" synchronized="false"
   9453       static="false" final="false" visibility="public"
   9454       deprecated="not deprecated">
   9455       <doc>
   9456       <![CDATA[Returns the binding matcher which chooses which bindings the listener should be notified of.]]>
   9457       </doc>
   9458     </method>
   9459     <method name="getSource" return="java.lang.Object"
   9460       abstract="false" native="false" synchronized="false"
   9461       static="false" final="false" visibility="public"
   9462       deprecated="not deprecated">
   9463     </method>
   9464     <method name="acceptVisitor" return="R"
   9465       abstract="false" native="false" synchronized="false"
   9466       static="false" final="false" visibility="public"
   9467       deprecated="not deprecated">
   9468       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
   9469     </method>
   9470     <method name="applyTo"
   9471       abstract="false" native="false" synchronized="false"
   9472       static="false" final="false" visibility="public"
   9473       deprecated="not deprecated">
   9474       <param name="binder" type="com.google.inject.Binder"/>
   9475     </method>
   9476     <doc>
   9477     <![CDATA[Binds keys (picked using a Matcher) to a provision listener. Listeners are created explicitly in
   9478  a module using {@link Binder#bindListener(Matcher, ProvisionListener...)} statements:
   9479 
   9480  @author sameb (a] google.com (Sam Berlin)
   9481  @since 4.0]]>
   9482     </doc>
   9483   </class>
   9484   <!-- end class com.google.inject.spi.ProvisionListenerBinding -->
   9485   <!-- start class com.google.inject.spi.RequireAtInjectOnConstructorsOption -->
   9486   <class name="RequireAtInjectOnConstructorsOption" extends="java.lang.Object"
   9487     abstract="false"
   9488     static="false" final="true" visibility="public"
   9489     deprecated="not deprecated">
   9490     <implements name="com.google.inject.spi.Element"/>
   9491     <method name="getSource" return="java.lang.Object"
   9492       abstract="false" native="false" synchronized="false"
   9493       static="false" final="false" visibility="public"
   9494       deprecated="not deprecated">
   9495     </method>
   9496     <method name="applyTo"
   9497       abstract="false" native="false" synchronized="false"
   9498       static="false" final="false" visibility="public"
   9499       deprecated="not deprecated">
   9500       <param name="binder" type="com.google.inject.Binder"/>
   9501     </method>
   9502     <method name="acceptVisitor" return="T"
   9503       abstract="false" native="false" synchronized="false"
   9504       static="false" final="false" visibility="public"
   9505       deprecated="not deprecated">
   9506       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9507     </method>
   9508     <doc>
   9509     <![CDATA[A request to require explicit {@literal @}{@link Inject} annotations on constructors.
   9510 
   9511  @author sameb (a] google.com (Sam Berlin)
   9512  @since 4.0]]>
   9513     </doc>
   9514   </class>
   9515   <!-- end class com.google.inject.spi.RequireAtInjectOnConstructorsOption -->
   9516   <!-- start class com.google.inject.spi.RequireExactBindingAnnotationsOption -->
   9517   <class name="RequireExactBindingAnnotationsOption" extends="java.lang.Object"
   9518     abstract="false"
   9519     static="false" final="true" visibility="public"
   9520     deprecated="not deprecated">
   9521     <implements name="com.google.inject.spi.Element"/>
   9522     <method name="getSource" return="java.lang.Object"
   9523       abstract="false" native="false" synchronized="false"
   9524       static="false" final="false" visibility="public"
   9525       deprecated="not deprecated">
   9526     </method>
   9527     <method name="applyTo"
   9528       abstract="false" native="false" synchronized="false"
   9529       static="false" final="false" visibility="public"
   9530       deprecated="not deprecated">
   9531       <param name="binder" type="com.google.inject.Binder"/>
   9532     </method>
   9533     <method name="acceptVisitor" return="T"
   9534       abstract="false" native="false" synchronized="false"
   9535       static="false" final="false" visibility="public"
   9536       deprecated="not deprecated">
   9537       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9538     </method>
   9539     <doc>
   9540     <![CDATA[A request to require exact binding annotations.
   9541 
   9542  @author sameb (a] google.com (Sam Berlin)
   9543  @since 4.0]]>
   9544     </doc>
   9545   </class>
   9546   <!-- end class com.google.inject.spi.RequireExactBindingAnnotationsOption -->
   9547   <!-- start class com.google.inject.spi.RequireExplicitBindingsOption -->
   9548   <class name="RequireExplicitBindingsOption" extends="java.lang.Object"
   9549     abstract="false"
   9550     static="false" final="true" visibility="public"
   9551     deprecated="not deprecated">
   9552     <implements name="com.google.inject.spi.Element"/>
   9553     <method name="getSource" return="java.lang.Object"
   9554       abstract="false" native="false" synchronized="false"
   9555       static="false" final="false" visibility="public"
   9556       deprecated="not deprecated">
   9557     </method>
   9558     <method name="applyTo"
   9559       abstract="false" native="false" synchronized="false"
   9560       static="false" final="false" visibility="public"
   9561       deprecated="not deprecated">
   9562       <param name="binder" type="com.google.inject.Binder"/>
   9563     </method>
   9564     <method name="acceptVisitor" return="T"
   9565       abstract="false" native="false" synchronized="false"
   9566       static="false" final="false" visibility="public"
   9567       deprecated="not deprecated">
   9568       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9569     </method>
   9570     <doc>
   9571     <![CDATA[A request to require explicit bindings.
   9572 
   9573  @author sameb (a] google.com (Sam Berlin)
   9574  @since 3.0]]>
   9575     </doc>
   9576   </class>
   9577   <!-- end class com.google.inject.spi.RequireExplicitBindingsOption -->
   9578   <!-- start class com.google.inject.spi.ScopeBinding -->
   9579   <class name="ScopeBinding" extends="java.lang.Object"
   9580     abstract="false"
   9581     static="false" final="true" visibility="public"
   9582     deprecated="not deprecated">
   9583     <implements name="com.google.inject.spi.Element"/>
   9584     <method name="getSource" return="java.lang.Object"
   9585       abstract="false" native="false" synchronized="false"
   9586       static="false" final="false" visibility="public"
   9587       deprecated="not deprecated">
   9588     </method>
   9589     <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   9590       abstract="false" native="false" synchronized="false"
   9591       static="false" final="false" visibility="public"
   9592       deprecated="not deprecated">
   9593     </method>
   9594     <method name="getScope" return="com.google.inject.Scope"
   9595       abstract="false" native="false" synchronized="false"
   9596       static="false" final="false" visibility="public"
   9597       deprecated="not deprecated">
   9598     </method>
   9599     <method name="acceptVisitor" return="T"
   9600       abstract="false" native="false" synchronized="false"
   9601       static="false" final="false" visibility="public"
   9602       deprecated="not deprecated">
   9603       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9604     </method>
   9605     <method name="applyTo"
   9606       abstract="false" native="false" synchronized="false"
   9607       static="false" final="false" visibility="public"
   9608       deprecated="not deprecated">
   9609       <param name="binder" type="com.google.inject.Binder"/>
   9610     </method>
   9611     <doc>
   9612     <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created
   9613  explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()}
   9614  statements:
   9615  <pre>
   9616      Scope recordScope = new RecordScope();
   9617      bindScope(RecordScoped.class, new RecordScope());</pre>
   9618 
   9619  @author jessewilson (a] google.com (Jesse Wilson)
   9620  @since 2.0]]>
   9621     </doc>
   9622   </class>
   9623   <!-- end class com.google.inject.spi.ScopeBinding -->
   9624   <!-- start class com.google.inject.spi.StaticInjectionRequest -->
   9625   <class name="StaticInjectionRequest" extends="java.lang.Object"
   9626     abstract="false"
   9627     static="false" final="true" visibility="public"
   9628     deprecated="not deprecated">
   9629     <implements name="com.google.inject.spi.Element"/>
   9630     <method name="getSource" return="java.lang.Object"
   9631       abstract="false" native="false" synchronized="false"
   9632       static="false" final="false" visibility="public"
   9633       deprecated="not deprecated">
   9634     </method>
   9635     <method name="getType" return="java.lang.Class&lt;?&gt;"
   9636       abstract="false" native="false" synchronized="false"
   9637       static="false" final="false" visibility="public"
   9638       deprecated="not deprecated">
   9639     </method>
   9640     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9641       abstract="false" native="false" synchronized="false"
   9642       static="false" final="false" visibility="public"
   9643       deprecated="not deprecated">
   9644       <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
   9645       <doc>
   9646       <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this
   9647  request.
   9648 
   9649  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9650       fields are returned and then all methods. Within the fields, supertype fields are returned
   9651       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9652  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9653       a field with multiple binding annotations. The exception's {@link
   9654       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9655       of the valid injection points.]]>
   9656       </doc>
   9657     </method>
   9658     <method name="applyTo"
   9659       abstract="false" native="false" synchronized="false"
   9660       static="false" final="false" visibility="public"
   9661       deprecated="not deprecated">
   9662       <param name="binder" type="com.google.inject.Binder"/>
   9663     </method>
   9664     <method name="acceptVisitor" return="T"
   9665       abstract="false" native="false" synchronized="false"
   9666       static="false" final="false" visibility="public"
   9667       deprecated="not deprecated">
   9668       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9669     </method>
   9670     <doc>
   9671     <![CDATA[A request to inject the static fields and methods of a type. Requests are created
   9672  explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[])
   9673  requestStaticInjection()} statements:
   9674  <pre>
   9675      requestStaticInjection(MyLegacyService.class);</pre>
   9676 
   9677  @author jessewilson (a] google.com (Jesse Wilson)
   9678  @since 2.0]]>
   9679     </doc>
   9680   </class>
   9681   <!-- end class com.google.inject.spi.StaticInjectionRequest -->
   9682   <!-- start class com.google.inject.spi.Toolable -->
   9683   <class name="Toolable"    abstract="true"
   9684     static="false" final="false" visibility="public"
   9685     deprecated="not deprecated">
   9686     <implements name="java.lang.annotation.Annotation"/>
   9687     <doc>
   9688     <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected.
   9689  This is typically useful for for extensions to Guice that perform additional validation in an
   9690  injected method or field.  This only applies to objects that are already constructed when
   9691  bindings are created (ie., something bound using {@link
   9692  com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link
   9693  com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link
   9694  com.google.inject.Binder#requestInjection requestInjection}.
   9695  
   9696  @author sberlin (a] gmail.com (Sam Berlin)
   9697  @since 3.0]]>
   9698     </doc>
   9699   </class>
   9700   <!-- end class com.google.inject.spi.Toolable -->
   9701   <!-- start interface com.google.inject.spi.TypeConverter -->
   9702   <interface name="TypeConverter"    abstract="true"
   9703     static="false" final="false" visibility="public"
   9704     deprecated="not deprecated">
   9705     <method name="convert" return="java.lang.Object"
   9706       abstract="true" native="false" synchronized="false"
   9707       static="false" final="false" visibility="public"
   9708       deprecated="not deprecated">
   9709       <param name="value" type="java.lang.String"/>
   9710       <param name="toType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   9711       <doc>
   9712       <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]>
   9713       </doc>
   9714     </method>
   9715     <doc>
   9716     <![CDATA[Converts constant string values to a different type.
   9717 
   9718  @author crazybob (a] google.com (Bob Lee)
   9719  @since 2.0]]>
   9720     </doc>
   9721   </interface>
   9722   <!-- end interface com.google.inject.spi.TypeConverter -->
   9723   <!-- start class com.google.inject.spi.TypeConverterBinding -->
   9724   <class name="TypeConverterBinding" extends="java.lang.Object"
   9725     abstract="false"
   9726     static="false" final="true" visibility="public"
   9727     deprecated="not deprecated">
   9728     <implements name="com.google.inject.spi.Element"/>
   9729     <constructor name="TypeConverterBinding" type="java.lang.Object, com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;, com.google.inject.spi.TypeConverter"
   9730       static="false" final="false" visibility="public"
   9731       deprecated="not deprecated">
   9732       <doc>
   9733       <![CDATA[@since 3.0]]>
   9734       </doc>
   9735     </constructor>
   9736     <method name="getSource" return="java.lang.Object"
   9737       abstract="false" native="false" synchronized="false"
   9738       static="false" final="false" visibility="public"
   9739       deprecated="not deprecated">
   9740     </method>
   9741     <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   9742       abstract="false" native="false" synchronized="false"
   9743       static="false" final="false" visibility="public"
   9744       deprecated="not deprecated">
   9745     </method>
   9746     <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter"
   9747       abstract="false" native="false" synchronized="false"
   9748       static="false" final="false" visibility="public"
   9749       deprecated="not deprecated">
   9750     </method>
   9751     <method name="acceptVisitor" return="T"
   9752       abstract="false" native="false" synchronized="false"
   9753       static="false" final="false" visibility="public"
   9754       deprecated="not deprecated">
   9755       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9756     </method>
   9757     <method name="applyTo"
   9758       abstract="false" native="false" synchronized="false"
   9759       static="false" final="false" visibility="public"
   9760       deprecated="not deprecated">
   9761       <param name="binder" type="com.google.inject.Binder"/>
   9762     </method>
   9763     <method name="toString" return="java.lang.String"
   9764       abstract="false" native="false" synchronized="false"
   9765       static="false" final="false" visibility="public"
   9766       deprecated="not deprecated">
   9767     </method>
   9768     <doc>
   9769     <![CDATA[Registration of type converters for matching target types. Instances are created
   9770  explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher,
   9771  TypeConverter) convertToTypes()} statements:
   9772  <pre>
   9773      convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre>
   9774 
   9775  @author jessewilson (a] google.com (Jesse Wilson)
   9776  @since 2.0]]>
   9777     </doc>
   9778   </class>
   9779   <!-- end class com.google.inject.spi.TypeConverterBinding -->
   9780   <!-- start interface com.google.inject.spi.TypeEncounter -->
   9781   <interface name="TypeEncounter"    abstract="true"
   9782     static="false" final="false" visibility="public"
   9783     deprecated="not deprecated">
   9784     <method name="addError"
   9785       abstract="true" native="false" synchronized="false"
   9786       static="false" final="false" visibility="public"
   9787       deprecated="not deprecated">
   9788       <param name="message" type="java.lang.String"/>
   9789       <param name="arguments" type="java.lang.Object[]"/>
   9790       <doc>
   9791       <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later
   9792  time. Unlike throwing an exception, this enable us to continue configuring the Injector and
   9793  discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments
   9794  into the message.]]>
   9795       </doc>
   9796     </method>
   9797     <method name="addError"
   9798       abstract="true" native="false" synchronized="false"
   9799       static="false" final="false" visibility="public"
   9800       deprecated="not deprecated">
   9801       <param name="t" type="java.lang.Throwable"/>
   9802       <doc>
   9803       <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the
   9804  message of which will be presented to the user at a later time. If your type listener calls
   9805  something that you worry may fail, you should catch the exception and pass it to this method.]]>
   9806       </doc>
   9807     </method>
   9808     <method name="addError"
   9809       abstract="true" native="false" synchronized="false"
   9810       static="false" final="false" visibility="public"
   9811       deprecated="not deprecated">
   9812       <param name="message" type="com.google.inject.spi.Message"/>
   9813       <doc>
   9814       <![CDATA[Records an error message to be presented to the user at a later time.]]>
   9815       </doc>
   9816     </method>
   9817     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   9818       abstract="true" native="false" synchronized="false"
   9819       static="false" final="false" visibility="public"
   9820       deprecated="not deprecated">
   9821       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   9822       <doc>
   9823       <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned
   9824  provider will not be valid until the injector has been created. The provider will throw an
   9825  {@code IllegalStateException} if you try to use it beforehand.]]>
   9826       </doc>
   9827     </method>
   9828     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   9829       abstract="true" native="false" synchronized="false"
   9830       static="false" final="false" visibility="public"
   9831       deprecated="not deprecated">
   9832       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   9833       <doc>
   9834       <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned
   9835  provider will not be valid until the injetor has been created. The provider will throw an
   9836  {@code IllegalStateException} if you try to use it beforehand.]]>
   9837       </doc>
   9838     </method>
   9839     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   9840       abstract="true" native="false" synchronized="false"
   9841       static="false" final="false" visibility="public"
   9842       deprecated="not deprecated">
   9843       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   9844       <doc>
   9845       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   9846  of the given type {@code T}. The returned members injector will not be valid until the main
   9847  injector has been created. The members injector will throw an {@code IllegalStateException}
   9848  if you try to use it beforehand.
   9849 
   9850  @param typeLiteral type to get members injector for]]>
   9851       </doc>
   9852     </method>
   9853     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   9854       abstract="true" native="false" synchronized="false"
   9855       static="false" final="false" visibility="public"
   9856       deprecated="not deprecated">
   9857       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   9858       <doc>
   9859       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   9860  of the given type {@code T}. The returned members injector will not be valid until the main
   9861  injector has been created. The members injector will throw an {@code IllegalStateException}
   9862  if you try to use it beforehand.
   9863 
   9864  @param type type to get members injector for]]>
   9865       </doc>
   9866     </method>
   9867     <method name="register"
   9868       abstract="true" native="false" synchronized="false"
   9869       static="false" final="false" visibility="public"
   9870       deprecated="not deprecated">
   9871       <param name="membersInjector" type="com.google.inject.MembersInjector&lt;? super I&gt;"/>
   9872       <doc>
   9873       <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its
   9874  performed its own injections on an instance of {@code I}.]]>
   9875       </doc>
   9876     </method>
   9877     <method name="register"
   9878       abstract="true" native="false" synchronized="false"
   9879       static="false" final="false" visibility="public"
   9880       deprecated="not deprecated">
   9881       <param name="listener" type="com.google.inject.spi.InjectionListener&lt;? super I&gt;"/>
   9882       <doc>
   9883       <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all
   9884  injections have been performed on an instance of {@code I}.]]>
   9885       </doc>
   9886     </method>
   9887     <method name="bindInterceptor"
   9888       abstract="true" native="false" synchronized="false"
   9889       static="false" final="false" visibility="public"
   9890       deprecated="not deprecated">
   9891       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
   9892       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
   9893       <doc>
   9894       <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A
   9895  method is eligible for interception if:
   9896 
   9897  <ul>
   9898   <li>Guice created the instance the method is on</li>
   9899   <li>Neither the enclosing type nor the method is final</li>
   9900   <li>And the method is package-private or more accessible</li>
   9901  </ul>
   9902 
   9903  @param methodMatcher matches methods the interceptor should apply to. For
   9904      example: {@code annotatedWith(Transactional.class)}.
   9905  @param interceptors to bind]]>
   9906       </doc>
   9907     </method>
   9908     <doc>
   9909     <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection
   9910  listeners and binding method interceptors for injectable type {@code I}. It is an error to use
   9911  an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has
   9912  returned.
   9913 
   9914  @param <I> the injectable type encountered
   9915  @since 2.0]]>
   9916     </doc>
   9917   </interface>
   9918   <!-- end interface com.google.inject.spi.TypeEncounter -->
   9919   <!-- start interface com.google.inject.spi.TypeListener -->
   9920   <interface name="TypeListener"    abstract="true"
   9921     static="false" final="false" visibility="public"
   9922     deprecated="not deprecated">
   9923     <method name="hear"
   9924       abstract="true" native="false" synchronized="false"
   9925       static="false" final="false" visibility="public"
   9926       deprecated="not deprecated">
   9927       <param name="type" type="com.google.inject.TypeLiteral&lt;I&gt;"/>
   9928       <param name="encounter" type="com.google.inject.spi.TypeEncounter&lt;I&gt;"/>
   9929       <doc>
   9930       <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection.
   9931  Called during injector creation (or afterwords if Guice encounters a type at run time and
   9932  creates a JIT binding).
   9933 
   9934  @param type encountered by Guice
   9935  @param encounter context of this encounter, enables reporting errors, registering injection
   9936      listeners and binding method interceptors for {@code type}.
   9937 
   9938  @param <I> the injectable type]]>
   9939       </doc>
   9940     </method>
   9941     <doc>
   9942     <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in
   9943  one situation but only its methods and fields injected in another, Guice will notify this
   9944  listener once.
   9945 
   9946  <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener)
   9947  registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor(
   9948  com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])
   9949  binding method interceptors}.
   9950  
   9951  @since 2.0]]>
   9952     </doc>
   9953   </interface>
   9954   <!-- end interface com.google.inject.spi.TypeListener -->
   9955   <!-- start class com.google.inject.spi.TypeListenerBinding -->
   9956   <class name="TypeListenerBinding" extends="java.lang.Object"
   9957     abstract="false"
   9958     static="false" final="true" visibility="public"
   9959     deprecated="not deprecated">
   9960     <implements name="com.google.inject.spi.Element"/>
   9961     <method name="getListener" return="com.google.inject.spi.TypeListener"
   9962       abstract="false" native="false" synchronized="false"
   9963       static="false" final="false" visibility="public"
   9964       deprecated="not deprecated">
   9965       <doc>
   9966       <![CDATA[Returns the registered listener.]]>
   9967       </doc>
   9968     </method>
   9969     <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   9970       abstract="false" native="false" synchronized="false"
   9971       static="false" final="false" visibility="public"
   9972       deprecated="not deprecated">
   9973       <doc>
   9974       <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]>
   9975       </doc>
   9976     </method>
   9977     <method name="getSource" return="java.lang.Object"
   9978       abstract="false" native="false" synchronized="false"
   9979       static="false" final="false" visibility="public"
   9980       deprecated="not deprecated">
   9981     </method>
   9982     <method name="acceptVisitor" return="T"
   9983       abstract="false" native="false" synchronized="false"
   9984       static="false" final="false" visibility="public"
   9985       deprecated="not deprecated">
   9986       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9987     </method>
   9988     <method name="applyTo"
   9989       abstract="false" native="false" synchronized="false"
   9990       static="false" final="false" visibility="public"
   9991       deprecated="not deprecated">
   9992       <param name="binder" type="com.google.inject.Binder"/>
   9993     </method>
   9994     <doc>
   9995     <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in
   9996  a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements:
   9997 
   9998  <pre>
   9999      register(only(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {}), listener);</pre>
   10000 
   10001  @author jessewilson (a] google.com (Jesse Wilson)
   10002  @since 2.0]]>
   10003     </doc>
   10004   </class>
   10005   <!-- end class com.google.inject.spi.TypeListenerBinding -->
   10006   <!-- start interface com.google.inject.spi.UntargettedBinding -->
   10007   <interface name="UntargettedBinding"    abstract="true"
   10008     static="false" final="false" visibility="public"
   10009     deprecated="not deprecated">
   10010     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   10011     <doc>
   10012     <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding
   10013  strategies to resolve injections.
   10014 
   10015  @author jessewilson (a] google.com (Jesse Wilson)
   10016  @since 2.0]]>
   10017     </doc>
   10018   </interface>
   10019   <!-- end interface com.google.inject.spi.UntargettedBinding -->
   10020 </package>
   10021 <package name="com.google.inject.spring">
   10022   <!-- start class com.google.inject.spring.SpringIntegration -->
   10023   <class name="SpringIntegration" extends="java.lang.Object"
   10024     abstract="false"
   10025     static="false" final="false" visibility="public"
   10026     deprecated="not deprecated">
   10027     <method name="fromSpring" return="com.google.inject.Provider&lt;T&gt;"
   10028       abstract="false" native="false" synchronized="false"
   10029       static="true" final="false" visibility="public"
   10030       deprecated="not deprecated">
   10031       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   10032       <param name="name" type="java.lang.String"/>
   10033       <doc>
   10034       <![CDATA[Creates a provider which looks up objects from Spring using the given name.
   10035  Expects a binding to {@link
   10036  org.springframework.beans.factory.BeanFactory}. Example usage:
   10037 
   10038  <pre>
   10039  bind(DataSource.class)
   10040    .toProvider(fromSpring(DataSource.class, "dataSource"));
   10041  </pre>]]>
   10042       </doc>
   10043     </method>
   10044     <method name="bindAll"
   10045       abstract="false" native="false" synchronized="false"
   10046       static="true" final="false" visibility="public"
   10047       deprecated="not deprecated">
   10048       <param name="binder" type="com.google.inject.Binder"/>
   10049       <param name="beanFactory" type="ListableBeanFactory"/>
   10050       <doc>
   10051       <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean
   10052  named "foo", this method creates a binding to the bean's type and
   10053  {@code @Named("foo")}.
   10054 
   10055  @see com.google.inject.name.Named
   10056  @see com.google.inject.name.Names#named(String)]]>
   10057       </doc>
   10058     </method>
   10059     <doc>
   10060     <![CDATA[Integrates Guice with Spring.
   10061 
   10062  @author crazybob (a] google.com (Bob Lee)]]>
   10063     </doc>
   10064   </class>
   10065   <!-- end class com.google.inject.spring.SpringIntegration -->
   10066 </package>
   10067 <package name="com.google.inject.struts2">
   10068   <!-- start class com.google.inject.struts2.GuiceObjectFactory -->
   10069   <class name="GuiceObjectFactory" extends="ObjectFactory"
   10070     abstract="false"
   10071     static="false" final="false" visibility="public"
   10072     deprecated="Use {@link com.google.inject.servlet.Struts2Factory} instead.">
   10073     <constructor name="GuiceObjectFactory"
   10074       static="false" final="false" visibility="public"
   10075       deprecated="not deprecated">
   10076     </constructor>
   10077     <method name="isNoArgConstructorRequired" return="boolean"
   10078       abstract="false" native="false" synchronized="false"
   10079       static="false" final="false" visibility="public"
   10080       deprecated="not deprecated">
   10081     </method>
   10082     <method name="getClassInstance" return="java.lang.Class"
   10083       abstract="false" native="false" synchronized="false"
   10084       static="false" final="false" visibility="public"
   10085       deprecated="not deprecated">
   10086       <param name="name" type="java.lang.String"/>
   10087       <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
   10088     </method>
   10089     <method name="buildBean" return="java.lang.Object"
   10090       abstract="false" native="false" synchronized="false"
   10091       static="false" final="false" visibility="public"
   10092       deprecated="not deprecated">
   10093       <param name="clazz" type="java.lang.Class"/>
   10094       <param name="extraContext" type="java.util.Map"/>
   10095     </method>
   10096     <method name="buildInterceptor" return="Interceptor"
   10097       abstract="false" native="false" synchronized="false"
   10098       static="false" final="false" visibility="public"
   10099       deprecated="not deprecated">
   10100       <param name="interceptorConfig" type="InterceptorConfig"/>
   10101       <param name="interceptorRefParams" type="java.util.Map"/>
   10102       <exception name="ConfigurationException" type="ConfigurationException"/>
   10103     </method>
   10104     <doc>
   10105     <![CDATA[@deprecated Use {@link com.google.inject.servlet.Struts2Factory} instead.]]>
   10106     </doc>
   10107   </class>
   10108   <!-- end class com.google.inject.struts2.GuiceObjectFactory -->
   10109   <!-- start class com.google.inject.struts2.Struts2Factory -->
   10110   <class name="Struts2Factory" extends="ObjectFactory"
   10111     abstract="false"
   10112     static="false" final="false" visibility="public"
   10113     deprecated="not deprecated">
   10114     <constructor name="Struts2Factory"
   10115       static="false" final="false" visibility="public"
   10116       deprecated="not deprecated">
   10117     </constructor>
   10118     <method name="isNoArgConstructorRequired" return="boolean"
   10119       abstract="false" native="false" synchronized="false"
   10120       static="false" final="false" visibility="public"
   10121       deprecated="not deprecated">
   10122     </method>
   10123     <method name="getClassInstance" return="java.lang.Class&lt;?&gt;"
   10124       abstract="false" native="false" synchronized="false"
   10125       static="false" final="false" visibility="public"
   10126       deprecated="not deprecated">
   10127       <param name="name" type="java.lang.String"/>
   10128       <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
   10129     </method>
   10130     <method name="buildBean" return="java.lang.Object"
   10131       abstract="false" native="false" synchronized="false"
   10132       static="false" final="false" visibility="public"
   10133       deprecated="not deprecated">
   10134       <param name="clazz" type="java.lang.Class"/>
   10135       <param name="extraContext" type="java.util.Map&lt;java.lang.String, java.lang.Object&gt;"/>
   10136     </method>
   10137     <method name="buildInterceptor" return="Interceptor"
   10138       abstract="false" native="false" synchronized="false"
   10139       static="false" final="false" visibility="public"
   10140       deprecated="not deprecated">
   10141       <param name="interceptorConfig" type="InterceptorConfig"/>
   10142       <param name="interceptorRefParams" type="java.util.Map"/>
   10143       <exception name="ConfigurationException" type="ConfigurationException"/>
   10144     </method>
   10145     <doc>
   10146     <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with
   10147  GS2 and fixes several bugs.
   10148 
   10149  @author dhanji (a] gmail.com
   10150  @author benmccann.com]]>
   10151     </doc>
   10152   </class>
   10153   <!-- end class com.google.inject.struts2.Struts2Factory -->
   10154   <!-- start class com.google.inject.struts2.Struts2GuicePluginModule -->
   10155   <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule"
   10156     abstract="false"
   10157     static="false" final="false" visibility="public"
   10158     deprecated="not deprecated">
   10159     <constructor name="Struts2GuicePluginModule"
   10160       static="false" final="false" visibility="public"
   10161       deprecated="not deprecated">
   10162     </constructor>
   10163     <method name="configure"
   10164       abstract="false" native="false" synchronized="false"
   10165       static="false" final="false" visibility="protected"
   10166       deprecated="not deprecated">
   10167     </method>
   10168     <doc>
   10169     <![CDATA[Initializes the Struts 2 Guice Plugin.
   10170  Must be added to the injector returned by
   10171      {@link GuiceServletContextListener.getInjector()}.
   10172 
   10173  @author benmccann.com]]>
   10174     </doc>
   10175   </class>
   10176   <!-- end class com.google.inject.struts2.Struts2GuicePluginModule -->
   10177 </package>
   10178 <package name="com.google.inject.throwingproviders">
   10179   <!-- start interface com.google.inject.throwingproviders.CheckedProvider -->
   10180   <interface name="CheckedProvider"    abstract="true"
   10181     static="false" final="false" visibility="public"
   10182     deprecated="not deprecated">
   10183     <method name="get" return="T"
   10184       abstract="true" native="false" synchronized="false"
   10185       static="false" final="false" visibility="public"
   10186       deprecated="not deprecated">
   10187       <exception name="Exception" type="java.lang.Exception"/>
   10188     </method>
   10189     <doc>
   10190     <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
   10191  a checked Exception. Users may not inject {@code T} directly.
   10192 
   10193  <p>This interface must be extended to use application-specific exception types.
   10194  Such subinterfaces may not define new methods, but may narrow the exception type.
   10195  <pre>
   10196  public interface RemoteProvider&lt;T&gt; extends CheckedProvider&lt;T&gt; { 
   10197    T get() throws CustomExceptionOne, CustomExceptionTwo;
   10198  }
   10199  </pre>
   10200 
   10201  <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
   10202  or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
   10203  will invoked at most once within each scope.
   10204  
   10205  @since 3.0]]>
   10206     </doc>
   10207   </interface>
   10208   <!-- end interface com.google.inject.throwingproviders.CheckedProvider -->
   10209   <!-- start class com.google.inject.throwingproviders.CheckedProvides -->
   10210   <class name="CheckedProvides"    abstract="true"
   10211     static="false" final="false" visibility="public"
   10212     deprecated="not deprecated">
   10213     <implements name="java.lang.annotation.Annotation"/>
   10214     <doc>
   10215     <![CDATA[Annotates methods of a {@link Module} to create a {@link CheckedProvider}
   10216  method binding that can throw exceptions. The method's return type is bound
   10217  to a {@link CheckedProvider} that can be injected. Guice will pass
   10218  dependencies to the method as parameters. Install {@literal @}CheckedProvides
   10219  methods by using
   10220  {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the
   10221  module where the methods are declared.
   10222  
   10223  @author sameb (a] google.com (Sam Berlin)
   10224  @since 3.0]]>
   10225     </doc>
   10226   </class>
   10227   <!-- end class com.google.inject.throwingproviders.CheckedProvides -->
   10228   <!-- start class com.google.inject.throwingproviders.ThrowingInject -->
   10229   <class name="ThrowingInject"    abstract="true"
   10230     static="false" final="false" visibility="public"
   10231     deprecated="not deprecated">
   10232     <implements name="java.lang.annotation.Annotation"/>
   10233     <doc>
   10234     <![CDATA[A version of {@literal @}{@link Inject} designed for ThrowingProviders.  Use by:
   10235  <pre><code>ThrowingProviderBinder.create(binder())
   10236     .bind(RemoteProvider.class, Customer.class)
   10237     .providing(CustomerImpl.class);
   10238  </code></pre>
   10239  where CustomerImpl has a constructor annotated with ThrowingInject.
   10240 
   10241  @author sameb (a] google.com (Sam Berlin)]]>
   10242     </doc>
   10243   </class>
   10244   <!-- end class com.google.inject.throwingproviders.ThrowingInject -->
   10245   <!-- start interface com.google.inject.throwingproviders.ThrowingProvider -->
   10246   <interface name="ThrowingProvider"    abstract="true"
   10247     static="false" final="false" visibility="public"
   10248     deprecated="use {@link CheckedProvider} instead.">
   10249     <implements name="com.google.inject.throwingproviders.CheckedProvider&lt;T&gt;"/>
   10250     <method name="get" return="T"
   10251       abstract="true" native="false" synchronized="false"
   10252       static="false" final="false" visibility="public"
   10253       deprecated="not deprecated">
   10254       <exception name="Exception" type="java.lang.Exception"/>
   10255     </method>
   10256     <doc>
   10257     <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
   10258  a checked Exception. Users may not inject {@code T} directly.
   10259 
   10260  <p>This interface must be extended to use application-specific exception types.
   10261  Such subinterfaces may not define new methods:
   10262  <pre>
   10263  public interface RemoteProvider&lt;T&gt; extends ThrowingProvider&lt;T, RemoteException&gt; { }
   10264  </pre>
   10265 
   10266  <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
   10267  or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
   10268  will invoked at most once within each scope.
   10269 
   10270  @author jmourits (a] google.com (Jerome Mourits)
   10271  @author jessewilson (a] google.com (Jesse Wilson)
   10272  @deprecated use {@link CheckedProvider} instead.]]>
   10273     </doc>
   10274   </interface>
   10275   <!-- end interface com.google.inject.throwingproviders.ThrowingProvider -->
   10276   <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder -->
   10277   <class name="ThrowingProviderBinder" extends="java.lang.Object"
   10278     abstract="false"
   10279     static="false" final="false" visibility="public"
   10280     deprecated="not deprecated">
   10281     <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder"
   10282       abstract="false" native="false" synchronized="false"
   10283       static="true" final="false" visibility="public"
   10284       deprecated="not deprecated">
   10285       <param name="binder" type="com.google.inject.Binder"/>
   10286     </method>
   10287     <method name="forModule" return="com.google.inject.Module"
   10288       abstract="false" native="false" synchronized="false"
   10289       static="true" final="false" visibility="public"
   10290       deprecated="not deprecated">
   10291       <param name="module" type="com.google.inject.Module"/>
   10292       <doc>
   10293       <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods.
   10294  
   10295  @since 3.0]]>
   10296       </doc>
   10297     </method>
   10298     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, ?&gt;"
   10299       abstract="false" native="false" synchronized="false"
   10300       static="false" final="false" visibility="public"
   10301       deprecated="Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.">
   10302       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   10303       <param name="clazz" type="java.lang.reflect.Type"/>
   10304       <doc>
   10305       <![CDATA[@deprecated Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.]]>
   10306       </doc>
   10307     </method>
   10308     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   10309       abstract="false" native="false" synchronized="false"
   10310       static="false" final="false" visibility="public"
   10311       deprecated="not deprecated">
   10312       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   10313       <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
   10314     </method>
   10315     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   10316       abstract="false" native="false" synchronized="false"
   10317       static="false" final="false" visibility="public"
   10318       deprecated="not deprecated">
   10319       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   10320       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   10321     </method>
   10322     <doc>
   10323     <![CDATA[<p>Builds a binding for a {@link CheckedProvider}.
   10324  
   10325  <p>You can use a fluent API and custom providers:
   10326  <pre><code>ThrowingProviderBinder.create(binder())
   10327     .bind(RemoteProvider.class, Customer.class)
   10328     .to(RemoteCustomerProvider.class)
   10329     .in(RequestScope.class);
   10330  </code></pre>
   10331  or, you can use throwing provider methods:
   10332  <pre><code>class MyModule extends AbstractModule {
   10333    configure() {
   10334      ThrowingProviderBinder.install(this, binder());
   10335    }
   10336    
   10337    {@literal @}CheckedProvides(RemoteProvider.class)
   10338    {@literal @}RequestScope
   10339    Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException {
   10340      return creator.getCustomerOrThrow();
   10341    }
   10342  }
   10343  </code></pre>
   10344  You also can declare that a CheckedProvider construct
   10345  a particular class whose constructor throws an exception:
   10346  <pre><code>ThrowingProviderBinder.create(binder())
   10347     .bind(RemoteProvider.class, Customer.class)
   10348     .providing(CustomerImpl.class)
   10349     .in(RequestScope.class);
   10350  </code></pre>
   10351  
   10352  @author jmourits (a] google.com (Jerome Mourits)
   10353  @author jessewilson (a] google.com (Jesse Wilson)
   10354  @author sameb (a] google.com (Sam Berlin)]]>
   10355     </doc>
   10356   </class>
   10357   <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder -->
   10358   <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
   10359   <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object"
   10360     abstract="false"
   10361     static="false" final="false" visibility="public"
   10362     deprecated="not deprecated">
   10363     <constructor name="SecondaryBinder" type="java.lang.Class&lt;P&gt;, java.lang.reflect.Type"
   10364       static="false" final="false" visibility="public"
   10365       deprecated="not deprecated">
   10366     </constructor>
   10367     <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   10368       abstract="false" native="false" synchronized="false"
   10369       static="false" final="false" visibility="public"
   10370       deprecated="not deprecated">
   10371       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   10372     </method>
   10373     <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   10374       abstract="false" native="false" synchronized="false"
   10375       static="false" final="false" visibility="public"
   10376       deprecated="not deprecated">
   10377       <param name="annotation" type="java.lang.annotation.Annotation"/>
   10378     </method>
   10379     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   10380       abstract="false" native="false" synchronized="false"
   10381       static="false" final="false" visibility="public"
   10382       deprecated="not deprecated">
   10383       <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/>
   10384     </method>
   10385     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   10386       abstract="false" native="false" synchronized="false"
   10387       static="false" final="false" visibility="public"
   10388       deprecated="not deprecated">
   10389       <param name="targetType" type="java.lang.Class&lt;? extends P&gt;"/>
   10390     </method>
   10391     <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder"
   10392       abstract="false" native="false" synchronized="false"
   10393       static="false" final="false" visibility="public"
   10394       deprecated="not deprecated">
   10395       <param name="cxtorClass" type="java.lang.Class&lt;? extends T&gt;"/>
   10396     </method>
   10397     <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder"
   10398       abstract="false" native="false" synchronized="false"
   10399       static="false" final="false" visibility="public"
   10400       deprecated="not deprecated">
   10401       <param name="cxtorLiteral" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   10402     </method>
   10403     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   10404       abstract="false" native="false" synchronized="false"
   10405       static="false" final="false" visibility="public"
   10406       deprecated="not deprecated">
   10407       <param name="targetKey" type="com.google.inject.Key&lt;? extends P&gt;"/>
   10408     </method>
   10409   </class>
   10410   <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
   10411 </package>
   10412 <package name="com.google.inject.tools.jmx">
   10413   <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean -->
   10414   <interface name="ManagedBindingMBean"    abstract="true"
   10415     static="false" final="false" visibility="public"
   10416     deprecated="not deprecated">
   10417     <method name="getSource" return="java.lang.String"
   10418       abstract="true" native="false" synchronized="false"
   10419       static="false" final="false" visibility="public"
   10420       deprecated="not deprecated">
   10421       <doc>
   10422       <![CDATA[Gets the source of this binding.]]>
   10423       </doc>
   10424     </method>
   10425     <method name="getProvider" return="java.lang.String"
   10426       abstract="true" native="false" synchronized="false"
   10427       static="false" final="false" visibility="public"
   10428       deprecated="not deprecated">
   10429       <doc>
   10430       <![CDATA[Gets the provider to which this binding is bound.]]>
   10431       </doc>
   10432     </method>
   10433     <method name="getKey" return="java.lang.String"
   10434       abstract="true" native="false" synchronized="false"
   10435       static="false" final="false" visibility="public"
   10436       deprecated="not deprecated">
   10437       <doc>
   10438       <![CDATA[Gets the binding key.]]>
   10439       </doc>
   10440     </method>
   10441     <doc>
   10442     <![CDATA[JMX interface to bindings.
   10443 
   10444  @author crazybob (a] google.com (Bob Lee)]]>
   10445     </doc>
   10446   </interface>
   10447   <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean -->
   10448   <!-- start class com.google.inject.tools.jmx.Manager -->
   10449   <class name="Manager" extends="java.lang.Object"
   10450     abstract="false"
   10451     static="false" final="false" visibility="public"
   10452     deprecated="not deprecated">
   10453     <constructor name="Manager"
   10454       static="false" final="false" visibility="public"
   10455       deprecated="not deprecated">
   10456     </constructor>
   10457     <method name="manage"
   10458       abstract="false" native="false" synchronized="false"
   10459       static="true" final="false" visibility="public"
   10460       deprecated="not deprecated">
   10461       <param name="domain" type="java.lang.String"/>
   10462       <param name="injector" type="com.google.inject.Injector"/>
   10463       <doc>
   10464       <![CDATA[Registers all the bindings of an Injector with the platform MBean server.
   10465  Consider using the name of your root {@link Module} class as the domain.]]>
   10466       </doc>
   10467     </method>
   10468     <method name="manage"
   10469       abstract="false" native="false" synchronized="false"
   10470       static="true" final="false" visibility="public"
   10471       deprecated="not deprecated">
   10472       <param name="server" type="javax.management.MBeanServer"/>
   10473       <param name="domain" type="java.lang.String"/>
   10474       <param name="injector" type="com.google.inject.Injector"/>
   10475       <doc>
   10476       <![CDATA[Registers all the bindings of an Injector with the given MBean server.
   10477  Consider using the name of your root {@link Module} class as the domain.]]>
   10478       </doc>
   10479     </method>
   10480     <method name="main"
   10481       abstract="false" native="false" synchronized="false"
   10482       static="true" final="false" visibility="public"
   10483       deprecated="not deprecated">
   10484       <param name="args" type="java.lang.String[]"/>
   10485       <exception name="Exception" type="java.lang.Exception"/>
   10486       <doc>
   10487       <![CDATA[Run with no arguments for usage instructions.]]>
   10488       </doc>
   10489     </method>
   10490     <doc>
   10491     <![CDATA[Provides a JMX interface to Guice.
   10492 
   10493  @author crazybob (a] google.com (Bob Lee)]]>
   10494     </doc>
   10495   </class>
   10496   <!-- end class com.google.inject.tools.jmx.Manager -->
   10497 </package>
   10498 <package name="com.google.inject.util">
   10499   <!-- start class com.google.inject.util.Modules -->
   10500   <class name="Modules" extends="java.lang.Object"
   10501     abstract="false"
   10502     static="false" final="true" visibility="public"
   10503     deprecated="not deprecated">
   10504     <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
   10505       abstract="false" native="false" synchronized="false"
   10506       static="true" final="false" visibility="public"
   10507       deprecated="not deprecated">
   10508       <param name="modules" type="com.google.inject.Module[]"/>
   10509       <doc>
   10510       <![CDATA[Returns a builder that creates a module that overlays override modules over the given
   10511  modules. If a key is bound in both sets of modules, only the binding from the override modules
   10512  is kept. If a single {@link PrivateModule} is supplied or all elements are from
   10513  a single {@link PrivateBinder}, then this will overwrite the private bindings.
   10514  Otherwise, private bindings will not be overwritten unless they are exposed. 
   10515  This can be used to replace the bindings of a production module with test bindings:
   10516  <pre>
   10517  Module functionalTestModule
   10518      = Modules.override(new ProductionModule()).with(new TestModule());
   10519  </pre>
   10520 
   10521  <p>Prefer to write smaller modules that can be reused and tested without overrides.
   10522 
   10523  @param modules the modules whose bindings are open to be overridden]]>
   10524       </doc>
   10525     </method>
   10526     <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
   10527       abstract="false" native="false" synchronized="false"
   10528       static="true" final="false" visibility="public"
   10529       deprecated="not deprecated">
   10530       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   10531       <doc>
   10532       <![CDATA[Returns a builder that creates a module that overlays override modules over the given
   10533  modules. If a key is bound in both sets of modules, only the binding from the override modules
   10534  is kept. If a single {@link PrivateModule} is supplied or all elements are from
   10535  a single {@link PrivateBinder}, then this will overwrite the private bindings.
   10536  Otherwise, private bindings will not be overwritten unless they are exposed. 
   10537  This can be used to replace the bindings of a production module with test bindings:
   10538  <pre>
   10539  Module functionalTestModule
   10540      = Modules.override(getProductionModules()).with(getTestModules());
   10541  </pre>
   10542 
   10543  <p>Prefer to write smaller modules that can be reused and tested without overrides.
   10544 
   10545  @param modules the modules whose bindings are open to be overridden]]>
   10546       </doc>
   10547     </method>
   10548     <method name="combine" return="com.google.inject.Module"
   10549       abstract="false" native="false" synchronized="false"
   10550       static="true" final="false" visibility="public"
   10551       deprecated="not deprecated">
   10552       <param name="modules" type="com.google.inject.Module[]"/>
   10553       <doc>
   10554       <![CDATA[Returns a new module that installs all of {@code modules}.]]>
   10555       </doc>
   10556     </method>
   10557     <method name="combine" return="com.google.inject.Module"
   10558       abstract="false" native="false" synchronized="false"
   10559       static="true" final="false" visibility="public"
   10560       deprecated="not deprecated">
   10561       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   10562       <doc>
   10563       <![CDATA[Returns a new module that installs all of {@code modules}.]]>
   10564       </doc>
   10565     </method>
   10566     <field name="EMPTY_MODULE" type="com.google.inject.Module"
   10567       transient="false" volatile="false"
   10568       static="true" final="true" visibility="public"
   10569       deprecated="not deprecated">
   10570     </field>
   10571     <doc>
   10572     <![CDATA[Static utility methods for creating and working with instances of {@link Module}.
   10573 
   10574  @author jessewilson (a] google.com (Jesse Wilson)
   10575  @since 2.0]]>
   10576     </doc>
   10577   </class>
   10578   <!-- end class com.google.inject.util.Modules -->
   10579   <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
   10580   <interface name="Modules.OverriddenModuleBuilder"    abstract="true"
   10581     static="true" final="false" visibility="public"
   10582     deprecated="not deprecated">
   10583     <method name="with" return="com.google.inject.Module"
   10584       abstract="true" native="false" synchronized="false"
   10585       static="false" final="false" visibility="public"
   10586       deprecated="not deprecated">
   10587       <param name="overrides" type="com.google.inject.Module[]"/>
   10588       <doc>
   10589       <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   10590       </doc>
   10591     </method>
   10592     <method name="with" return="com.google.inject.Module"
   10593       abstract="true" native="false" synchronized="false"
   10594       static="false" final="false" visibility="public"
   10595       deprecated="not deprecated">
   10596       <param name="overrides" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   10597       <doc>
   10598       <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   10599       </doc>
   10600     </method>
   10601     <doc>
   10602     <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   10603     </doc>
   10604   </interface>
   10605   <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
   10606   <!-- start class com.google.inject.util.Providers -->
   10607   <class name="Providers" extends="java.lang.Object"
   10608     abstract="false"
   10609     static="false" final="true" visibility="public"
   10610     deprecated="not deprecated">
   10611     <method name="of" return="com.google.inject.Provider&lt;T&gt;"
   10612       abstract="false" native="false" synchronized="false"
   10613       static="true" final="false" visibility="public"
   10614       deprecated="not deprecated">
   10615       <param name="instance" type="T"/>
   10616       <doc>
   10617       <![CDATA[Returns a provider which always provides {@code instance}.  This should not
   10618  be necessary to use in your application, but is helpful for several types
   10619  of unit tests.
   10620 
   10621  @param instance the instance that should always be provided.  This is also
   10622      permitted to be null, to enable aggressive testing, although in real
   10623      life a Guice-supplied Provider will never return null.]]>
   10624       </doc>
   10625     </method>
   10626     <method name="guicify" return="com.google.inject.Provider&lt;T&gt;"
   10627       abstract="false" native="false" synchronized="false"
   10628       static="true" final="false" visibility="public"
   10629       deprecated="not deprecated">
   10630       <param name="provider" type="javax.inject.Provider&lt;T&gt;"/>
   10631       <doc>
   10632       <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given
   10633  JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary,
   10634  since Guice providers directly implement the JSR-330 interface.
   10635  
   10636  @since 3.0]]>
   10637       </doc>
   10638     </method>
   10639     <doc>
   10640     <![CDATA[Static utility methods for creating and working with instances of
   10641  {@link Provider}.
   10642 
   10643  @author Kevin Bourrillion (kevinb9n (a] gmail.com)
   10644  @since 2.0]]>
   10645     </doc>
   10646   </class>
   10647   <!-- end class com.google.inject.util.Providers -->
   10648   <!-- start class com.google.inject.util.Types -->
   10649   <class name="Types" extends="java.lang.Object"
   10650     abstract="false"
   10651     static="false" final="true" visibility="public"
   10652     deprecated="not deprecated">
   10653     <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType"
   10654       abstract="false" native="false" synchronized="false"
   10655       static="true" final="false" visibility="public"
   10656       deprecated="not deprecated">
   10657       <param name="rawType" type="java.lang.reflect.Type"/>
   10658       <param name="typeArguments" type="java.lang.reflect.Type[]"/>
   10659       <doc>
   10660       <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
   10661  {@code rawType}. The returned type does not have an owner type.
   10662 
   10663  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10664       </doc>
   10665     </method>
   10666     <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType"
   10667       abstract="false" native="false" synchronized="false"
   10668       static="true" final="false" visibility="public"
   10669       deprecated="not deprecated">
   10670       <param name="ownerType" type="java.lang.reflect.Type"/>
   10671       <param name="rawType" type="java.lang.reflect.Type"/>
   10672       <param name="typeArguments" type="java.lang.reflect.Type[]"/>
   10673       <doc>
   10674       <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
   10675  {@code rawType} and enclosed by {@code ownerType}.
   10676 
   10677  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10678       </doc>
   10679     </method>
   10680     <method name="arrayOf" return="java.lang.reflect.GenericArrayType"
   10681       abstract="false" native="false" synchronized="false"
   10682       static="true" final="false" visibility="public"
   10683       deprecated="not deprecated">
   10684       <param name="componentType" type="java.lang.reflect.Type"/>
   10685       <doc>
   10686       <![CDATA[Returns an array type whose elements are all instances of
   10687  {@code componentType}.
   10688 
   10689  @return a {@link java.io.Serializable serializable} generic array type.]]>
   10690       </doc>
   10691     </method>
   10692     <method name="subtypeOf" return="java.lang.reflect.WildcardType"
   10693       abstract="false" native="false" synchronized="false"
   10694       static="true" final="false" visibility="public"
   10695       deprecated="not deprecated">
   10696       <param name="bound" type="java.lang.reflect.Type"/>
   10697       <doc>
   10698       <![CDATA[Returns a type that represents an unknown type that extends {@code bound}.
   10699  For example, if {@code bound} is {@code CharSequence.class}, this returns
   10700  {@code ? extends CharSequence}. If {@code bound} is {@code Object.class},
   10701  this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]>
   10702       </doc>
   10703     </method>
   10704     <method name="supertypeOf" return="java.lang.reflect.WildcardType"
   10705       abstract="false" native="false" synchronized="false"
   10706       static="true" final="false" visibility="public"
   10707       deprecated="not deprecated">
   10708       <param name="bound" type="java.lang.reflect.Type"/>
   10709       <doc>
   10710       <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For
   10711  example, if {@code bound} is {@code String.class}, this returns {@code ?
   10712  super String}.]]>
   10713       </doc>
   10714     </method>
   10715     <method name="listOf" return="java.lang.reflect.ParameterizedType"
   10716       abstract="false" native="false" synchronized="false"
   10717       static="true" final="false" visibility="public"
   10718       deprecated="not deprecated">
   10719       <param name="elementType" type="java.lang.reflect.Type"/>
   10720       <doc>
   10721       <![CDATA[Returns a type modelling a {@link List} whose elements are of type
   10722  {@code elementType}.
   10723 
   10724  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10725       </doc>
   10726     </method>
   10727     <method name="setOf" return="java.lang.reflect.ParameterizedType"
   10728       abstract="false" native="false" synchronized="false"
   10729       static="true" final="false" visibility="public"
   10730       deprecated="not deprecated">
   10731       <param name="elementType" type="java.lang.reflect.Type"/>
   10732       <doc>
   10733       <![CDATA[Returns a type modelling a {@link Set} whose elements are of type
   10734  {@code elementType}.
   10735 
   10736  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10737       </doc>
   10738     </method>
   10739     <method name="mapOf" return="java.lang.reflect.ParameterizedType"
   10740       abstract="false" native="false" synchronized="false"
   10741       static="true" final="false" visibility="public"
   10742       deprecated="not deprecated">
   10743       <param name="keyType" type="java.lang.reflect.Type"/>
   10744       <param name="valueType" type="java.lang.reflect.Type"/>
   10745       <doc>
   10746       <![CDATA[Returns a type modelling a {@link Map} whose keys are of type
   10747  {@code keyType} and whose values are of type {@code valueType}.
   10748 
   10749  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10750       </doc>
   10751     </method>
   10752     <method name="providerOf" return="java.lang.reflect.ParameterizedType"
   10753       abstract="false" native="false" synchronized="false"
   10754       static="true" final="false" visibility="public"
   10755       deprecated="not deprecated">
   10756       <param name="providedType" type="java.lang.reflect.Type"/>
   10757       <doc>
   10758       <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type
   10759  {@code elementType}.
   10760 
   10761  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10762       </doc>
   10763     </method>
   10764     <doc>
   10765     <![CDATA[Static methods for working with types.
   10766 
   10767  @author crazybob (a] google.com (Bob Lee)
   10768  @since 2.0]]>
   10769     </doc>
   10770   </class>
   10771   <!-- end class com.google.inject.util.Types -->
   10772 </package>
   10773 
   10774 </api>
   10775