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 Tue Apr 28 17:33:25 EDT 2015 -->
      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 /usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/jdiff.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/xerces.jar -classpath /usr/local/google/home/cgdecker/Projects/guice/lib/aopalliance.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/guava-16.0.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/javax.inject.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/asm-5.0.3.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/bnd-0.0.384.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/cglib-3.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/easymock.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/felix-2.0.5.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/guava-testlib-16.0.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jarjar-1.1.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/javax.inject-tck.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/jsr305.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/junit.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/munge.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/safesax.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/spring-beans.jar:/usr/local/google/home/cgdecker/Projects/guice/lib/build/spring-core.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/dagger-adapter/lib/dagger-2.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/antlr-2.7.5h3.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/aopalliance.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/cglib-nodep-3.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-collections.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-io.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/db4o-6.4.14.8131-java5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/dom4j-1.6.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/easymock.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/ejb3-persistence.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-annotations.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-entitymanager.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate-search.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hibernate3.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/hsqldb.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/javassist.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jaxen-1.1-beta-7.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jboss-archive-browsing.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/jta.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/log4j-1.2.14.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/ognl-2.6.7.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/oro-2.0.8.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/servlet-api-2.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/persist/lib/xwork-2.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/ant-1.6.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-fileupload-1.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-io-1.3.2.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/commons-logging-1.0.4.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/core-3.1.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/freemarker-2.3.16.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/javassist.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jetty-6.1.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jetty-util-6.1.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jsp-2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/jsp-api-2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/ognl-3.0.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/servlet-api-2.5.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/struts2-core-2.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/extensions/struts2/lib/xwork-core-2.2.1.jar:/usr/local/google/home/cgdecker/Projects/guice/build/classes -doclet jdiff.JDiff -docletpath /usr/local/google/home/cgdecker/Projects/guice/lib/build/jdiff/jdiff.jar:/usr/local/google/home/cgdecker/Projects/guice/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="dependency" type="com.google.inject.spi.Dependency&lt;T&gt;"/>
    480       <doc>
    481       <![CDATA[Returns the provider used to obtain instances for the given injection key.
    482  The returned provider will be attached to the injection point and will
    483  follow the nullability specified in the dependency.
    484  Additionally, the returned provider will not be valid until the {@link Injector} 
    485  has been created. The provider will throw an {@code IllegalStateException} if you
    486  try to use it beforehand.
    487 
    488  @since 4.0]]>
    489       </doc>
    490     </method>
    491     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    492       abstract="true" native="false" synchronized="false"
    493       static="false" final="false" visibility="public"
    494       deprecated="not deprecated">
    495       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    496       <doc>
    497       <![CDATA[Returns the provider used to obtain instances for the given injection type.
    498  The returned provider will not be valid until the {@link Injector} has been
    499  created. The provider will throw an {@code IllegalStateException} if you
    500  try to use it beforehand.
    501 
    502  @since 2.0]]>
    503       </doc>
    504     </method>
    505     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    506       abstract="true" native="false" synchronized="false"
    507       static="false" final="false" visibility="public"
    508       deprecated="not deprecated">
    509       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
    510       <doc>
    511       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
    512  of the given type {@code T}. The returned members injector will not be valid until the main
    513  {@link Injector} has been created. The members injector will throw an {@code
    514  IllegalStateException} if you try to use it beforehand.
    515 
    516  @param typeLiteral type to get members injector for
    517  @since 2.0]]>
    518       </doc>
    519     </method>
    520     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    521       abstract="true" native="false" synchronized="false"
    522       static="false" final="false" visibility="public"
    523       deprecated="not deprecated">
    524       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    525       <doc>
    526       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
    527  of the given type {@code T}. The returned members injector will not be valid until the main
    528  {@link Injector} has been created. The members injector will throw an {@code
    529  IllegalStateException} if you try to use it beforehand.
    530 
    531  @param type type to get members injector for
    532  @since 2.0]]>
    533       </doc>
    534     </method>
    535     <method name="convertToTypes"
    536       abstract="true" native="false" synchronized="false"
    537       static="false" final="false" visibility="public"
    538       deprecated="not deprecated">
    539       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    540       <param name="converter" type="com.google.inject.spi.TypeConverter"/>
    541       <doc>
    542       <![CDATA[Binds a type converter. The injector will use the given converter to
    543  convert string constants to matching types as needed.
    544 
    545  @param typeMatcher matches types the converter can handle
    546  @param converter converts values
    547  @since 2.0]]>
    548       </doc>
    549     </method>
    550     <method name="bindListener"
    551       abstract="true" native="false" synchronized="false"
    552       static="false" final="false" visibility="public"
    553       deprecated="not deprecated">
    554       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    555       <param name="listener" type="com.google.inject.spi.TypeListener"/>
    556       <doc>
    557       <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters
    558  injectable types matched by the given type matcher.
    559 
    560  @param typeMatcher that matches injectable types the listener should be notified of
    561  @param listener for injectable types matched by typeMatcher
    562  @since 2.0]]>
    563       </doc>
    564     </method>
    565     <method name="bindListener"
    566       abstract="true" native="false" synchronized="false"
    567       static="false" final="false" visibility="public"
    568       deprecated="not deprecated">
    569       <param name="bindingMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
    570       <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/>
    571       <doc>
    572       <![CDATA[Registers listeners for provisioned objects. Guice will notify the
    573  listeners just before and after the object is provisioned. Provisioned
    574  objects that are also injectable (everything except objects provided
    575  through Providers) can also be notified through TypeListeners registered in
    576  {@link #bindListener}.
    577  
    578  @param bindingMatcher that matches bindings of provisioned objects the listener
    579           should be notified of
    580  @param listeners for provisioned objects matched by bindingMatcher 
    581  @since 4.0]]>
    582       </doc>
    583     </method>
    584     <method name="withSource" return="com.google.inject.Binder"
    585       abstract="true" native="false" synchronized="false"
    586       static="false" final="false" visibility="public"
    587       deprecated="not deprecated">
    588       <param name="source" type="java.lang.Object"/>
    589       <doc>
    590       <![CDATA[Returns a binder that uses {@code source} as the reference location for
    591  configuration errors. This is typically a {@link StackTraceElement}
    592  for {@code .java} source but it could any binding source, such as the
    593  path to a {@code .properties} file.
    594 
    595  @param source any object representing the source location and has a
    596      concise {@link Object#toString() toString()} value
    597  @return a binder that shares its configuration with this binder
    598  @since 2.0]]>
    599       </doc>
    600     </method>
    601     <method name="skipSources" return="com.google.inject.Binder"
    602       abstract="true" native="false" synchronized="false"
    603       static="false" final="false" visibility="public"
    604       deprecated="not deprecated">
    605       <param name="classesToSkip" type="java.lang.Class[]"/>
    606       <doc>
    607       <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the
    608  calling code. The caller's {@link StackTraceElement} is used to locate
    609  the source of configuration errors.
    610 
    611  @param classesToSkip library classes that create bindings on behalf of
    612       their clients.
    613  @return a binder that shares its configuration with this binder.
    614  @since 2.0]]>
    615       </doc>
    616     </method>
    617     <method name="newPrivateBinder" return="com.google.inject.PrivateBinder"
    618       abstract="true" native="false" synchronized="false"
    619       static="false" final="false" visibility="public"
    620       deprecated="not deprecated">
    621       <doc>
    622       <![CDATA[Creates a new private child environment for bindings and other configuration. The returned
    623  binder can be used to add and configuration information in this environment. See {@link
    624  PrivateModule} for details.
    625 
    626  @return a binder that inherits configuration from this binder. Only exposed configuration on
    627       the returned binder will be visible to this binder.
    628  @since 2.0]]>
    629       </doc>
    630     </method>
    631     <method name="requireExplicitBindings"
    632       abstract="true" native="false" synchronized="false"
    633       static="false" final="false" visibility="public"
    634       deprecated="not deprecated">
    635       <doc>
    636       <![CDATA[Instructs the Injector that bindings must be listed in a Module in order to
    637  be injected. Classes that are not explicitly bound in a module cannot be
    638  injected. Bindings created through a linked binding
    639  (<code>bind(Foo.class).to(FooImpl.class)</code>) are allowed, but the
    640  implicit binding (<code>FooImpl</code>) cannot be directly injected unless
    641  it is also explicitly bound (<code>bind(FooImpl.class)</code>).
    642  <p>
    643  Tools can still retrieve bindings for implicit bindings (bindings created
    644  through a linked binding) if explicit bindings are required, however
    645  {@link Binding#getProvider} will fail.
    646  <p>
    647  By default, explicit bindings are not required.
    648  <p>
    649  If a parent injector requires explicit bindings, then all child injectors
    650  (and private modules within that injector) also require explicit bindings.
    651  If a parent does not require explicit bindings, a child injector or private
    652  module may optionally declare itself as requiring explicit bindings. If it
    653  does, the behavior is limited only to that child or any grandchildren. No
    654  siblings of the child will require explicit bindings.
    655  <p>
    656  In the absence of an explicit binding for the target, linked bindings in
    657  child injectors create a binding for the target in the parent. Since this
    658  behavior can be surprising, it causes an error instead if explicit bindings
    659  are required. To avoid this error, add an explicit binding for the target,
    660  either in the child or the parent.
    661  
    662  @since 3.0]]>
    663       </doc>
    664     </method>
    665     <method name="disableCircularProxies"
    666       abstract="true" native="false" synchronized="false"
    667       static="false" final="false" visibility="public"
    668       deprecated="not deprecated">
    669       <doc>
    670       <![CDATA[Prevents Guice from constructing a {@link Proxy} when a circular dependency
    671  is found.  By default, circular proxies are not disabled.
    672  <p>
    673  If a parent injector disables circular proxies, then all child injectors
    674  (and private modules within that injector) also disable circular proxies.
    675  If a parent does not disable circular proxies, a child injector or private
    676  module may optionally declare itself as disabling circular proxies. If it
    677  does, the behavior is limited only to that child or any grandchildren. No
    678  siblings of the child will disable circular proxies.
    679  
    680  @since 3.0]]>
    681       </doc>
    682     </method>
    683     <method name="requireAtInjectOnConstructors"
    684       abstract="true" native="false" synchronized="false"
    685       static="false" final="false" visibility="public"
    686       deprecated="not deprecated">
    687       <doc>
    688       <![CDATA[Requires that a {@literal @}{@link Inject} annotation exists on a constructor in order for
    689  Guice to consider it an eligible injectable class. By default, Guice will inject classes that
    690  have a no-args constructor if no {@literal @}{@link Inject} annotation exists on any
    691  constructor.
    692  <p>
    693  If the class is bound using {@link LinkedBindingBuilder#toConstructor}, Guice will still inject
    694  that constructor regardless of annotations.
    695 
    696  @since 4.0]]>
    697       </doc>
    698     </method>
    699     <method name="requireExactBindingAnnotations"
    700       abstract="true" native="false" synchronized="false"
    701       static="false" final="false" visibility="public"
    702       deprecated="not deprecated">
    703       <doc>
    704       <![CDATA[Requires that Guice finds an exactly matching binding annotation.  This disables the
    705  error-prone feature in Guice where it can substitute a binding for
    706  <code>{@literal @}Named Foo</code> when attempting to inject
    707  <code>{@literal @}Named("foo") Foo</code>.
    708 
    709  @since 4.0]]>
    710       </doc>
    711     </method>
    712     <method name="scanModulesForAnnotatedMethods"
    713       abstract="true" native="false" synchronized="false"
    714       static="false" final="false" visibility="public"
    715       deprecated="not deprecated">
    716       <param name="scanner" type="com.google.inject.spi.ModuleAnnotatedMethodScanner"/>
    717       <doc>
    718       <![CDATA[Adds a scanner that will look in all installed modules for annotations the scanner can parse,
    719  and binds them like {@literal @}Provides methods. Scanners apply to all modules installed in
    720  the injector. Scanners installed in child injectors or private modules do not impact modules in
    721  siblings or parents, however scanners installed in parents do apply to all child injectors and
    722  private modules.
    723 
    724  @since 4.0]]>
    725       </doc>
    726     </method>
    727     <doc>
    728     <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be
    729  used to create an {@link Injector}. Guice provides this object to your
    730  application's {@link Module} implementors so they may each contribute
    731  their own bindings and other registrations.
    732 
    733  <h3>The Guice Binding EDSL</h3>
    734 
    735  Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you
    736  create bindings simply and readably.  This approach is great for overall
    737  usability, but it does come with a small cost: <b>it is difficult to
    738  learn how to use the Binding EDSL by reading
    739  method-level javadocs</b>.  Instead, you should consult the series of
    740  examples below.  To save space, these examples omit the opening
    741  {@code binder}, just as you will if your module extends
    742  {@link AbstractModule}.
    743 
    744  <pre>
    745      bind(ServiceImpl.class);</pre>
    746 
    747  This statement does essentially nothing; it "binds the {@code ServiceImpl}
    748  class to itself" and does not change Guice's default behavior.  You may still
    749  want to use this if you prefer your {@link Module} class to serve as an
    750  explicit <i>manifest</i> for the services it provides.  Also, in rare cases,
    751  Guice may be unable to validate a binding at injector creation time unless it
    752  is given explicitly.
    753 
    754  <pre>
    755      bind(Service.class).to(ServiceImpl.class);</pre>
    756 
    757  Specifies that a request for a {@code Service} instance with no binding
    758  annotations should be treated as if it were a request for a
    759  {@code ServiceImpl} instance. This <i>overrides</i> the function of any
    760  {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy}
    761  annotations found on {@code Service}, since Guice will have already
    762  "moved on" to {@code ServiceImpl} before it reaches the point when it starts
    763  looking for these annotations.
    764 
    765  <pre>
    766      bind(Service.class).toProvider(ServiceProvider.class);</pre>
    767 
    768  In this example, {@code ServiceProvider} must extend or implement
    769  {@code Provider<Service>}. This binding specifies that Guice should resolve
    770  an unannotated injection request for {@code Service} by first resolving an
    771  instance of {@code ServiceProvider} in the regular way, then calling
    772  {@link Provider#get get()} on the resulting Provider instance to obtain the
    773  {@code Service} instance.
    774 
    775  <p>The {@link Provider} you use here does not have to be a "factory"; that
    776  is, a provider which always <i>creates</i> each instance it provides.
    777  However, this is generally a good practice to follow.  You can then use
    778  Guice's concept of {@link Scope scopes} to guide when creation should happen
    779  -- "letting Guice work for you".
    780 
    781  <pre>
    782      bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre>
    783 
    784  Like the previous example, but only applies to injection requests that use
    785  the binding annotation {@code @Red}.  If your module also includes bindings
    786  for particular <i>values</i> of the {@code @Red} annotation (see below),
    787  then this binding will serve as a "catch-all" for any values of {@code @Red}
    788  that have no exact match in the bindings.
    789  
    790  <pre>
    791      bind(ServiceImpl.class).in(Singleton.class);
    792      // or, alternatively
    793      bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre>
    794 
    795  Either of these statements places the {@code ServiceImpl} class into
    796  singleton scope.  Guice will create only one instance of {@code ServiceImpl}
    797  and will reuse it for all injection requests of this type.  Note that it is
    798  still possible to bind another instance of {@code ServiceImpl} if the second
    799  binding is qualified by an annotation as in the previous example.  Guice is
    800  not overly concerned with <i>preventing</i> you from creating multiple
    801  instances of your "singletons", only with <i>enabling</i> your application to
    802  share only one instance if that's all you tell Guice you need.
    803 
    804  <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that
    805  was specified with an annotation on the {@code ServiceImpl} class.
    806  
    807  <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are
    808  servlet-specific scopes available in
    809  {@code com.google.inject.servlet.ServletScopes}, and your Modules can
    810  contribute their own custom scopes for use here as well.
    811 
    812  <pre>
    813      bind(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {})
    814          .to(CreditCardPaymentService.class);</pre>
    815 
    816  This admittedly odd construct is the way to bind a parameterized type. It
    817  tells Guice how to honor an injection request for an element of type
    818  {@code PaymentService<CreditCard>}. The class
    819  {@code CreditCardPaymentService} must implement the
    820  {@code PaymentService<CreditCard>} interface.  Guice cannot currently bind or
    821  inject a generic type, such as {@code Set<E>}; all type parameters must be
    822  fully specified.
    823 
    824  <pre>
    825      bind(Service.class).toInstance(new ServiceImpl());
    826      // or, alternatively
    827      bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre>
    828 
    829  In this example, your module itself, <i>not Guice</i>, takes responsibility
    830  for obtaining a {@code ServiceImpl} instance, then asks Guice to always use
    831  this single instance to fulfill all {@code Service} injection requests.  When
    832  the {@link Injector} is created, it will automatically perform field
    833  and method injection for this instance, but any injectable constructor on
    834  {@code ServiceImpl} is simply ignored.  Note that using this approach results
    835  in "eager loading" behavior that you can't control.
    836 
    837  <pre>
    838      bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre>
    839 
    840  Sets up a constant binding. Constant injections must always be annotated.
    841  When a constant binding's value is a string, it is eligile for conversion to
    842  all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to
    843  {@link Class#forName class literals}. Conversions for other types can be
    844  configured using {@link #convertToTypes(Matcher, TypeConverter)
    845  convertToTypes()}.
    846 
    847  <pre>
    848    {@literal @}Color("red") Color red; // A member variable (field)
    849     . . .
    850      red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class);
    851      bind(Service.class).annotatedWith(red).to(RedService.class);</pre>
    852 
    853  If your binding annotation has parameters you can apply different bindings to
    854  different specific values of your annotation.  Getting your hands on the
    855  right instance of the annotation is a bit of a pain -- one approach, shown
    856  above, is to apply a prototype annotation to a field in your module class, so
    857  that you can read this annotation instance and give it to Guice.
    858 
    859  <pre>
    860      bind(Service.class)
    861          .annotatedWith(Names.named("blue"))
    862          .to(BlueService.class);</pre>
    863 
    864  Differentiating by names is a common enough use case that we provided a
    865  standard annotation, {@link com.google.inject.name.Named @Named}.  Because of
    866  Guice's library support, binding by name is quite easier than in the
    867  arbitrary binding annotation case we just saw.  However, remember that these
    868  names will live in a single flat namespace with all the other names used in
    869  your application.
    870 
    871  <pre>
    872      Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection();
    873      bind(ServiceImpl.class)
    874          .toConstructor(loneCtor);</pre>
    875 
    876  In this example, we directly tell Guice which constructor to use in a concrete
    877  class implementation. It means that we do not need to place {@literal @}Inject
    878  on any of the constructors and that Guice treats the provided constructor as though
    879  it were annotated so. It is useful for cases where you cannot modify existing
    880  classes and is a bit simpler than using a {@link Provider}.
    881 
    882  <p>The above list of examples is far from exhaustive.  If you can think of
    883  how the concepts of one example might coexist with the concepts from another,
    884  you can most likely weave the two together.  If the two concepts make no
    885  sense with each other, you most likely won't be able to do it.  In a few
    886  cases Guice will let something bogus slip by, and will then inform you of
    887  the problems at runtime, as soon as you try to create your Injector.
    888 
    889  <p>The other methods of Binder such as {@link #bindScope},
    890  {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection},
    891  {@link #addError} and {@link #currentStage} are not part of the Binding EDSL;
    892  you can learn how to use these in the usual way, from the method
    893  documentation.
    894 
    895  @author crazybob (a] google.com (Bob Lee)
    896  @author jessewilson (a] google.com (Jesse Wilson)
    897  @author kevinb (a] google.com (Kevin Bourrillion)]]>
    898     </doc>
    899   </interface>
    900   <!-- end interface com.google.inject.Binder -->
    901   <!-- start interface com.google.inject.Binding -->
    902   <interface name="Binding"    abstract="true"
    903     static="false" final="false" visibility="public"
    904     deprecated="not deprecated">
    905     <implements name="com.google.inject.spi.Element"/>
    906     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
    907       abstract="true" native="false" synchronized="false"
    908       static="false" final="false" visibility="public"
    909       deprecated="not deprecated">
    910       <doc>
    911       <![CDATA[Returns the key for this binding.]]>
    912       </doc>
    913     </method>
    914     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    915       abstract="true" native="false" synchronized="false"
    916       static="false" final="false" visibility="public"
    917       deprecated="not deprecated">
    918       <doc>
    919       <![CDATA[Returns the scoped provider guice uses to fulfill requests for this
    920  binding.
    921 
    922  @throws UnsupportedOperationException when invoked on a {@link Binding}
    923       created via {@link com.google.inject.spi.Elements#getElements}. This
    924       method is only supported on {@link Binding}s returned from an injector.]]>
    925       </doc>
    926     </method>
    927     <method name="acceptTargetVisitor" return="V"
    928       abstract="true" native="false" synchronized="false"
    929       static="false" final="false" visibility="public"
    930       deprecated="not deprecated">
    931       <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;? super T, V&gt;"/>
    932       <doc>
    933       <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target.
    934 
    935  @param visitor to call back on
    936  @since 2.0]]>
    937       </doc>
    938     </method>
    939     <method name="acceptScopingVisitor" return="V"
    940       abstract="true" native="false" synchronized="false"
    941       static="false" final="false" visibility="public"
    942       deprecated="not deprecated">
    943       <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
    944       <doc>
    945       <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping.
    946 
    947  @param visitor to call back on
    948  @since 2.0]]>
    949       </doc>
    950     </method>
    951     <doc>
    952     <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the
    953  type. This interface is part of the introspection API and is intended primarily for use by 
    954  tools.
    955 
    956  <p>Bindings are created in several ways:
    957  <ul>
    958      <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()}
    959          statements:
    960  <pre>
    961      bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);
    962      bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li>
    963      <li>Implicitly by the Injector by following a type's {@link ImplementedBy
    964          pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or
    965          default constructor.</li>
    966      <li>By converting a bound instance to a different type.</li>
    967      <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li>
    968  </ul>
    969 
    970 
    971  <p>They exist on both modules and on injectors, and their behaviour is different for each:
    972  <ul>
    973      <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances.
    974          This is because the applicable scopes and interceptors may not be known until an injector
    975          is created. From a tool's perspective, module bindings are like the injector's source
    976          code. They can be inspected or rewritten, but this analysis must be done statically.</li>
    977      <li><strong>Injector bindings</strong> are complete and valid and can be used to provide
    978          instances. From a tools' perspective, injector bindings are like reflection for an
    979          injector. They have full runtime information, including the complete graph of injections
    980          necessary to satisfy a binding.</li>
    981  </ul>
    982 
    983  @param <T> the bound type. The injected is always assignable to this type.
    984 
    985  @author crazybob (a] google.com (Bob Lee)
    986  @author jessewilson (a] google.com (Jesse Wilson)]]>
    987     </doc>
    988   </interface>
    989   <!-- end interface com.google.inject.Binding -->
    990   <!-- start class com.google.inject.BindingAnnotation -->
    991   <class name="BindingAnnotation"    abstract="true"
    992     static="false" final="false" visibility="public"
    993     deprecated="not deprecated">
    994     <implements name="java.lang.annotation.Annotation"/>
    995     <doc>
    996     <![CDATA[Annotates annotations which are used for binding. Only one such annotation
    997  may apply to a single injection point. You must also annotate binder
    998  annotations with {@code @Retention(RUNTIME)}. For example:
    999 
   1000  <pre>
   1001    {@code @}Retention(RUNTIME)
   1002    {@code @}Target({ FIELD, PARAMETER, METHOD })
   1003    {@code @}BindingAnnotation
   1004    public {@code @}interface Transactional {}
   1005  </pre>
   1006 
   1007  @author crazybob (a] google.com (Bob Lee)]]>
   1008     </doc>
   1009   </class>
   1010   <!-- end class com.google.inject.BindingAnnotation -->
   1011   <!-- start class com.google.inject.ConfigurationException -->
   1012   <class name="ConfigurationException" extends="java.lang.RuntimeException"
   1013     abstract="false"
   1014     static="false" final="true" visibility="public"
   1015     deprecated="not deprecated">
   1016     <constructor name="ConfigurationException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
   1017       static="false" final="false" visibility="public"
   1018       deprecated="not deprecated">
   1019       <doc>
   1020       <![CDATA[Creates a ConfigurationException containing {@code messages}.]]>
   1021       </doc>
   1022     </constructor>
   1023     <method name="withPartialValue" return="com.google.inject.ConfigurationException"
   1024       abstract="false" native="false" synchronized="false"
   1025       static="false" final="false" visibility="public"
   1026       deprecated="not deprecated">
   1027       <param name="partialValue" type="java.lang.Object"/>
   1028       <doc>
   1029       <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]>
   1030       </doc>
   1031     </method>
   1032     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   1033       abstract="false" native="false" synchronized="false"
   1034       static="false" final="false" visibility="public"
   1035       deprecated="not deprecated">
   1036       <doc>
   1037       <![CDATA[Returns messages for the errors that caused this exception.]]>
   1038       </doc>
   1039     </method>
   1040     <method name="getPartialValue" return="E"
   1041       abstract="false" native="false" synchronized="false"
   1042       static="false" final="false" visibility="public"
   1043       deprecated="not deprecated">
   1044       <doc>
   1045       <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use
   1046  this while collecting additional configuration problems.
   1047 
   1048  @return the partial value, or {@code null} if none was set. The type of the partial value is
   1049       specified by the throwing method.]]>
   1050       </doc>
   1051     </method>
   1052     <method name="getMessage" return="java.lang.String"
   1053       abstract="false" native="false" synchronized="false"
   1054       static="false" final="false" visibility="public"
   1055       deprecated="not deprecated">
   1056     </method>
   1057     <doc>
   1058     <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported
   1059  scope is found. Clients should catch this exception, log it, and stop execution.
   1060 
   1061  @author jessewilson (a] google.com (Jesse Wilson)
   1062  @since 2.0]]>
   1063     </doc>
   1064   </class>
   1065   <!-- end class com.google.inject.ConfigurationException -->
   1066   <!-- start class com.google.inject.CreationException -->
   1067   <class name="CreationException" extends="java.lang.RuntimeException"
   1068     abstract="false"
   1069     static="false" final="false" visibility="public"
   1070     deprecated="not deprecated">
   1071     <constructor name="CreationException" type="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   1072       static="false" final="false" visibility="public"
   1073       deprecated="not deprecated">
   1074       <doc>
   1075       <![CDATA[Creates a CreationException containing {@code messages}.]]>
   1076       </doc>
   1077     </constructor>
   1078     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   1079       abstract="false" native="false" synchronized="false"
   1080       static="false" final="false" visibility="public"
   1081       deprecated="not deprecated">
   1082       <doc>
   1083       <![CDATA[Returns messages for the errors that caused this exception.]]>
   1084       </doc>
   1085     </method>
   1086     <method name="getMessage" return="java.lang.String"
   1087       abstract="false" native="false" synchronized="false"
   1088       static="false" final="false" visibility="public"
   1089       deprecated="not deprecated">
   1090     </method>
   1091     <doc>
   1092     <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered
   1093  errors. Clients should catch this exception, log it, and stop execution.
   1094 
   1095  @author crazybob (a] google.com (Bob Lee)]]>
   1096     </doc>
   1097   </class>
   1098   <!-- end class com.google.inject.CreationException -->
   1099   <!-- start class com.google.inject.Exposed -->
   1100   <class name="Exposed"    abstract="true"
   1101     static="false" final="false" visibility="public"
   1102     deprecated="not deprecated">
   1103     <implements name="java.lang.annotation.Annotation"/>
   1104     <doc>
   1105     <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a
   1106  private module to indicate that the provided binding is exposed.
   1107 
   1108  @author jessewilson (a] google.com (Jesse Wilson)
   1109  @since 2.0]]>
   1110     </doc>
   1111   </class>
   1112   <!-- end class com.google.inject.Exposed -->
   1113   <!-- start class com.google.inject.Guice -->
   1114   <class name="Guice" extends="java.lang.Object"
   1115     abstract="false"
   1116     static="false" final="true" visibility="public"
   1117     deprecated="not deprecated">
   1118     <method name="createInjector" return="com.google.inject.Injector"
   1119       abstract="false" native="false" synchronized="false"
   1120       static="true" final="false" visibility="public"
   1121       deprecated="not deprecated">
   1122       <param name="modules" type="com.google.inject.Module[]"/>
   1123       <doc>
   1124       <![CDATA[Creates an injector for the given set of modules. This is equivalent to
   1125  calling {@link #createInjector(Stage, Module...)} with Stage.DEVELOPMENT.
   1126 
   1127  @throws CreationException if one or more errors occur during injector
   1128      construction]]>
   1129       </doc>
   1130     </method>
   1131     <method name="createInjector" return="com.google.inject.Injector"
   1132       abstract="false" native="false" synchronized="false"
   1133       static="true" final="false" visibility="public"
   1134       deprecated="not deprecated">
   1135       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1136       <doc>
   1137       <![CDATA[Creates an injector for the given set of modules. This is equivalent to
   1138  calling {@link #createInjector(Stage, Iterable)} with Stage.DEVELOPMENT.
   1139 
   1140  @throws CreationException if one or more errors occur during injector
   1141      creation]]>
   1142       </doc>
   1143     </method>
   1144     <method name="createInjector" return="com.google.inject.Injector"
   1145       abstract="false" native="false" synchronized="false"
   1146       static="true" final="false" visibility="public"
   1147       deprecated="not deprecated">
   1148       <param name="stage" type="com.google.inject.Stage"/>
   1149       <param name="modules" type="com.google.inject.Module[]"/>
   1150       <doc>
   1151       <![CDATA[Creates an injector for the given set of modules, in a given development
   1152  stage.
   1153 
   1154  @throws CreationException if one or more errors occur during injector
   1155      creation.]]>
   1156       </doc>
   1157     </method>
   1158     <method name="createInjector" return="com.google.inject.Injector"
   1159       abstract="false" native="false" synchronized="false"
   1160       static="true" final="false" visibility="public"
   1161       deprecated="not deprecated">
   1162       <param name="stage" type="com.google.inject.Stage"/>
   1163       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1164       <doc>
   1165       <![CDATA[Creates an injector for the given set of modules, in a given development
   1166  stage.
   1167 
   1168  @throws CreationException if one or more errors occur during injector
   1169      construction]]>
   1170       </doc>
   1171     </method>
   1172     <doc>
   1173     <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from
   1174  {@link Module}s.
   1175 
   1176  <p>Guice supports a model of development that draws clear boundaries between
   1177  APIs, Implementations of these APIs, Modules which configure these
   1178  implementations, and finally Applications which consist of a collection of
   1179  Modules. It is the Application, which typically defines your {@code main()}
   1180  method, that bootstraps the Guice Injector using the {@code Guice} class, as
   1181  in this example:
   1182  <pre>
   1183      public class FooApplication {
   1184        public static void main(String[] args) {
   1185          Injector injector = Guice.createInjector(
   1186              new ModuleA(),
   1187              new ModuleB(),
   1188              . . .
   1189              new FooApplicationFlagsModule(args)
   1190          );
   1191 
   1192          // Now just bootstrap the application and you're done
   1193          FooStarter starter = injector.getInstance(FooStarter.class);
   1194          starter.runApplication();
   1195        }
   1196      }
   1197  </pre>]]>
   1198     </doc>
   1199   </class>
   1200   <!-- end class com.google.inject.Guice -->
   1201   <!-- start class com.google.inject.ImplementedBy -->
   1202   <class name="ImplementedBy"    abstract="true"
   1203     static="false" final="false" visibility="public"
   1204     deprecated="not deprecated">
   1205     <implements name="java.lang.annotation.Annotation"/>
   1206     <doc>
   1207     <![CDATA[A pointer to the default implementation of a type.
   1208 
   1209  @author crazybob (a] google.com (Bob Lee)]]>
   1210     </doc>
   1211   </class>
   1212   <!-- end class com.google.inject.ImplementedBy -->
   1213   <!-- start class com.google.inject.Inject -->
   1214   <class name="Inject"    abstract="true"
   1215     static="false" final="false" visibility="public"
   1216     deprecated="not deprecated">
   1217     <implements name="java.lang.annotation.Annotation"/>
   1218     <doc>
   1219     <![CDATA[Annotates members of your implementation class (constructors, methods
   1220  and fields) into which the {@link Injector} should inject values.
   1221  The Injector fulfills injection requests for:
   1222 
   1223  <ul>
   1224  <li>Every instance it constructs. The class being constructed must have
   1225  exactly one of its constructors marked with {@code @Inject} or must have a
   1226  constructor taking no parameters. The Injector then proceeds to perform
   1227  field and method injections.
   1228  
   1229  <li>Pre-constructed instances passed to {@link Injector#injectMembers},
   1230  {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and
   1231  {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(javax.inject.Provider)}.
   1232  In this case all constructors are, of course, ignored.
   1233 
   1234  <li>Static fields and methods of classes which any {@link Module} has
   1235  specifically requested static injection for, using
   1236  {@link Binder#requestStaticInjection}.
   1237  </ul>
   1238 
   1239  In all cases, a member can be injected regardless of its Java access
   1240  specifier (private, default, protected, public).
   1241 
   1242  @author crazybob (a] google.com (Bob Lee)]]>
   1243     </doc>
   1244   </class>
   1245   <!-- end class com.google.inject.Inject -->
   1246   <!-- start interface com.google.inject.Injector -->
   1247   <interface name="Injector"    abstract="true"
   1248     static="false" final="false" visibility="public"
   1249     deprecated="not deprecated">
   1250     <method name="injectMembers"
   1251       abstract="true" native="false" synchronized="false"
   1252       static="false" final="false" visibility="public"
   1253       deprecated="not deprecated">
   1254       <param name="instance" type="java.lang.Object"/>
   1255       <doc>
   1256       <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
   1257  absence of an injectable constructor.
   1258 
   1259  <p>Whenever Guice creates an instance, it performs this injection automatically (after first
   1260  performing constructor injection), so if you're able to let Guice create all your objects for
   1261  you, you'll never need to use this method.
   1262 
   1263  @param instance to inject members on
   1264 
   1265  @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before
   1266   run time]]>
   1267       </doc>
   1268     </method>
   1269     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   1270       abstract="true" native="false" synchronized="false"
   1271       static="false" final="false" visibility="public"
   1272       deprecated="not deprecated">
   1273       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1274       <doc>
   1275       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   1276  of the given type {@code T}.
   1277 
   1278  @param typeLiteral type to get members injector for
   1279  @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error
   1280   detection
   1281  @since 2.0]]>
   1282       </doc>
   1283     </method>
   1284     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   1285       abstract="true" native="false" synchronized="false"
   1286       static="false" final="false" visibility="public"
   1287       deprecated="not deprecated">
   1288       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1289       <doc>
   1290       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   1291  of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)}
   1292  instead to get increased up front error detection.
   1293 
   1294  @param type type to get members injector for
   1295  @see Binder#getMembersInjector(Class) for an alternative that offers up front error
   1296   detection
   1297  @since 2.0]]>
   1298       </doc>
   1299     </method>
   1300     <method name="getBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
   1301       abstract="true" native="false" synchronized="false"
   1302       static="false" final="false" visibility="public"
   1303       deprecated="not deprecated">
   1304       <doc>
   1305       <![CDATA[Returns this injector's <strong>explicit</strong> bindings.
   1306 
   1307  <p>The returned map does not include bindings inherited from a {@link #getParent() parent
   1308  injector}, should one exist. The returned map is guaranteed to iterate (for example, with
   1309  its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in
   1310  which bindings appear in user Modules.
   1311 
   1312  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
   1313       </doc>
   1314     </method>
   1315     <method name="getAllBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
   1316       abstract="true" native="false" synchronized="false"
   1317       static="false" final="false" visibility="public"
   1318       deprecated="not deprecated">
   1319       <doc>
   1320       <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and
   1321  just-in-time</strong>. The returned map is immutable; it contains only the bindings that were
   1322  present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with
   1323  additional just-in-time bindings.
   1324 
   1325  <p>The returned map does not include bindings inherited from a {@link #getParent() parent
   1326  injector}, should one exist.
   1327 
   1328  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1329  
   1330  @since 3.0]]>
   1331       </doc>
   1332     </method>
   1333     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   1334       abstract="true" native="false" synchronized="false"
   1335       static="false" final="false" visibility="public"
   1336       deprecated="not deprecated">
   1337       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1338       <doc>
   1339       <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key
   1340  was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
   1341  be created if necessary.
   1342 
   1343  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1344 
   1345  @throws ConfigurationException if this injector cannot find or create the binding.]]>
   1346       </doc>
   1347     </method>
   1348     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   1349       abstract="true" native="false" synchronized="false"
   1350       static="false" final="false" visibility="public"
   1351       deprecated="not deprecated">
   1352       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1353       <doc>
   1354       <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key
   1355  was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
   1356  be created if necessary.
   1357 
   1358  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1359 
   1360  @throws ConfigurationException if this injector cannot find or create the binding.
   1361  @since 2.0]]>
   1362       </doc>
   1363     </method>
   1364     <method name="getExistingBinding" return="com.google.inject.Binding&lt;T&gt;"
   1365       abstract="true" native="false" synchronized="false"
   1366       static="false" final="false" visibility="public"
   1367       deprecated="not deprecated">
   1368       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1369       <doc>
   1370       <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike
   1371  {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings
   1372  for keys that aren't bound.
   1373  
   1374  <p> This method is part of the Guice SPI and is intended for use by tools and extensions.
   1375  
   1376  @since 3.0]]>
   1377       </doc>
   1378     </method>
   1379     <method name="findBindingsByType" return="java.util.List&lt;com.google.inject.Binding&lt;T&gt;&gt;"
   1380       abstract="true" native="false" synchronized="false"
   1381       static="false" final="false" visibility="public"
   1382       deprecated="not deprecated">
   1383       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1384       <doc>
   1385       <![CDATA[Returns all explicit bindings for {@code type}.
   1386 
   1387  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
   1388       </doc>
   1389     </method>
   1390     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   1391       abstract="true" native="false" synchronized="false"
   1392       static="false" final="false" visibility="public"
   1393       deprecated="not deprecated">
   1394       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1395       <doc>
   1396       <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid
   1397  using this method, in favor of having Guice inject your dependencies ahead of time.
   1398 
   1399  @throws ConfigurationException if this injector cannot find or create the provider.
   1400  @see Binder#getProvider(Key) for an alternative that offers up front error detection]]>
   1401       </doc>
   1402     </method>
   1403     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   1404       abstract="true" native="false" synchronized="false"
   1405       static="false" final="false" visibility="public"
   1406       deprecated="not deprecated">
   1407       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1408       <doc>
   1409       <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid
   1410  using this method, in favor of having Guice inject your dependencies ahead of time.
   1411 
   1412  @throws ConfigurationException if this injector cannot find or create the provider.
   1413  @see Binder#getProvider(Class) for an alternative that offers up front error detection]]>
   1414       </doc>
   1415     </method>
   1416     <method name="getInstance" return="T"
   1417       abstract="true" native="false" synchronized="false"
   1418       static="false" final="false" visibility="public"
   1419       deprecated="not deprecated">
   1420       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1421       <doc>
   1422       <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code
   1423  getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice
   1424  inject your dependencies ahead of time.
   1425 
   1426  @throws ConfigurationException if this injector cannot find or create the provider.
   1427  @throws ProvisionException if there was a runtime failure while providing an instance.]]>
   1428       </doc>
   1429     </method>
   1430     <method name="getInstance" return="T"
   1431       abstract="true" native="false" synchronized="false"
   1432       static="false" final="false" visibility="public"
   1433       deprecated="not deprecated">
   1434       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1435       <doc>
   1436       <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code
   1437  getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice
   1438  inject your dependencies ahead of time.
   1439 
   1440  @throws ConfigurationException if this injector cannot find or create the provider.
   1441  @throws ProvisionException if there was a runtime failure while providing an instance.]]>
   1442       </doc>
   1443     </method>
   1444     <method name="getParent" return="com.google.inject.Injector"
   1445       abstract="true" native="false" synchronized="false"
   1446       static="false" final="false" visibility="public"
   1447       deprecated="not deprecated">
   1448       <doc>
   1449       <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector.
   1450 
   1451  @since 2.0]]>
   1452       </doc>
   1453     </method>
   1454     <method name="createChildInjector" return="com.google.inject.Injector"
   1455       abstract="true" native="false" synchronized="false"
   1456       static="false" final="false" visibility="public"
   1457       deprecated="not deprecated">
   1458       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1459       <doc>
   1460       <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
   1461  interceptors and type converters are inherited -- they are visible to the child injector.
   1462  Elements of the child injector are not visible to its parent.
   1463 
   1464  <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
   1465  whenever possible. This allows for scoped instances to be shared between injectors. Use
   1466  explicit bindings to prevent bindings from being shared with the parent injector.  Optional
   1467  injections in just-in-time bindings (created in the parent injector) may be silently
   1468  ignored if the optional dependencies are from the child injector.
   1469 
   1470  <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
   1471  bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
   1472  injector to itself.
   1473 
   1474  @since 2.0]]>
   1475       </doc>
   1476     </method>
   1477     <method name="createChildInjector" return="com.google.inject.Injector"
   1478       abstract="true" native="false" synchronized="false"
   1479       static="false" final="false" visibility="public"
   1480       deprecated="not deprecated">
   1481       <param name="modules" type="com.google.inject.Module[]"/>
   1482       <doc>
   1483       <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
   1484  interceptors and type converters are inherited -- they are visible to the child injector.
   1485  Elements of the child injector are not visible to its parent.
   1486 
   1487  <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
   1488  whenever possible. This allows for scoped instances to be shared between injectors. Use
   1489  explicit bindings to prevent bindings from being shared with the parent injector.
   1490 
   1491  <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
   1492  bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
   1493  injector to itself.
   1494 
   1495  @since 2.0]]>
   1496       </doc>
   1497     </method>
   1498     <method name="getScopeBindings" return="java.util.Map&lt;java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;, com.google.inject.Scope&gt;"
   1499       abstract="true" native="false" synchronized="false"
   1500       static="false" final="false" visibility="public"
   1501       deprecated="not deprecated">
   1502       <doc>
   1503       <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations
   1504  like {@code Singleton.class}, and the values are scope instances, such as {@code
   1505  Scopes.SINGLETON}. The returned map is immutable.
   1506 
   1507  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1508  
   1509  @since 3.0]]>
   1510       </doc>
   1511     </method>
   1512     <method name="getTypeConverterBindings" return="java.util.Set&lt;com.google.inject.spi.TypeConverterBinding&gt;"
   1513       abstract="true" native="false" synchronized="false"
   1514       static="false" final="false" visibility="public"
   1515       deprecated="not deprecated">
   1516       <doc>
   1517       <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is
   1518  immutable.
   1519 
   1520  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1521  
   1522  @since 3.0]]>
   1523       </doc>
   1524     </method>
   1525     <doc>
   1526     <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies
   1527  for each type and uses bindings to inject them. This is the core of Guice, although you rarely
   1528  interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency
   1529  injection from its cousin, the service locator pattern.
   1530 
   1531  <p>Contains several default bindings:
   1532 
   1533  <ul>
   1534  <li>This {@link Injector} instance itself
   1535  <li>A {@code Provider<T>} for each binding of type {@code T}
   1536  <li>The {@link java.util.logging.Logger} for the class being injected
   1537  <li>The {@link Stage} in which the Injector was created
   1538  </ul>
   1539 
   1540  Injectors are created using the facade class {@link Guice}.
   1541 
   1542  <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of
   1543  already-constructed instances. This can be used to interoperate with objects created by other
   1544  frameworks or services.
   1545 
   1546  <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit
   1547  the configuration of their parent injectors, but the converse does not hold.
   1548 
   1549  <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This
   1550  enables tools and extensions to operate on an injector reflectively.
   1551 
   1552  @author crazybob (a] google.com (Bob Lee)
   1553  @author jessewilson (a] google.com (Jesse Wilson)]]>
   1554     </doc>
   1555   </interface>
   1556   <!-- end interface com.google.inject.Injector -->
   1557   <!-- start class com.google.inject.Key -->
   1558   <class name="Key" extends="java.lang.Object"
   1559     abstract="false"
   1560     static="false" final="false" visibility="public"
   1561     deprecated="not deprecated">
   1562     <constructor name="Key" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   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} annotated with
   1573  {@code @Bar}:
   1574 
   1575  <p>{@code new Key<Foo>(Bar.class) {}}.]]>
   1576       </doc>
   1577     </constructor>
   1578     <constructor name="Key" type="java.lang.annotation.Annotation"
   1579       static="false" final="false" visibility="protected"
   1580       deprecated="not deprecated">
   1581       <doc>
   1582       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1583 
   1584  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1585  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1586  at runtime despite erasure.
   1587 
   1588  <p>Example usage for a binding of type {@code Foo} annotated with
   1589  {@code @Bar}:
   1590 
   1591  <p>{@code new Key<Foo>(new Bar()) {}}.]]>
   1592       </doc>
   1593     </constructor>
   1594     <constructor name="Key"
   1595       static="false" final="false" visibility="protected"
   1596       deprecated="not deprecated">
   1597       <doc>
   1598       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1599 
   1600  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1601  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1602  at runtime despite erasure.
   1603 
   1604  <p>Example usage for a binding of type {@code Foo}:
   1605 
   1606  <p>{@code new Key<Foo>() {}}.]]>
   1607       </doc>
   1608     </constructor>
   1609     <method name="getTypeLiteral" return="com.google.inject.TypeLiteral&lt;T&gt;"
   1610       abstract="false" native="false" synchronized="false"
   1611       static="false" final="true" visibility="public"
   1612       deprecated="not deprecated">
   1613       <doc>
   1614       <![CDATA[Gets the key type.]]>
   1615       </doc>
   1616     </method>
   1617     <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   1618       abstract="false" native="false" synchronized="false"
   1619       static="false" final="true" visibility="public"
   1620       deprecated="not deprecated">
   1621       <doc>
   1622       <![CDATA[Gets the annotation type.]]>
   1623       </doc>
   1624     </method>
   1625     <method name="getAnnotation" return="java.lang.annotation.Annotation"
   1626       abstract="false" native="false" synchronized="false"
   1627       static="false" final="true" visibility="public"
   1628       deprecated="not deprecated">
   1629       <doc>
   1630       <![CDATA[Gets the annotation.]]>
   1631       </doc>
   1632     </method>
   1633     <method name="equals" return="boolean"
   1634       abstract="false" native="false" synchronized="false"
   1635       static="false" final="true" visibility="public"
   1636       deprecated="not deprecated">
   1637       <param name="o" type="java.lang.Object"/>
   1638     </method>
   1639     <method name="hashCode" return="int"
   1640       abstract="false" native="false" synchronized="false"
   1641       static="false" final="true" visibility="public"
   1642       deprecated="not deprecated">
   1643     </method>
   1644     <method name="toString" return="java.lang.String"
   1645       abstract="false" native="false" synchronized="false"
   1646       static="false" final="true" visibility="public"
   1647       deprecated="not deprecated">
   1648     </method>
   1649     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1650       abstract="false" native="false" synchronized="false"
   1651       static="true" final="false" visibility="public"
   1652       deprecated="not deprecated">
   1653       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1654       <doc>
   1655       <![CDATA[Gets a key for an injection type.]]>
   1656       </doc>
   1657     </method>
   1658     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1659       abstract="false" native="false" synchronized="false"
   1660       static="true" final="false" visibility="public"
   1661       deprecated="not deprecated">
   1662       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1663       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1664       <doc>
   1665       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1666       </doc>
   1667     </method>
   1668     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1669       abstract="false" native="false" synchronized="false"
   1670       static="true" final="false" visibility="public"
   1671       deprecated="not deprecated">
   1672       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1673       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1674       <doc>
   1675       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1676       </doc>
   1677     </method>
   1678     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1679       abstract="false" native="false" synchronized="false"
   1680       static="true" final="false" visibility="public"
   1681       deprecated="not deprecated">
   1682       <param name="type" type="java.lang.reflect.Type"/>
   1683       <doc>
   1684       <![CDATA[Gets a key for an injection type.]]>
   1685       </doc>
   1686     </method>
   1687     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1688       abstract="false" native="false" synchronized="false"
   1689       static="true" final="false" visibility="public"
   1690       deprecated="not deprecated">
   1691       <param name="type" type="java.lang.reflect.Type"/>
   1692       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1693       <doc>
   1694       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1695       </doc>
   1696     </method>
   1697     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1698       abstract="false" native="false" synchronized="false"
   1699       static="true" final="false" visibility="public"
   1700       deprecated="not deprecated">
   1701       <param name="type" type="java.lang.reflect.Type"/>
   1702       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1703       <doc>
   1704       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1705       </doc>
   1706     </method>
   1707     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1708       abstract="false" native="false" synchronized="false"
   1709       static="true" final="false" visibility="public"
   1710       deprecated="not deprecated">
   1711       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1712       <doc>
   1713       <![CDATA[Gets a key for an injection type.]]>
   1714       </doc>
   1715     </method>
   1716     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1717       abstract="false" native="false" synchronized="false"
   1718       static="true" final="false" visibility="public"
   1719       deprecated="not deprecated">
   1720       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1721       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1722       <doc>
   1723       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1724       </doc>
   1725     </method>
   1726     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1727       abstract="false" native="false" synchronized="false"
   1728       static="true" final="false" visibility="public"
   1729       deprecated="not deprecated">
   1730       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1731       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1732       <doc>
   1733       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1734       </doc>
   1735     </method>
   1736     <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
   1737       abstract="false" native="false" synchronized="false"
   1738       static="false" final="false" visibility="public"
   1739       deprecated="not deprecated">
   1740       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1741       <doc>
   1742       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1743  key.
   1744 
   1745  @since 3.0]]>
   1746       </doc>
   1747     </method>
   1748     <method name="ofType" return="com.google.inject.Key&lt;?&gt;"
   1749       abstract="false" native="false" synchronized="false"
   1750       static="false" final="false" visibility="public"
   1751       deprecated="not deprecated">
   1752       <param name="type" type="java.lang.reflect.Type"/>
   1753       <doc>
   1754       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1755  key.
   1756 
   1757  @since 3.0]]>
   1758       </doc>
   1759     </method>
   1760     <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
   1761       abstract="false" native="false" synchronized="false"
   1762       static="false" final="false" visibility="public"
   1763       deprecated="not deprecated">
   1764       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1765       <doc>
   1766       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1767  key.
   1768 
   1769  @since 3.0]]>
   1770       </doc>
   1771     </method>
   1772     <method name="hasAttributes" return="boolean"
   1773       abstract="false" native="false" synchronized="false"
   1774       static="false" final="false" visibility="public"
   1775       deprecated="not deprecated">
   1776       <doc>
   1777       <![CDATA[Returns true if this key has annotation attributes.
   1778 
   1779  @since 3.0]]>
   1780       </doc>
   1781     </method>
   1782     <method name="withoutAttributes" return="com.google.inject.Key&lt;T&gt;"
   1783       abstract="false" native="false" synchronized="false"
   1784       static="false" final="false" visibility="public"
   1785       deprecated="not deprecated">
   1786       <doc>
   1787       <![CDATA[Returns this key without annotation attributes, i.e. with only the
   1788  annotation type.
   1789 
   1790  @since 3.0]]>
   1791       </doc>
   1792     </method>
   1793     <doc>
   1794     <![CDATA[Binding key consisting of an injection type and an optional annotation.
   1795  Matches the type and annotation at a point of injection.
   1796 
   1797  <p>For example, {@code Key.get(Service.class, Transactional.class)} will
   1798  match:
   1799 
   1800  <pre>
   1801    {@literal @}Inject
   1802    public void setService({@literal @}Transactional Service service) {
   1803      ...
   1804    }
   1805  </pre>
   1806 
   1807  <p>{@code Key} supports generic types via subclassing just like {@link
   1808  TypeLiteral}.
   1809 
   1810  <p>Keys do not differentiate between primitive types (int, char, etc.) and
   1811  their corresponding wrapper types (Integer, Character, etc.). Primitive
   1812  types will be replaced with their wrapper types when keys are created.
   1813 
   1814  @author crazybob (a] google.com (Bob Lee)]]>
   1815     </doc>
   1816   </class>
   1817   <!-- end class com.google.inject.Key -->
   1818   <!-- start interface com.google.inject.MembersInjector -->
   1819   <interface name="MembersInjector"    abstract="true"
   1820     static="false" final="false" visibility="public"
   1821     deprecated="not deprecated">
   1822     <method name="injectMembers"
   1823       abstract="true" native="false" synchronized="false"
   1824       static="false" final="false" visibility="public"
   1825       deprecated="not deprecated">
   1826       <param name="instance" type="T"/>
   1827       <doc>
   1828       <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
   1829  absence of an injectable constructor.
   1830 
   1831  <p>Whenever Guice creates an instance, it performs this injection automatically (after first
   1832  performing constructor injection), so if you're able to let Guice create all your objects for
   1833  you, you'll never need to use this method.
   1834 
   1835  @param instance to inject members on. May be {@code null}.]]>
   1836       </doc>
   1837     </method>
   1838     <doc>
   1839     <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the
   1840  presence or absence of an injectable constructor.
   1841 
   1842  @param <T> type to inject members of
   1843 
   1844  @author crazybob (a] google.com (Bob Lee)
   1845  @author jessewilson (a] google.com (Jesse Wilson)
   1846  @since 2.0]]>
   1847     </doc>
   1848   </interface>
   1849   <!-- end interface com.google.inject.MembersInjector -->
   1850   <!-- start interface com.google.inject.Module -->
   1851   <interface name="Module"    abstract="true"
   1852     static="false" final="false" visibility="public"
   1853     deprecated="not deprecated">
   1854     <method name="configure"
   1855       abstract="true" native="false" synchronized="false"
   1856       static="false" final="false" visibility="public"
   1857       deprecated="not deprecated">
   1858       <param name="binder" type="com.google.inject.Binder"/>
   1859       <doc>
   1860       <![CDATA[Contributes bindings and other configurations for this module to {@code binder}.
   1861 
   1862  <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use
   1863  {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are
   1864  discovered.]]>
   1865       </doc>
   1866     </method>
   1867     <doc>
   1868     <![CDATA[A module contributes configuration information, typically interface
   1869  bindings, which will be used to create an {@link Injector}. A Guice-based
   1870  application is ultimately composed of little more than a set of
   1871  {@code Module}s and some bootstrapping code.
   1872 
   1873  <p>Your Module classes can use a more streamlined syntax by extending
   1874  {@link AbstractModule} rather than implementing this interface directly.
   1875 
   1876  <p>In addition to the bindings configured via {@link #configure}, bindings
   1877  will be created for all methods annotated with {@literal @}{@link Provides}.
   1878  Use scope and binding annotations on these methods to configure the
   1879  bindings.]]>
   1880     </doc>
   1881   </interface>
   1882   <!-- end interface com.google.inject.Module -->
   1883   <!-- start class com.google.inject.OutOfScopeException -->
   1884   <class name="OutOfScopeException" extends="java.lang.RuntimeException"
   1885     abstract="false"
   1886     static="false" final="true" visibility="public"
   1887     deprecated="not deprecated">
   1888     <constructor name="OutOfScopeException" type="java.lang.String"
   1889       static="false" final="false" visibility="public"
   1890       deprecated="not deprecated">
   1891     </constructor>
   1892     <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable"
   1893       static="false" final="false" visibility="public"
   1894       deprecated="not deprecated">
   1895     </constructor>
   1896     <constructor name="OutOfScopeException" type="java.lang.Throwable"
   1897       static="false" final="false" visibility="public"
   1898       deprecated="not deprecated">
   1899     </constructor>
   1900     <doc>
   1901     <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped
   1902  object while the scope in question is not currently active.
   1903 
   1904  @author kevinb (a] google.com (Kevin Bourrillion)
   1905  @since 2.0]]>
   1906     </doc>
   1907   </class>
   1908   <!-- end class com.google.inject.OutOfScopeException -->
   1909   <!-- start interface com.google.inject.PrivateBinder -->
   1910   <interface name="PrivateBinder"    abstract="true"
   1911     static="false" final="false" visibility="public"
   1912     deprecated="not deprecated">
   1913     <implements name="com.google.inject.Binder"/>
   1914     <method name="expose"
   1915       abstract="true" native="false" synchronized="false"
   1916       static="false" final="false" visibility="public"
   1917       deprecated="not deprecated">
   1918       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   1919       <doc>
   1920       <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]>
   1921       </doc>
   1922     </method>
   1923     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1924       abstract="true" native="false" synchronized="false"
   1925       static="false" final="false" visibility="public"
   1926       deprecated="not deprecated">
   1927       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   1928       <doc>
   1929       <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
   1930  com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1931  binding annotation.]]>
   1932       </doc>
   1933     </method>
   1934     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1935       abstract="true" native="false" synchronized="false"
   1936       static="false" final="false" visibility="public"
   1937       deprecated="not deprecated">
   1938       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   1939       <doc>
   1940       <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
   1941  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1942  binding annotation.]]>
   1943       </doc>
   1944     </method>
   1945     <method name="withSource" return="com.google.inject.PrivateBinder"
   1946       abstract="true" native="false" synchronized="false"
   1947       static="false" final="false" visibility="public"
   1948       deprecated="not deprecated">
   1949       <param name="source" type="java.lang.Object"/>
   1950     </method>
   1951     <method name="skipSources" return="com.google.inject.PrivateBinder"
   1952       abstract="true" native="false" synchronized="false"
   1953       static="false" final="false" visibility="public"
   1954       deprecated="not deprecated">
   1955       <param name="classesToSkip" type="java.lang.Class[]"/>
   1956     </method>
   1957     <doc>
   1958     <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See
   1959  {@link com.google.inject.PrivateModule PrivateModule} for details.
   1960  
   1961  @author jessewilson (a] google.com (Jesse Wilson)
   1962  @since 2.0]]>
   1963     </doc>
   1964   </interface>
   1965   <!-- end interface com.google.inject.PrivateBinder -->
   1966   <!-- start class com.google.inject.PrivateModule -->
   1967   <class name="PrivateModule" extends="java.lang.Object"
   1968     abstract="true"
   1969     static="false" final="false" visibility="public"
   1970     deprecated="not deprecated">
   1971     <implements name="com.google.inject.Module"/>
   1972     <constructor name="PrivateModule"
   1973       static="false" final="false" visibility="public"
   1974       deprecated="not deprecated">
   1975     </constructor>
   1976     <method name="configure"
   1977       abstract="false" native="false" synchronized="true"
   1978       static="false" final="true" visibility="public"
   1979       deprecated="not deprecated">
   1980       <param name="binder" type="com.google.inject.Binder"/>
   1981     </method>
   1982     <method name="configure"
   1983       abstract="true" native="false" synchronized="false"
   1984       static="false" final="false" visibility="protected"
   1985       deprecated="not deprecated">
   1986       <doc>
   1987       <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class)
   1988  expose()} to make the bindings in this module available externally.]]>
   1989       </doc>
   1990     </method>
   1991     <method name="expose"
   1992       abstract="false" native="false" synchronized="false"
   1993       static="false" final="true" visibility="protected"
   1994       deprecated="not deprecated">
   1995       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1996       <doc>
   1997       <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]>
   1998       </doc>
   1999     </method>
   2000     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   2001       abstract="false" native="false" synchronized="false"
   2002       static="false" final="true" visibility="protected"
   2003       deprecated="not deprecated">
   2004       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   2005       <doc>
   2006       <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
   2007  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   2008  binding annotation.]]>
   2009       </doc>
   2010     </method>
   2011     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   2012       abstract="false" native="false" synchronized="false"
   2013       static="false" final="true" visibility="protected"
   2014       deprecated="not deprecated">
   2015       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   2016       <doc>
   2017       <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
   2018  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   2019  binding annotation.]]>
   2020       </doc>
   2021     </method>
   2022     <method name="binder" return="com.google.inject.PrivateBinder"
   2023       abstract="false" native="false" synchronized="false"
   2024       static="false" final="true" visibility="protected"
   2025       deprecated="not deprecated">
   2026       <doc>
   2027       <![CDATA[Returns the current binder.]]>
   2028       </doc>
   2029     </method>
   2030     <method name="bindScope"
   2031       abstract="false" native="false" synchronized="false"
   2032       static="false" final="true" visibility="protected"
   2033       deprecated="not deprecated">
   2034       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2035       <param name="scope" type="com.google.inject.Scope"/>
   2036       <doc>
   2037       <![CDATA[@see Binder#bindScope(Class, Scope)]]>
   2038       </doc>
   2039     </method>
   2040     <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   2041       abstract="false" native="false" synchronized="false"
   2042       static="false" final="true" visibility="protected"
   2043       deprecated="not deprecated">
   2044       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2045       <doc>
   2046       <![CDATA[@see Binder#bind(Key)]]>
   2047       </doc>
   2048     </method>
   2049     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
   2050       abstract="false" native="false" synchronized="false"
   2051       static="false" final="true" visibility="protected"
   2052       deprecated="not deprecated">
   2053       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2054       <doc>
   2055       <![CDATA[@see Binder#bind(TypeLiteral)]]>
   2056       </doc>
   2057     </method>
   2058     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
   2059       abstract="false" native="false" synchronized="false"
   2060       static="false" final="true" visibility="protected"
   2061       deprecated="not deprecated">
   2062       <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
   2063       <doc>
   2064       <![CDATA[@see Binder#bind(Class)]]>
   2065       </doc>
   2066     </method>
   2067     <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
   2068       abstract="false" native="false" synchronized="false"
   2069       static="false" final="true" visibility="protected"
   2070       deprecated="not deprecated">
   2071       <doc>
   2072       <![CDATA[@see Binder#bindConstant()]]>
   2073       </doc>
   2074     </method>
   2075     <method name="install"
   2076       abstract="false" native="false" synchronized="false"
   2077       static="false" final="true" visibility="protected"
   2078       deprecated="not deprecated">
   2079       <param name="module" type="com.google.inject.Module"/>
   2080       <doc>
   2081       <![CDATA[@see Binder#install(Module)]]>
   2082       </doc>
   2083     </method>
   2084     <method name="addError"
   2085       abstract="false" native="false" synchronized="false"
   2086       static="false" final="true" visibility="protected"
   2087       deprecated="not deprecated">
   2088       <param name="message" type="java.lang.String"/>
   2089       <param name="arguments" type="java.lang.Object[]"/>
   2090       <doc>
   2091       <![CDATA[@see Binder#addError(String, Object[])]]>
   2092       </doc>
   2093     </method>
   2094     <method name="addError"
   2095       abstract="false" native="false" synchronized="false"
   2096       static="false" final="true" visibility="protected"
   2097       deprecated="not deprecated">
   2098       <param name="t" type="java.lang.Throwable"/>
   2099       <doc>
   2100       <![CDATA[@see Binder#addError(Throwable)]]>
   2101       </doc>
   2102     </method>
   2103     <method name="addError"
   2104       abstract="false" native="false" synchronized="false"
   2105       static="false" final="true" visibility="protected"
   2106       deprecated="not deprecated">
   2107       <param name="message" type="com.google.inject.spi.Message"/>
   2108       <doc>
   2109       <![CDATA[@see Binder#addError(Message)]]>
   2110       </doc>
   2111     </method>
   2112     <method name="requestInjection"
   2113       abstract="false" native="false" synchronized="false"
   2114       static="false" final="true" visibility="protected"
   2115       deprecated="not deprecated">
   2116       <param name="instance" type="java.lang.Object"/>
   2117       <doc>
   2118       <![CDATA[@see Binder#requestInjection(Object)]]>
   2119       </doc>
   2120     </method>
   2121     <method name="requestStaticInjection"
   2122       abstract="false" native="false" synchronized="false"
   2123       static="false" final="true" visibility="protected"
   2124       deprecated="not deprecated">
   2125       <param name="types" type="java.lang.Class[]"/>
   2126       <doc>
   2127       <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
   2128       </doc>
   2129     </method>
   2130     <method name="bindInterceptor"
   2131       abstract="false" native="false" synchronized="false"
   2132       static="false" final="true" visibility="protected"
   2133       deprecated="not deprecated">
   2134       <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
   2135       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
   2136       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
   2137       <doc>
   2138       <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]>
   2139       </doc>
   2140     </method>
   2141     <method name="requireBinding"
   2142       abstract="false" native="false" synchronized="false"
   2143       static="false" final="true" visibility="protected"
   2144       deprecated="not deprecated">
   2145       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   2146       <doc>
   2147       <![CDATA[Instructs Guice to require a binding to the given key.]]>
   2148       </doc>
   2149     </method>
   2150     <method name="requireBinding"
   2151       abstract="false" native="false" synchronized="false"
   2152       static="false" final="true" visibility="protected"
   2153       deprecated="not deprecated">
   2154       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   2155       <doc>
   2156       <![CDATA[Instructs Guice to require a binding to the given type.]]>
   2157       </doc>
   2158     </method>
   2159     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   2160       abstract="false" native="false" synchronized="false"
   2161       static="false" final="true" visibility="protected"
   2162       deprecated="not deprecated">
   2163       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2164       <doc>
   2165       <![CDATA[@see Binder#getProvider(Key)]]>
   2166       </doc>
   2167     </method>
   2168     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   2169       abstract="false" native="false" synchronized="false"
   2170       static="false" final="true" visibility="protected"
   2171       deprecated="not deprecated">
   2172       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2173       <doc>
   2174       <![CDATA[@see Binder#getProvider(Class)]]>
   2175       </doc>
   2176     </method>
   2177     <method name="convertToTypes"
   2178       abstract="false" native="false" synchronized="false"
   2179       static="false" final="true" visibility="protected"
   2180       deprecated="not deprecated">
   2181       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
   2182       <param name="converter" type="com.google.inject.spi.TypeConverter"/>
   2183       <doc>
   2184       <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]>
   2185       </doc>
   2186     </method>
   2187     <method name="currentStage" return="com.google.inject.Stage"
   2188       abstract="false" native="false" synchronized="false"
   2189       static="false" final="true" visibility="protected"
   2190       deprecated="not deprecated">
   2191       <doc>
   2192       <![CDATA[@see Binder#currentStage()]]>
   2193       </doc>
   2194     </method>
   2195     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   2196       abstract="false" native="false" synchronized="false"
   2197       static="false" final="false" visibility="protected"
   2198       deprecated="not deprecated">
   2199       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2200       <doc>
   2201       <![CDATA[@see Binder#getMembersInjector(Class)]]>
   2202       </doc>
   2203     </method>
   2204     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   2205       abstract="false" native="false" synchronized="false"
   2206       static="false" final="false" visibility="protected"
   2207       deprecated="not deprecated">
   2208       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2209       <doc>
   2210       <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]>
   2211       </doc>
   2212     </method>
   2213     <method name="bindListener"
   2214       abstract="false" native="false" synchronized="false"
   2215       static="false" final="false" visibility="protected"
   2216       deprecated="not deprecated">
   2217       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
   2218       <param name="listener" type="com.google.inject.spi.TypeListener"/>
   2219       <doc>
   2220       <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]>
   2221       </doc>
   2222     </method>
   2223     <method name="bindListener"
   2224       abstract="false" native="false" synchronized="false"
   2225       static="false" final="false" visibility="protected"
   2226       deprecated="not deprecated">
   2227       <param name="bindingMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
   2228       <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/>
   2229       <doc>
   2230       <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...)
   2231  @since 4.0]]>
   2232       </doc>
   2233     </method>
   2234     <doc>
   2235     <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings
   2236  that are explicitly exposed will be available to other modules and to the users of the injector.
   2237  This module may expose the bindings it creates and the bindings of the modules it installs.
   2238 
   2239  <p>A private module can be nested within a regular module or within another private module using
   2240  {@link Binder#install install()}.  Its bindings live in a new environment that inherits bindings,
   2241  type converters, scopes, and interceptors from the surrounding ("parent") environment.  When you
   2242  nest multiple private modules, the result is a tree of environments where the injector's
   2243  environment is the root.
   2244 
   2245  <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link
   2246  com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link
   2247  Exposed} annotation:
   2248 
   2249  <pre>
   2250  public class FooBarBazModule extends PrivateModule {
   2251    protected void configure() {
   2252      bind(Foo.class).to(RealFoo.class);
   2253      expose(Foo.class);
   2254 
   2255      install(new TransactionalBarModule());
   2256      expose(Bar.class).annotatedWith(Transactional.class);
   2257 
   2258      bind(SomeImplementationDetail.class);
   2259      install(new MoreImplementationDetailsModule());
   2260    }
   2261 
   2262    {@literal @}Provides {@literal @}Exposed
   2263    public Baz provideBaz() {
   2264      return new SuperBaz();
   2265    }
   2266  }
   2267  </pre>
   2268 
   2269  <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent
   2270  injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the
   2271  root environment. Such bindings are shared among all environments in the tree.
   2272  
   2273  <p>The scope of a binding is constrained to its environment. A singleton bound in a private
   2274  module will be unique to its environment. But a binding for the same type in a different private
   2275  module will yield a different instance.
   2276 
   2277  <p>A shared binding that injects the {@code Injector} gets the root injector, which only has
   2278  access to bindings in the root environment. An explicit binding that injects the {@code Injector}
   2279  gets access to all bindings in the child environment.
   2280 
   2281  <p>To promote a just-in-time binding to an explicit binding, bind it:
   2282  <pre>
   2283    bind(FooImpl.class);
   2284  </pre>
   2285 
   2286  @author jessewilson (a] google.com (Jesse Wilson)
   2287  @since 2.0]]>
   2288     </doc>
   2289   </class>
   2290   <!-- end class com.google.inject.PrivateModule -->
   2291   <!-- start class com.google.inject.ProvidedBy -->
   2292   <class name="ProvidedBy"    abstract="true"
   2293     static="false" final="false" visibility="public"
   2294     deprecated="not deprecated">
   2295     <implements name="java.lang.annotation.Annotation"/>
   2296     <doc>
   2297     <![CDATA[A pointer to the default provider type for a type.
   2298 
   2299  @author crazybob (a] google.com (Bob Lee)]]>
   2300     </doc>
   2301   </class>
   2302   <!-- end class com.google.inject.ProvidedBy -->
   2303   <!-- start interface com.google.inject.Provider -->
   2304   <interface name="Provider"    abstract="true"
   2305     static="false" final="false" visibility="public"
   2306     deprecated="not deprecated">
   2307     <implements name="javax.inject.Provider&lt;T&gt;"/>
   2308     <method name="get" return="T"
   2309       abstract="true" native="false" synchronized="false"
   2310       static="false" final="false" visibility="public"
   2311       deprecated="not deprecated">
   2312       <doc>
   2313       <![CDATA[Provides an instance of {@code T}. Must never return {@code null}.
   2314 
   2315  @throws OutOfScopeException when an attempt is made to access a scoped object while the scope
   2316      in question is not currently active
   2317  @throws ProvisionException if an instance cannot be provided. Such exceptions include messages
   2318      and throwables to describe why provision failed.]]>
   2319       </doc>
   2320     </method>
   2321     <doc>
   2322     <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways
   2323  by Guice:
   2324 
   2325  <ul>
   2326  <li>When the default means for obtaining instances (an injectable or parameterless constructor)
   2327  is insufficient for a particular binding, the module can specify a custom {@code Provider}
   2328  instead, to control exactly how Guice creates or obtains instances for the binding.
   2329 
   2330  <li>An implementation class may always choose to have a {@code Provider<T>} instance injected,
   2331  rather than having a {@code T} injected directly.  This may give you access to multiple
   2332  instances, instances you wish to safely mutate and discard, instances which are out of scope
   2333  (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or
   2334  instances that will be initialized lazily.
   2335 
   2336  <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides
   2337  when to delegate to the backing provider and when to provide the instance some other way.
   2338 
   2339  <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests
   2340  for a given key, via the {@link Injector#getProvider} methods.
   2341  </ul>
   2342 
   2343  @param <T> the type of object this provides
   2344 
   2345  @author crazybob (a] google.com (Bob Lee)]]>
   2346     </doc>
   2347   </interface>
   2348   <!-- end interface com.google.inject.Provider -->
   2349   <!-- start class com.google.inject.Provides -->
   2350   <class name="Provides"    abstract="true"
   2351     static="false" final="false" visibility="public"
   2352     deprecated="not deprecated">
   2353     <implements name="java.lang.annotation.Annotation"/>
   2354     <doc>
   2355     <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return
   2356  type is bound to its returned value. Guice will pass dependencies to the method as parameters.
   2357 
   2358  @author crazybob (a] google.com (Bob Lee)
   2359  @since 2.0]]>
   2360     </doc>
   2361   </class>
   2362   <!-- end class com.google.inject.Provides -->
   2363   <!-- start class com.google.inject.ProvisionException -->
   2364   <class name="ProvisionException" extends="java.lang.RuntimeException"
   2365     abstract="false"
   2366     static="false" final="true" visibility="public"
   2367     deprecated="not deprecated">
   2368     <constructor name="ProvisionException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
   2369       static="false" final="false" visibility="public"
   2370       deprecated="not deprecated">
   2371       <doc>
   2372       <![CDATA[Creates a ProvisionException containing {@code messages}.]]>
   2373       </doc>
   2374     </constructor>
   2375     <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable"
   2376       static="false" final="false" visibility="public"
   2377       deprecated="not deprecated">
   2378     </constructor>
   2379     <constructor name="ProvisionException" type="java.lang.String"
   2380       static="false" final="false" visibility="public"
   2381       deprecated="not deprecated">
   2382     </constructor>
   2383     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   2384       abstract="false" native="false" synchronized="false"
   2385       static="false" final="false" visibility="public"
   2386       deprecated="not deprecated">
   2387       <doc>
   2388       <![CDATA[Returns messages for the errors that caused this exception.]]>
   2389       </doc>
   2390     </method>
   2391     <method name="getMessage" return="java.lang.String"
   2392       abstract="false" native="false" synchronized="false"
   2393       static="false" final="false" visibility="public"
   2394       deprecated="not deprecated">
   2395     </method>
   2396     <doc>
   2397     <![CDATA[Indicates that there was a runtime failure while providing an instance.
   2398 
   2399  @author kevinb (a] google.com (Kevin Bourrillion)
   2400  @author jessewilson (a] google.com (Jesse Wilson)
   2401  @since 2.0]]>
   2402     </doc>
   2403   </class>
   2404   <!-- end class com.google.inject.ProvisionException -->
   2405   <!-- start interface com.google.inject.Scope -->
   2406   <interface name="Scope"    abstract="true"
   2407     static="false" final="false" visibility="public"
   2408     deprecated="not deprecated">
   2409     <method name="scope" return="com.google.inject.Provider&lt;T&gt;"
   2410       abstract="true" native="false" synchronized="false"
   2411       static="false" final="false" visibility="public"
   2412       deprecated="not deprecated">
   2413       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2414       <param name="unscoped" type="com.google.inject.Provider&lt;T&gt;"/>
   2415       <doc>
   2416       <![CDATA[Scopes a provider. The returned provider returns objects from this scope.
   2417  If an object does not exist in this scope, the provider can use the given
   2418  unscoped provider to retrieve one.
   2419 
   2420  <p>Scope implementations are strongly encouraged to override
   2421  {@link Object#toString} in the returned provider and include the backing
   2422  provider's {@code toString()} output.
   2423 
   2424  @param key binding key
   2425  @param unscoped locates an instance when one doesn't already exist in this
   2426   scope.
   2427  @return a new provider which only delegates to the given unscoped provider
   2428   when an instance of the requested object doesn't already exist in this
   2429   scope]]>
   2430       </doc>
   2431     </method>
   2432     <method name="toString" return="java.lang.String"
   2433       abstract="true" native="false" synchronized="false"
   2434       static="false" final="false" visibility="public"
   2435       deprecated="not deprecated">
   2436       <doc>
   2437       <![CDATA[A short but useful description of this scope.  For comparison, the standard
   2438  scopes that ship with guice use the descriptions
   2439  {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and
   2440  {@code "ServletScopes.REQUEST"}.]]>
   2441       </doc>
   2442     </method>
   2443     <doc>
   2444     <![CDATA[A scope is a level of visibility that instances provided by Guice may have.
   2445  By default, an instance created by the {@link Injector} has <i>no scope</i>,
   2446  meaning it has no state from the framework's perspective -- the
   2447  {@code Injector} creates it, injects it once into the class that required it,
   2448  and then immediately forgets it. Associating a scope with a particular
   2449  binding allows the created instance to be "remembered" and possibly used
   2450  again for other injections.
   2451 
   2452  <p>An example of a scope is {@link Scopes#SINGLETON}.
   2453 
   2454  @author crazybob (a] google.com (Bob Lee)]]>
   2455     </doc>
   2456   </interface>
   2457   <!-- end interface com.google.inject.Scope -->
   2458   <!-- start class com.google.inject.ScopeAnnotation -->
   2459   <class name="ScopeAnnotation"    abstract="true"
   2460     static="false" final="false" visibility="public"
   2461     deprecated="not deprecated">
   2462     <implements name="java.lang.annotation.Annotation"/>
   2463     <doc>
   2464     <![CDATA[Annotates annotations which are used for scoping. Only one such annotation
   2465  may apply to a single implementation class. You must also annotate scope
   2466  annotations with {@code @Retention(RUNTIME)}. For example:
   2467 
   2468  <pre>
   2469    {@code @}Retention(RUNTIME)
   2470    {@code @}Target(TYPE, METHOD)
   2471    {@code @}ScopeAnnotation
   2472    public {@code @}interface SessionScoped {}
   2473  </pre>
   2474 
   2475  @author crazybob (a] google.com (Bob Lee)]]>
   2476     </doc>
   2477   </class>
   2478   <!-- end class com.google.inject.ScopeAnnotation -->
   2479   <!-- start class com.google.inject.Scopes -->
   2480   <class name="Scopes" extends="java.lang.Object"
   2481     abstract="false"
   2482     static="false" final="false" visibility="public"
   2483     deprecated="not deprecated">
   2484     <method name="isSingleton" return="boolean"
   2485       abstract="false" native="false" synchronized="false"
   2486       static="true" final="false" visibility="public"
   2487       deprecated="not deprecated">
   2488       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   2489       <doc>
   2490       <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link
   2491  com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
   2492  was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
   2493  also true if the target binding is singleton-scoped.
   2494 
   2495  @since 3.0]]>
   2496       </doc>
   2497     </method>
   2498     <method name="isScoped" return="boolean"
   2499       abstract="false" native="false" synchronized="false"
   2500       static="true" final="false" visibility="public"
   2501       deprecated="not deprecated">
   2502       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   2503       <param name="scope" type="com.google.inject.Scope"/>
   2504       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2505       <doc>
   2506       <![CDATA[Returns true if {@code binding} has the given scope. If the binding is a {@link
   2507  com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
   2508  was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
   2509  also true if the target binding has the given scope.
   2510 
   2511  @param binding binding to check
   2512  @param scope scope implementation instance
   2513  @param scopeAnnotation scope annotation class
   2514  @since 4.0]]>
   2515       </doc>
   2516     </method>
   2517     <method name="isCircularProxy" return="boolean"
   2518       abstract="false" native="false" synchronized="false"
   2519       static="true" final="false" visibility="public"
   2520       deprecated="not deprecated">
   2521       <param name="object" type="java.lang.Object"/>
   2522       <doc>
   2523       <![CDATA[Returns true if the object is a proxy for a circular dependency,
   2524  constructed by Guice because it encountered a circular dependency. Scope
   2525  implementations should be careful to <b>not cache circular proxies</b>,
   2526  because the proxies are not intended for general purpose use. (They are
   2527  designed just to fulfill the immediate injection, not all injections.
   2528  Caching them can lead to IllegalArgumentExceptions or ClassCastExceptions.)
   2529 
   2530  @since 4.0]]>
   2531       </doc>
   2532     </method>
   2533     <field name="SINGLETON" type="com.google.inject.Scope"
   2534       transient="false" volatile="false"
   2535       static="true" final="true" visibility="public"
   2536       deprecated="not deprecated">
   2537       <doc>
   2538       <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]>
   2539       </doc>
   2540     </field>
   2541     <field name="NO_SCOPE" type="com.google.inject.Scope"
   2542       transient="false" volatile="false"
   2543       static="true" final="true" visibility="public"
   2544       deprecated="not deprecated">
   2545       <doc>
   2546       <![CDATA[No scope; the same as not applying any scope at all.  Each time the
   2547  Injector obtains an instance of an object with "no scope", it injects this
   2548  instance then immediately forgets it.  When the next request for the same
   2549  binding arrives it will need to obtain the instance over again.
   2550 
   2551  <p>This exists only in case a class has been annotated with a scope
   2552  annotation such as {@link Singleton @Singleton}, and you need to override
   2553  this to "no scope" in your binding.
   2554 
   2555  @since 2.0]]>
   2556       </doc>
   2557     </field>
   2558     <doc>
   2559     <![CDATA[Built-in scope implementations.
   2560 
   2561  @author crazybob (a] google.com (Bob Lee)]]>
   2562     </doc>
   2563   </class>
   2564   <!-- end class com.google.inject.Scopes -->
   2565   <!-- start class com.google.inject.Singleton -->
   2566   <class name="Singleton"    abstract="true"
   2567     static="false" final="false" visibility="public"
   2568     deprecated="not deprecated">
   2569     <implements name="java.lang.annotation.Annotation"/>
   2570     <doc>
   2571     <![CDATA[Apply this to implementation classes when you want only one instance
   2572  (per {@link Injector}) to be reused for all injections for that binding.
   2573 
   2574  @author crazybob (a] google.com (Bob Lee)]]>
   2575     </doc>
   2576   </class>
   2577   <!-- end class com.google.inject.Singleton -->
   2578   <!-- start class com.google.inject.Stage -->
   2579   <class name="Stage" extends="java.lang.Enum&lt;com.google.inject.Stage&gt;"
   2580     abstract="false"
   2581     static="false" final="true" visibility="public"
   2582     deprecated="not deprecated">
   2583     <method name="values" return="com.google.inject.Stage[]"
   2584       abstract="false" native="false" synchronized="false"
   2585       static="true" final="false" visibility="public"
   2586       deprecated="not deprecated">
   2587     </method>
   2588     <method name="valueOf" return="com.google.inject.Stage"
   2589       abstract="false" native="false" synchronized="false"
   2590       static="true" final="false" visibility="public"
   2591       deprecated="not deprecated">
   2592       <param name="name" type="java.lang.String"/>
   2593     </method>
   2594     <doc>
   2595     <![CDATA[The stage we're running in.
   2596 
   2597  @author crazybob (a] google.com (Bob Lee)]]>
   2598     </doc>
   2599   </class>
   2600   <!-- end class com.google.inject.Stage -->
   2601   <!-- start class com.google.inject.TypeLiteral -->
   2602   <class name="TypeLiteral" extends="java.lang.Object"
   2603     abstract="false"
   2604     static="false" final="false" visibility="public"
   2605     deprecated="not deprecated">
   2606     <constructor name="TypeLiteral"
   2607       static="false" final="false" visibility="protected"
   2608       deprecated="not deprecated">
   2609       <doc>
   2610       <![CDATA[Constructs a new type literal. Derives represented class from type
   2611  parameter.
   2612 
   2613  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   2614  parameter in the anonymous class's type hierarchy so we can reconstitute it
   2615  at runtime despite erasure.]]>
   2616       </doc>
   2617     </constructor>
   2618     <method name="getRawType" return="java.lang.Class&lt;? super T&gt;"
   2619       abstract="false" native="false" synchronized="false"
   2620       static="false" final="true" visibility="public"
   2621       deprecated="not deprecated">
   2622       <doc>
   2623       <![CDATA[Returns the raw (non-generic) type for this type.
   2624  
   2625  @since 2.0]]>
   2626       </doc>
   2627     </method>
   2628     <method name="getType" return="java.lang.reflect.Type"
   2629       abstract="false" native="false" synchronized="false"
   2630       static="false" final="true" visibility="public"
   2631       deprecated="not deprecated">
   2632       <doc>
   2633       <![CDATA[Gets underlying {@code Type} instance.]]>
   2634       </doc>
   2635     </method>
   2636     <method name="hashCode" return="int"
   2637       abstract="false" native="false" synchronized="false"
   2638       static="false" final="true" visibility="public"
   2639       deprecated="not deprecated">
   2640     </method>
   2641     <method name="equals" return="boolean"
   2642       abstract="false" native="false" synchronized="false"
   2643       static="false" final="true" visibility="public"
   2644       deprecated="not deprecated">
   2645       <param name="o" type="java.lang.Object"/>
   2646     </method>
   2647     <method name="toString" return="java.lang.String"
   2648       abstract="false" native="false" synchronized="false"
   2649       static="false" final="true" visibility="public"
   2650       deprecated="not deprecated">
   2651     </method>
   2652     <method name="get" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2653       abstract="false" native="false" synchronized="false"
   2654       static="true" final="false" visibility="public"
   2655       deprecated="not deprecated">
   2656       <param name="type" type="java.lang.reflect.Type"/>
   2657       <doc>
   2658       <![CDATA[Gets type literal for the given {@code Type} instance.]]>
   2659       </doc>
   2660     </method>
   2661     <method name="get" return="com.google.inject.TypeLiteral&lt;T&gt;"
   2662       abstract="false" native="false" synchronized="false"
   2663       static="true" final="false" visibility="public"
   2664       deprecated="not deprecated">
   2665       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2666       <doc>
   2667       <![CDATA[Gets type literal for the given {@code Class} instance.]]>
   2668       </doc>
   2669     </method>
   2670     <method name="getSupertype" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2671       abstract="false" native="false" synchronized="false"
   2672       static="false" final="false" visibility="public"
   2673       deprecated="not deprecated">
   2674       <param name="supertype" type="java.lang.Class&lt;?&gt;"/>
   2675       <doc>
   2676       <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code
   2677  ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code
   2678  Iterable.class}.
   2679 
   2680  @param supertype a superclass of, or interface implemented by, this.
   2681  @since 2.0]]>
   2682       </doc>
   2683     </method>
   2684     <method name="getFieldType" 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="field" type="java.lang.reflect.Field"/>
   2689       <doc>
   2690       <![CDATA[Returns the resolved generic type of {@code field}.
   2691 
   2692  @param field a field defined by this or any superclass.
   2693  @since 2.0]]>
   2694       </doc>
   2695     </method>
   2696     <method name="getParameterTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   2697       abstract="false" native="false" synchronized="false"
   2698       static="false" final="false" visibility="public"
   2699       deprecated="not deprecated">
   2700       <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
   2701       <doc>
   2702       <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}.
   2703 
   2704  @param methodOrConstructor a method or constructor defined by this or any supertype.
   2705  @since 2.0]]>
   2706       </doc>
   2707     </method>
   2708     <method name="getExceptionTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   2709       abstract="false" native="false" synchronized="false"
   2710       static="false" final="false" visibility="public"
   2711       deprecated="not deprecated">
   2712       <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
   2713       <doc>
   2714       <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}.
   2715 
   2716  @param methodOrConstructor a method or constructor defined by this or any supertype.
   2717  @since 2.0]]>
   2718       </doc>
   2719     </method>
   2720     <method name="getReturnType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2721       abstract="false" native="false" synchronized="false"
   2722       static="false" final="false" visibility="public"
   2723       deprecated="not deprecated">
   2724       <param name="method" type="java.lang.reflect.Method"/>
   2725       <doc>
   2726       <![CDATA[Returns the resolved generic return type of {@code method}.
   2727 
   2728  @param method a method defined by this or any supertype.
   2729  @since 2.0]]>
   2730       </doc>
   2731     </method>
   2732     <doc>
   2733     <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to
   2734  represent generic types, so this class does. Forces clients to create a
   2735  subclass of this class which enables retrieval the type information even at
   2736  runtime.
   2737 
   2738  <p>For example, to create a type literal for {@code List<String>}, you can
   2739  create an empty anonymous inner class:
   2740 
   2741  <p>
   2742  {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};}
   2743 
   2744  <p>Along with modeling generic types, this class can resolve type parameters.
   2745  For example, to figure out what type {@code keySet()} returns on a {@code
   2746  Map<Integer, String>}, use this code:<pre>   {@code
   2747 
   2748    TypeLiteral<Map<Integer, String>> mapType
   2749        = new TypeLiteral<Map<Integer, String>>() {};
   2750    TypeLiteral<?> keySetType
   2751        = mapType.getReturnType(Map.class.getMethod("keySet"));
   2752    System.out.println(keySetType); // prints "Set<Integer>"}</pre>
   2753 
   2754  @author crazybob (a] google.com (Bob Lee)
   2755  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2756     </doc>
   2757   </class>
   2758   <!-- end class com.google.inject.TypeLiteral -->
   2759 </package>
   2760 <package name="com.google.inject.assistedinject">
   2761   <!-- start class com.google.inject.assistedinject.Assisted -->
   2762   <class name="Assisted"    abstract="true"
   2763     static="false" final="false" visibility="public"
   2764     deprecated="not deprecated">
   2765     <implements name="java.lang.annotation.Annotation"/>
   2766     <doc>
   2767     <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method.
   2768 
   2769  @author jmourits (a] google.com (Jerome Mourits)
   2770  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2771     </doc>
   2772   </class>
   2773   <!-- end class com.google.inject.assistedinject.Assisted -->
   2774   <!-- start class com.google.inject.assistedinject.AssistedInject -->
   2775   <class name="AssistedInject"    abstract="true"
   2776     static="false" final="false" visibility="public"
   2777     deprecated="not deprecated">
   2778     <implements name="java.lang.annotation.Annotation"/>
   2779     <doc>
   2780     <![CDATA[<p>
   2781  When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with 
   2782  {@code @AssistedInject} indicate that multiple constructors can be injected, each with different
   2783  parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject}
   2784  annotations. The assisted parameters must exactly match one corresponding factory method within
   2785  the factory interface, but the parameters do not need to be in the same order. Constructors
   2786  annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits
   2787  (such as AOP).
   2788  
   2789  <p>
   2790  <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors
   2791  annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted
   2792  parameters must exactly match one corresponding factory method within the factory interface and
   2793  all must be in the same order as listed in the factory. In this backwards compatable mode,
   2794  constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive
   2795  none of the benefits.
   2796  
   2797  <p>
   2798  Constructor parameters must be either supplied by the factory interface and marked with
   2799  <code>@Assisted</code>, or they must be injectable.
   2800  
   2801  @author jmourits (a] google.com (Jerome Mourits)
   2802  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2803     </doc>
   2804   </class>
   2805   <!-- end class com.google.inject.assistedinject.AssistedInject -->
   2806   <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding -->
   2807   <interface name="AssistedInjectBinding"    abstract="true"
   2808     static="false" final="false" visibility="public"
   2809     deprecated="not deprecated">
   2810     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   2811       abstract="true" native="false" synchronized="false"
   2812       static="false" final="false" visibility="public"
   2813       deprecated="not deprecated">
   2814       <doc>
   2815       <![CDATA[Returns the {@link Key} for the factory binding.]]>
   2816       </doc>
   2817     </method>
   2818     <method name="getAssistedMethods" return="java.util.Collection&lt;com.google.inject.assistedinject.AssistedMethod&gt;"
   2819       abstract="true" native="false" synchronized="false"
   2820       static="false" final="false" visibility="public"
   2821       deprecated="not deprecated">
   2822       <doc>
   2823       <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]>
   2824       </doc>
   2825     </method>
   2826     <doc>
   2827     <![CDATA[A binding for a factory created by FactoryModuleBuilder.
   2828  
   2829  @param <T> The fully qualified type of the factory.
   2830   
   2831  @since 3.0
   2832  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2833     </doc>
   2834   </interface>
   2835   <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding -->
   2836   <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
   2837   <interface name="AssistedInjectTargetVisitor"    abstract="true"
   2838     static="false" final="false" visibility="public"
   2839     deprecated="not deprecated">
   2840     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   2841     <method name="visit" return="V"
   2842       abstract="true" native="false" synchronized="false"
   2843       static="false" final="false" visibility="public"
   2844       deprecated="not deprecated">
   2845       <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding&lt;? extends T&gt;"/>
   2846       <doc>
   2847       <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]>
   2848       </doc>
   2849     </method>
   2850     <doc>
   2851     <![CDATA[A visitor for the AssistedInject extension.
   2852  <p>
   2853  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   2854  {@link FactoryModuleBuilder} will be visited through this interface.
   2855 
   2856  @since 3.0
   2857  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2858     </doc>
   2859   </interface>
   2860   <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
   2861   <!-- start interface com.google.inject.assistedinject.AssistedMethod -->
   2862   <interface name="AssistedMethod"    abstract="true"
   2863     static="false" final="false" visibility="public"
   2864     deprecated="not deprecated">
   2865     <method name="getFactoryMethod" return="java.lang.reflect.Method"
   2866       abstract="true" native="false" synchronized="false"
   2867       static="false" final="false" visibility="public"
   2868       deprecated="not deprecated">
   2869       <doc>
   2870       <![CDATA[Returns the factory method that is being assisted.]]>
   2871       </doc>
   2872     </method>
   2873     <method name="getImplementationType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2874       abstract="true" native="false" synchronized="false"
   2875       static="false" final="false" visibility="public"
   2876       deprecated="not deprecated">
   2877       <doc>
   2878       <![CDATA[Returns the implementation type that will be created when the method is
   2879  used.]]>
   2880       </doc>
   2881     </method>
   2882     <method name="getImplementationConstructor" return="java.lang.reflect.Constructor&lt;?&gt;"
   2883       abstract="true" native="false" synchronized="false"
   2884       static="false" final="false" visibility="public"
   2885       deprecated="not deprecated">
   2886       <doc>
   2887       <![CDATA[Returns the constructor that will be used to construct instances of the 
   2888  implementation.]]>
   2889       </doc>
   2890     </method>
   2891     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   2892       abstract="true" native="false" synchronized="false"
   2893       static="false" final="false" visibility="public"
   2894       deprecated="not deprecated">
   2895       <doc>
   2896       <![CDATA[Returns all non-assisted dependencies required to construct and inject
   2897  the implementation.]]>
   2898       </doc>
   2899     </method>
   2900     <doc>
   2901     <![CDATA[Details about how a method in an assisted inject factory will be assisted.
   2902  
   2903  @since 3.0
   2904  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2905     </doc>
   2906   </interface>
   2907   <!-- end interface com.google.inject.assistedinject.AssistedMethod -->
   2908   <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder -->
   2909   <class name="FactoryModuleBuilder" extends="java.lang.Object"
   2910     abstract="false"
   2911     static="false" final="true" visibility="public"
   2912     deprecated="not deprecated">
   2913     <constructor name="FactoryModuleBuilder"
   2914       static="false" final="false" visibility="public"
   2915       deprecated="not deprecated">
   2916     </constructor>
   2917     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2918       abstract="false" native="false" synchronized="false"
   2919       static="false" final="false" visibility="public"
   2920       deprecated="not deprecated">
   2921       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2922       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2923       <doc>
   2924       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2925       </doc>
   2926     </method>
   2927     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2928       abstract="false" native="false" synchronized="false"
   2929       static="false" final="false" visibility="public"
   2930       deprecated="not deprecated">
   2931       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2932       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2933       <doc>
   2934       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2935       </doc>
   2936     </method>
   2937     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2938       abstract="false" native="false" synchronized="false"
   2939       static="false" final="false" visibility="public"
   2940       deprecated="not deprecated">
   2941       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2942       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2943       <doc>
   2944       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2945       </doc>
   2946     </method>
   2947     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2948       abstract="false" native="false" synchronized="false"
   2949       static="false" final="false" visibility="public"
   2950       deprecated="not deprecated">
   2951       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2952       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2953       <doc>
   2954       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2955       </doc>
   2956     </method>
   2957     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2958       abstract="false" native="false" synchronized="false"
   2959       static="false" final="false" visibility="public"
   2960       deprecated="not deprecated">
   2961       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2962       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2963       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2964       <doc>
   2965       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2966       </doc>
   2967     </method>
   2968     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2969       abstract="false" native="false" synchronized="false"
   2970       static="false" final="false" visibility="public"
   2971       deprecated="not deprecated">
   2972       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2973       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2974       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2975       <doc>
   2976       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2977       </doc>
   2978     </method>
   2979     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2980       abstract="false" native="false" synchronized="false"
   2981       static="false" final="false" visibility="public"
   2982       deprecated="not deprecated">
   2983       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2984       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2985       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2986       <doc>
   2987       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2988       </doc>
   2989     </method>
   2990     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2991       abstract="false" native="false" synchronized="false"
   2992       static="false" final="false" visibility="public"
   2993       deprecated="not deprecated">
   2994       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2995       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2996       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2997       <doc>
   2998       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2999       </doc>
   3000     </method>
   3001     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3002       abstract="false" native="false" synchronized="false"
   3003       static="false" final="false" visibility="public"
   3004       deprecated="not deprecated">
   3005       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   3006       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3007       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   3008       <doc>
   3009       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3010       </doc>
   3011     </method>
   3012     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3013       abstract="false" native="false" synchronized="false"
   3014       static="false" final="false" visibility="public"
   3015       deprecated="not deprecated">
   3016       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   3017       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3018       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3019       <doc>
   3020       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3021       </doc>
   3022     </method>
   3023     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3024       abstract="false" native="false" synchronized="false"
   3025       static="false" final="false" visibility="public"
   3026       deprecated="not deprecated">
   3027       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   3028       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3029       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   3030       <doc>
   3031       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3032       </doc>
   3033     </method>
   3034     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3035       abstract="false" native="false" synchronized="false"
   3036       static="false" final="false" visibility="public"
   3037       deprecated="not deprecated">
   3038       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   3039       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3040       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3041       <doc>
   3042       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3043       </doc>
   3044     </method>
   3045     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3046       abstract="false" native="false" synchronized="false"
   3047       static="false" final="false" visibility="public"
   3048       deprecated="not deprecated">
   3049       <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
   3050       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   3051       <doc>
   3052       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3053       </doc>
   3054     </method>
   3055     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3056       abstract="false" native="false" synchronized="false"
   3057       static="false" final="false" visibility="public"
   3058       deprecated="not deprecated">
   3059       <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
   3060       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3061       <doc>
   3062       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3063       </doc>
   3064     </method>
   3065     <method name="build" return="com.google.inject.Module"
   3066       abstract="false" native="false" synchronized="false"
   3067       static="false" final="false" visibility="public"
   3068       deprecated="not deprecated">
   3069       <param name="factoryInterface" type="java.lang.Class&lt;F&gt;"/>
   3070       <doc>
   3071       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3072       </doc>
   3073     </method>
   3074     <method name="build" return="com.google.inject.Module"
   3075       abstract="false" native="false" synchronized="false"
   3076       static="false" final="false" visibility="public"
   3077       deprecated="not deprecated">
   3078       <param name="factoryInterface" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
   3079       <doc>
   3080       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3081       </doc>
   3082     </method>
   3083     <method name="build" return="com.google.inject.Module"
   3084       abstract="false" native="false" synchronized="false"
   3085       static="false" final="false" visibility="public"
   3086       deprecated="not deprecated">
   3087       <param name="factoryInterface" type="com.google.inject.Key&lt;F&gt;"/>
   3088     </method>
   3089     <doc>
   3090     <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to
   3091  construct objects.
   3092 
   3093  <h3>Defining a factory</h3>
   3094  Create an interface whose methods return the constructed type, or any of its supertypes. The
   3095  method's parameters are the arguments required to build the constructed type.
   3096 
   3097  <pre>public interface PaymentFactory {
   3098    Payment create(Date startDate, Money amount);
   3099  }</pre>
   3100 
   3101  You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
   3102  or <i>newPayment</i>.
   3103 
   3104  <h3>Creating a type that accepts factory parameters</h3>
   3105  {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject
   3106  Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor
   3107  should have parameters that match each of the factory method's parameters. Each factory-supplied
   3108  parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the
   3109  parameter is not bound by your application's modules.
   3110 
   3111  <pre>public class RealPayment implements Payment {
   3112    {@literal @}Inject
   3113    public RealPayment(
   3114       CreditService creditService,
   3115       AuthService authService,
   3116       <strong>{@literal @}Assisted Date startDate</strong>,
   3117       <strong>{@literal @}Assisted Money amount</strong>) {
   3118      ...
   3119    }
   3120  }</pre>
   3121  
   3122  <h3>Multiple factory methods for the same type</h3>
   3123  If the factory contains many methods that return the same type, you can create multiple
   3124  constructors in your concrete class, each constructor marked with with
   3125  {@literal @}{@link AssistedInject}, in order to match the different parameters types of the
   3126  factory methods. 
   3127  
   3128  <pre>public interface PaymentFactory {
   3129     Payment create(Date startDate, Money amount);
   3130     Payment createWithoutDate(Money amount);
   3131  }
   3132  
   3133  public class RealPayment implements Payment {
   3134   {@literal @}AssistedInject
   3135    public RealPayment(
   3136       CreditService creditService,
   3137       AuthService authService,
   3138      <strong>{@literal @}Assisted Date startDate</strong>,
   3139      <strong>{@literal @}Assisted Money amount</strong>) {
   3140      ...
   3141    }
   3142    
   3143   {@literal @}AssistedInject
   3144    public RealPayment(
   3145       CreditService creditService,
   3146       AuthService authService,
   3147      <strong>{@literal @}Assisted Money amount</strong>) {
   3148      ...
   3149    }   
   3150  }</pre> 
   3151 
   3152  <h3>Configuring simple factories</h3>
   3153  In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the
   3154  factory:
   3155 
   3156  <pre>install(new FactoryModuleBuilder()
   3157      .implement(Payment.class, RealPayment.class)
   3158      .build(PaymentFactory.class));</pre>
   3159 
   3160  As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
   3161  factory cannot be used until the injector has been initialized.
   3162  
   3163  <h3>Configuring complex factories</h3>
   3164  Factories can create an arbitrary number of objects, one per each method.  Each factory
   3165  method can be configured using <code>.implement</code>.
   3166 
   3167  <pre>public interface OrderFactory {
   3168     Payment create(Date startDate, Money amount);
   3169     Shipment create(Customer customer, Item item);
   3170     Receipt create(Payment payment, Shipment shipment);
   3171  }
   3172  
   3173  [...]
   3174  
   3175  install(new FactoryModuleBuilder()
   3176      .implement(Payment.class, RealPayment.class)
   3177      // excluding .implement for Shipment means the implementation class
   3178      // will be 'Shipment' itself, which is legal if it's not an interface.
   3179      .implement(Receipt.class, RealReceipt.class)
   3180      .build(OrderFactory.class));</pre>
   3181  </pre>
   3182 
   3183  <h3>Using the factory</h3>
   3184  Inject your factory into your application classes. When you use the factory, your arguments
   3185  will be combined with values from the injector to construct an instance.
   3186 
   3187  <pre>public class PaymentAction {
   3188    {@literal @}Inject private PaymentFactory paymentFactory;
   3189 
   3190    public void doPayment(Money amount) {
   3191      Payment payment = paymentFactory.create(new Date(), amount);
   3192      payment.apply();
   3193    }
   3194  }</pre>
   3195 
   3196  <h3>Making parameter types distinct</h3>
   3197  The types of the factory method's parameters must be distinct. To use multiple parameters of
   3198  the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
   3199  parameters. The names must be applied to the factory method's parameters:
   3200 
   3201  <pre>public interface PaymentFactory {
   3202    Payment create(
   3203        <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3204        <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3205        Money amount);
   3206  } </pre>
   3207 
   3208  ...and to the concrete type's constructor parameters:
   3209 
   3210  <pre>public class RealPayment implements Payment {
   3211    {@literal @}Inject
   3212    public RealPayment(
   3213       CreditService creditService,
   3214       AuthService authService,
   3215       <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3216       <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3217       <strong>{@literal @}Assisted</strong> Money amount) {
   3218      ...
   3219    }
   3220  }</pre>
   3221 
   3222  <h3>Values are created by Guice</h3>
   3223  Returned factories use child injectors to create values. The values are eligible for method
   3224  interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
   3225  returned.
   3226 
   3227  <h3>More configuration options</h3>
   3228  In addition to simply specifying an implementation class for any returned type, factories' return
   3229  values can be automatic or can be configured to use annotations:
   3230  <p/>
   3231  If you just want to return the types specified in the factory, do not configure any
   3232  implementations:
   3233 
   3234  <pre>public interface FruitFactory {
   3235    Apple getApple(Color color);
   3236  }
   3237  ...
   3238  protected void configure() {
   3239    install(new FactoryModuleBuilder().build(FruitFactory.class));
   3240  }</pre>
   3241 
   3242  Note that any type returned by the factory in this manner needs to be an implementation class.
   3243  <p/>
   3244  To return two different implementations for the same interface from your factory, use binding
   3245  annotations on your return types:
   3246 
   3247  <pre>interface CarFactory {
   3248    {@literal @}Named("fast") Car getFastCar(Color color);
   3249    {@literal @}Named("clean") Car getCleanCar(Color color);
   3250  }
   3251  ...
   3252  protected void configure() {
   3253    install(new FactoryModuleBuilder()
   3254        .implement(Car.class, Names.named("fast"), Porsche.class)
   3255        .implement(Car.class, Names.named("clean"), Prius.class)
   3256        .build(CarFactory.class));
   3257  }</pre>
   3258  
   3259  <h3>Implementation limitations</h3>
   3260  As a limitation of the implementation, it is prohibited to declare a factory method that
   3261  accepts a {@code Provider} as one of its arguments.
   3262 
   3263  @since 3.0
   3264  @author schmitt (a] google.com (Peter Schmitt)]]>
   3265     </doc>
   3266   </class>
   3267   <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder -->
   3268   <!-- start class com.google.inject.assistedinject.FactoryProvider -->
   3269   <class name="FactoryProvider" extends="java.lang.Object"
   3270     abstract="false"
   3271     static="false" final="false" visibility="public"
   3272     deprecated="use {@link FactoryModuleBuilder} instead.">
   3273     <implements name="com.google.inject.Provider&lt;F&gt;"/>
   3274     <implements name="com.google.inject.spi.HasDependencies"/>
   3275     <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
   3276       abstract="false" native="false" synchronized="false"
   3277       static="true" final="false" visibility="public"
   3278       deprecated="not deprecated">
   3279       <param name="factoryType" type="java.lang.Class&lt;F&gt;"/>
   3280       <param name="implementationType" type="java.lang.Class&lt;?&gt;"/>
   3281     </method>
   3282     <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
   3283       abstract="false" native="false" synchronized="false"
   3284       static="true" final="false" visibility="public"
   3285       deprecated="not deprecated">
   3286       <param name="factoryType" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
   3287       <param name="implementationType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   3288     </method>
   3289     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   3290       abstract="false" native="false" synchronized="false"
   3291       static="false" final="false" visibility="public"
   3292       deprecated="not deprecated">
   3293     </method>
   3294     <method name="get" return="F"
   3295       abstract="false" native="false" synchronized="false"
   3296       static="false" final="false" visibility="public"
   3297       deprecated="not deprecated">
   3298     </method>
   3299     <method name="hashCode" return="int"
   3300       abstract="false" native="false" synchronized="false"
   3301       static="false" final="false" visibility="public"
   3302       deprecated="not deprecated">
   3303     </method>
   3304     <method name="equals" return="boolean"
   3305       abstract="false" native="false" synchronized="false"
   3306       static="false" final="false" visibility="public"
   3307       deprecated="not deprecated">
   3308       <param name="obj" type="java.lang.Object"/>
   3309     </method>
   3310     <doc>
   3311     <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and
   3312  additional capability.
   3313 
   3314  <p>Provides a factory that combines the caller's arguments with injector-supplied values to
   3315  construct objects.
   3316 
   3317  <h3>Defining a factory</h3>
   3318  Create an interface whose methods return the constructed type, or any of its supertypes. The
   3319  method's parameters are the arguments required to build the constructed type.
   3320  <pre>public interface PaymentFactory {
   3321    Payment create(Date startDate, Money amount);
   3322  }</pre>
   3323  You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
   3324  or <i>newPayment</i>.
   3325 
   3326  <h3>Creating a type that accepts factory parameters</h3>
   3327  {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated
   3328  constructor. In addition to injector-supplied parameters, the constructor should have
   3329  parameters that match each of the factory method's parameters. Each factory-supplied parameter
   3330  requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter
   3331  is not bound by your application's modules.
   3332  <pre>public class RealPayment implements Payment {
   3333    {@literal @}Inject
   3334    public RealPayment(
   3335       CreditService creditService,
   3336       AuthService authService,
   3337       <strong>{@literal @}Assisted Date startDate</strong>,
   3338       <strong>{@literal @}Assisted Money amount</strong>) {
   3339      ...
   3340    }
   3341  }</pre>
   3342  Any parameter that permits a null value should also be annotated {@code @Nullable}.
   3343 
   3344  <h3>Configuring factories</h3>
   3345  In your {@link com.google.inject.Module module}, bind the factory interface to the returned
   3346  factory:
   3347  <pre>bind(PaymentFactory.class).toProvider(
   3348      FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre>
   3349  As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
   3350  factory cannot be used until the injector has been initialized.
   3351 
   3352  <h3>Using the factory</h3>
   3353  Inject your factory into your application classes. When you use the factory, your arguments
   3354  will be combined with values from the injector to construct an instance.
   3355  <pre>public class PaymentAction {
   3356    {@literal @}Inject private PaymentFactory paymentFactory;
   3357 
   3358    public void doPayment(Money amount) {
   3359      Payment payment = paymentFactory.create(new Date(), amount);
   3360      payment.apply();
   3361    }
   3362  }</pre>
   3363 
   3364  <h3>Making parameter types distinct</h3>
   3365  The types of the factory method's parameters must be distinct. To use multiple parameters of
   3366  the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
   3367  parameters. The names must be applied to the factory method's parameters:
   3368 
   3369  <pre>public interface PaymentFactory {
   3370    Payment create(
   3371        <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3372        <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3373        Money amount);
   3374  } </pre>
   3375  ...and to the concrete type's constructor parameters:
   3376  <pre>public class RealPayment implements Payment {
   3377    {@literal @}Inject
   3378    public RealPayment(
   3379       CreditService creditService,
   3380       AuthService authService,
   3381       <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3382       <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3383       <strong>{@literal @}Assisted</strong> Money amount) {
   3384      ...
   3385    }
   3386  }</pre>
   3387 
   3388  <h3>Values are created by Guice</h3>
   3389  Returned factories use child injectors to create values. The values are eligible for method
   3390  interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
   3391  returned.
   3392 
   3393  <h3>Backwards compatibility using {@literal @}AssistedInject</h3>
   3394  Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with
   3395  {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode.
   3396 
   3397  <p>Instead of matching factory method arguments to constructor parameters using their names, the
   3398  <strong>parameters are matched by their order</strong>. The first factory method argument is
   3399  used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no
   3400  effect.
   3401 
   3402  <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for
   3403  method interception. They do receive post-construction member injection.
   3404 
   3405  @param <F> The factory interface
   3406 
   3407  @author jmourits (a] google.com (Jerome Mourits)
   3408  @author jessewilson (a] google.com (Jesse Wilson)
   3409  @author dtm (a] google.com (Daniel Martin)
   3410  
   3411  @deprecated use {@link FactoryModuleBuilder} instead.]]>
   3412     </doc>
   3413   </class>
   3414   <!-- end class com.google.inject.assistedinject.FactoryProvider -->
   3415 </package>
   3416 <package name="com.google.inject.binder">
   3417   <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder -->
   3418   <interface name="AnnotatedBindingBuilder"    abstract="true"
   3419     static="false" final="false" visibility="public"
   3420     deprecated="not deprecated">
   3421     <implements name="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"/>
   3422     <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   3423       abstract="true" native="false" synchronized="false"
   3424       static="false" final="false" visibility="public"
   3425       deprecated="not deprecated">
   3426       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3427       <doc>
   3428       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3429       </doc>
   3430     </method>
   3431     <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   3432       abstract="true" native="false" synchronized="false"
   3433       static="false" final="false" visibility="public"
   3434       deprecated="not deprecated">
   3435       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3436       <doc>
   3437       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3438       </doc>
   3439     </method>
   3440     <doc>
   3441     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3442 
   3443  @author crazybob (a] google.com (Bob Lee)]]>
   3444     </doc>
   3445   </interface>
   3446   <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder -->
   3447   <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
   3448   <interface name="AnnotatedConstantBindingBuilder"    abstract="true"
   3449     static="false" final="false" visibility="public"
   3450     deprecated="not deprecated">
   3451     <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
   3452       abstract="true" native="false" synchronized="false"
   3453       static="false" final="false" visibility="public"
   3454       deprecated="not deprecated">
   3455       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3456       <doc>
   3457       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3458       </doc>
   3459     </method>
   3460     <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
   3461       abstract="true" native="false" synchronized="false"
   3462       static="false" final="false" visibility="public"
   3463       deprecated="not deprecated">
   3464       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3465       <doc>
   3466       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3467       </doc>
   3468     </method>
   3469     <doc>
   3470     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3471 
   3472  @author crazybob (a] google.com (Bob Lee)]]>
   3473     </doc>
   3474   </interface>
   3475   <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
   3476   <!-- start interface com.google.inject.binder.AnnotatedElementBuilder -->
   3477   <interface name="AnnotatedElementBuilder"    abstract="true"
   3478     static="false" final="false" visibility="public"
   3479     deprecated="not deprecated">
   3480     <method name="annotatedWith"
   3481       abstract="true" native="false" synchronized="false"
   3482       static="false" final="false" visibility="public"
   3483       deprecated="not deprecated">
   3484       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3485       <doc>
   3486       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3487       </doc>
   3488     </method>
   3489     <method name="annotatedWith"
   3490       abstract="true" native="false" synchronized="false"
   3491       static="false" final="false" visibility="public"
   3492       deprecated="not deprecated">
   3493       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3494       <doc>
   3495       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3496       </doc>
   3497     </method>
   3498     <doc>
   3499     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3500 
   3501  @author jessewilson (a] google.com (Jesse Wilson)
   3502  @since 2.0]]>
   3503     </doc>
   3504   </interface>
   3505   <!-- end interface com.google.inject.binder.AnnotatedElementBuilder -->
   3506   <!-- start interface com.google.inject.binder.ConstantBindingBuilder -->
   3507   <interface name="ConstantBindingBuilder"    abstract="true"
   3508     static="false" final="false" visibility="public"
   3509     deprecated="not deprecated">
   3510     <method name="to"
   3511       abstract="true" native="false" synchronized="false"
   3512       static="false" final="false" visibility="public"
   3513       deprecated="not deprecated">
   3514       <param name="value" type="java.lang.String"/>
   3515       <doc>
   3516       <![CDATA[Binds constant to the given value.]]>
   3517       </doc>
   3518     </method>
   3519     <method name="to"
   3520       abstract="true" native="false" synchronized="false"
   3521       static="false" final="false" visibility="public"
   3522       deprecated="not deprecated">
   3523       <param name="value" type="int"/>
   3524       <doc>
   3525       <![CDATA[Binds constant to the given value.]]>
   3526       </doc>
   3527     </method>
   3528     <method name="to"
   3529       abstract="true" native="false" synchronized="false"
   3530       static="false" final="false" visibility="public"
   3531       deprecated="not deprecated">
   3532       <param name="value" type="long"/>
   3533       <doc>
   3534       <![CDATA[Binds constant to the given value.]]>
   3535       </doc>
   3536     </method>
   3537     <method name="to"
   3538       abstract="true" native="false" synchronized="false"
   3539       static="false" final="false" visibility="public"
   3540       deprecated="not deprecated">
   3541       <param name="value" type="boolean"/>
   3542       <doc>
   3543       <![CDATA[Binds constant to the given value.]]>
   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="double"/>
   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="float"/>
   3560       <doc>
   3561       <![CDATA[Binds constant to the given value.]]>
   3562       </doc>
   3563     </method>
   3564     <method name="to"
   3565       abstract="true" native="false" synchronized="false"
   3566       static="false" final="false" visibility="public"
   3567       deprecated="not deprecated">
   3568       <param name="value" type="short"/>
   3569       <doc>
   3570       <![CDATA[Binds constant to the given value.]]>
   3571       </doc>
   3572     </method>
   3573     <method name="to"
   3574       abstract="true" native="false" synchronized="false"
   3575       static="false" final="false" visibility="public"
   3576       deprecated="not deprecated">
   3577       <param name="value" type="char"/>
   3578       <doc>
   3579       <![CDATA[Binds constant to the given value.]]>
   3580       </doc>
   3581     </method>
   3582     <method name="to"
   3583       abstract="true" native="false" synchronized="false"
   3584       static="false" final="false" visibility="public"
   3585       deprecated="not deprecated">
   3586       <param name="value" type="byte"/>
   3587       <doc>
   3588       <![CDATA[Binds constant to the given value.
   3589  
   3590  @since 3.0]]>
   3591       </doc>
   3592     </method>
   3593     <method name="to"
   3594       abstract="true" native="false" synchronized="false"
   3595       static="false" final="false" visibility="public"
   3596       deprecated="not deprecated">
   3597       <param name="value" type="java.lang.Class&lt;?&gt;"/>
   3598       <doc>
   3599       <![CDATA[Binds constant to the given value.]]>
   3600       </doc>
   3601     </method>
   3602     <method name="to"
   3603       abstract="true" native="false" synchronized="false"
   3604       static="false" final="false" visibility="public"
   3605       deprecated="not deprecated">
   3606       <param name="value" type="E extends java.lang.Enum&lt;E&gt;"/>
   3607       <doc>
   3608       <![CDATA[Binds constant to the given value.]]>
   3609       </doc>
   3610     </method>
   3611     <doc>
   3612     <![CDATA[Binds to a constant value.]]>
   3613     </doc>
   3614   </interface>
   3615   <!-- end interface com.google.inject.binder.ConstantBindingBuilder -->
   3616   <!-- start interface com.google.inject.binder.LinkedBindingBuilder -->
   3617   <interface name="LinkedBindingBuilder"    abstract="true"
   3618     static="false" final="false" visibility="public"
   3619     deprecated="not deprecated">
   3620     <implements name="com.google.inject.binder.ScopedBindingBuilder"/>
   3621     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3622       abstract="true" native="false" synchronized="false"
   3623       static="false" final="false" visibility="public"
   3624       deprecated="not deprecated">
   3625       <param name="implementation" type="java.lang.Class&lt;? extends T&gt;"/>
   3626       <doc>
   3627       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3628       </doc>
   3629     </method>
   3630     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3631       abstract="true" native="false" synchronized="false"
   3632       static="false" final="false" visibility="public"
   3633       deprecated="not deprecated">
   3634       <param name="implementation" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3635       <doc>
   3636       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3637       </doc>
   3638     </method>
   3639     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3640       abstract="true" native="false" synchronized="false"
   3641       static="false" final="false" visibility="public"
   3642       deprecated="not deprecated">
   3643       <param name="targetKey" type="com.google.inject.Key&lt;? extends T&gt;"/>
   3644       <doc>
   3645       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3646       </doc>
   3647     </method>
   3648     <method name="toInstance"
   3649       abstract="true" native="false" synchronized="false"
   3650       static="false" final="false" visibility="public"
   3651       deprecated="not deprecated">
   3652       <param name="instance" type="T"/>
   3653       <doc>
   3654       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3655 
   3656  @see com.google.inject.Injector#injectMembers]]>
   3657       </doc>
   3658     </method>
   3659     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3660       abstract="true" native="false" synchronized="false"
   3661       static="false" final="false" visibility="public"
   3662       deprecated="not deprecated">
   3663       <param name="provider" type="com.google.inject.Provider&lt;? extends T&gt;"/>
   3664       <doc>
   3665       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3666 
   3667  @see com.google.inject.Injector#injectMembers]]>
   3668       </doc>
   3669     </method>
   3670     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3671       abstract="true" native="false" synchronized="false"
   3672       static="false" final="false" visibility="public"
   3673       deprecated="not deprecated">
   3674       <param name="provider" type="javax.inject.Provider&lt;? extends T&gt;"/>
   3675       <doc>
   3676       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3677 
   3678  @see com.google.inject.Injector#injectMembers
   3679  @since 4.0]]>
   3680       </doc>
   3681     </method>
   3682     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3683       abstract="true" native="false" synchronized="false"
   3684       static="false" final="false" visibility="public"
   3685       deprecated="not deprecated">
   3686       <param name="providerType" type="java.lang.Class&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3687       <doc>
   3688       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3689       </doc>
   3690     </method>
   3691     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3692       abstract="true" native="false" synchronized="false"
   3693       static="false" final="false" visibility="public"
   3694       deprecated="not deprecated">
   3695       <param name="providerType" type="com.google.inject.TypeLiteral&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3696       <doc>
   3697       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3698       </doc>
   3699     </method>
   3700     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3701       abstract="true" native="false" synchronized="false"
   3702       static="false" final="false" visibility="public"
   3703       deprecated="not deprecated">
   3704       <param name="providerKey" type="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3705       <doc>
   3706       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3707       </doc>
   3708     </method>
   3709     <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
   3710       abstract="true" native="false" synchronized="false"
   3711       static="false" final="false" visibility="public"
   3712       deprecated="not deprecated">
   3713       <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
   3714       <doc>
   3715       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3716  
   3717  @since 3.0]]>
   3718       </doc>
   3719     </method>
   3720     <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
   3721       abstract="true" native="false" synchronized="false"
   3722       static="false" final="false" visibility="public"
   3723       deprecated="not deprecated">
   3724       <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
   3725       <param name="type" type="com.google.inject.TypeLiteral&lt;? extends S&gt;"/>
   3726       <doc>
   3727       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3728  
   3729  @since 3.0]]>
   3730       </doc>
   3731     </method>
   3732     <doc>
   3733     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3734 
   3735  @author crazybob (a] google.com (Bob Lee)]]>
   3736     </doc>
   3737   </interface>
   3738   <!-- end interface com.google.inject.binder.LinkedBindingBuilder -->
   3739   <!-- start interface com.google.inject.binder.ScopedBindingBuilder -->
   3740   <interface name="ScopedBindingBuilder"    abstract="true"
   3741     static="false" final="false" visibility="public"
   3742     deprecated="not deprecated">
   3743     <method name="in"
   3744       abstract="true" native="false" synchronized="false"
   3745       static="false" final="false" visibility="public"
   3746       deprecated="not deprecated">
   3747       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3748       <doc>
   3749       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3750       </doc>
   3751     </method>
   3752     <method name="in"
   3753       abstract="true" native="false" synchronized="false"
   3754       static="false" final="false" visibility="public"
   3755       deprecated="not deprecated">
   3756       <param name="scope" type="com.google.inject.Scope"/>
   3757       <doc>
   3758       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3759       </doc>
   3760     </method>
   3761     <method name="asEagerSingleton"
   3762       abstract="true" native="false" synchronized="false"
   3763       static="false" final="false" visibility="public"
   3764       deprecated="not deprecated">
   3765       <doc>
   3766       <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this
   3767  singleton-scoped binding upon creation. Useful for application
   3768  initialization logic.  See the EDSL examples at
   3769  {@link com.google.inject.Binder}.]]>
   3770       </doc>
   3771     </method>
   3772     <doc>
   3773     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3774 
   3775  @author crazybob (a] google.com (Bob Lee)]]>
   3776     </doc>
   3777   </interface>
   3778   <!-- end interface com.google.inject.binder.ScopedBindingBuilder -->
   3779 </package>
   3780 <package name="com.google.inject.daggeradapter">
   3781   <!-- start class com.google.inject.daggeradapter.DaggerAdapter -->
   3782   <class name="DaggerAdapter" extends="java.lang.Object"
   3783     abstract="false"
   3784     static="false" final="true" visibility="public"
   3785     deprecated="not deprecated">
   3786     <method name="from" return="com.google.inject.Module"
   3787       abstract="false" native="false" synchronized="false"
   3788       static="true" final="false" visibility="public"
   3789       deprecated="not deprecated">
   3790       <param name="daggerModuleObjects" type="java.lang.Object[]"/>
   3791       <doc>
   3792       <![CDATA[Returns a guice module from a dagger module.
   3793 
   3794  <p>Note: At present, it does not honor {@code @Module(includes=...)} directives.]]>
   3795       </doc>
   3796     </method>
   3797     <doc>
   3798     <![CDATA[A utility to adapt classes annotated with {@link @dagger.Module} such that their
   3799  {@link @dagger.Provides} methods can be properly invoked by Guice to perform their
   3800  provision operations.
   3801 
   3802  <p>Simple example: <pre>{@code
   3803    Guice.createInjector(...other modules..., DaggerAdapter.from(new SomeDaggerAdapter()));
   3804  }</pre>
   3805 
   3806  <p>Some notes on usage and compatibility.
   3807    <ul>
   3808      <li>Dagger provider methods have a "SET_VALUES" provision mode not supported by Guice.
   3809      <li>MapBindings are not yet implemented (pending).
   3810      <li>Be careful about stateful modules. In contrast to Dagger (where components are
   3811          expected to be recreated on-demand with new Module instances), Guice typically
   3812          has a single injector with a long lifetime, so your module instance will be used
   3813          throughout the lifetime of the entire app.
   3814      <li>Dagger 1.x uses {@link @Singleton} for all scopes, including shorter-lived scopes
   3815          like per-request or per-activity.  Using modules written with Dagger 1.x usage
   3816          in mind may result in mis-scoped objects.
   3817      <li>Dagger 2.x supports custom scope annotations, but for use in Guice, a custom scope
   3818          implementation must be registered in order to support the custom lifetime of that
   3819          annotation.
   3820    </ul>
   3821 
   3822  @author cgruber (a] google.com (Christian Gruber)]]>
   3823     </doc>
   3824   </class>
   3825   <!-- end class com.google.inject.daggeradapter.DaggerAdapter -->
   3826 </package>
   3827 <package name="com.google.inject.grapher">
   3828   <!-- start class com.google.inject.grapher.AbstractInjectorGrapher -->
   3829   <class name="AbstractInjectorGrapher" extends="java.lang.Object"
   3830     abstract="true"
   3831     static="false" final="false" visibility="public"
   3832     deprecated="not deprecated">
   3833     <implements name="com.google.inject.grapher.InjectorGrapher"/>
   3834     <constructor name="AbstractInjectorGrapher"
   3835       static="false" final="false" visibility="public"
   3836       deprecated="not deprecated">
   3837     </constructor>
   3838     <constructor name="AbstractInjectorGrapher" type="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3839       static="false" final="false" visibility="public"
   3840       deprecated="not deprecated">
   3841     </constructor>
   3842     <method name="graph"
   3843       abstract="false" native="false" synchronized="false"
   3844       static="false" final="true" visibility="public"
   3845       deprecated="not deprecated">
   3846       <param name="injector" type="com.google.inject.Injector"/>
   3847       <exception name="IOException" type="java.io.IOException"/>
   3848     </method>
   3849     <method name="graph"
   3850       abstract="false" native="false" synchronized="false"
   3851       static="false" final="true" visibility="public"
   3852       deprecated="not deprecated">
   3853       <param name="injector" type="com.google.inject.Injector"/>
   3854       <param name="root" type="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"/>
   3855       <exception name="IOException" type="java.io.IOException"/>
   3856     </method>
   3857     <method name="reset"
   3858       abstract="true" native="false" synchronized="false"
   3859       static="false" final="false" visibility="protected"
   3860       deprecated="not deprecated">
   3861       <exception name="IOException" type="java.io.IOException"/>
   3862       <doc>
   3863       <![CDATA[Resets the state of the grapher before rendering a new graph.]]>
   3864       </doc>
   3865     </method>
   3866     <method name="newInterfaceNode"
   3867       abstract="true" native="false" synchronized="false"
   3868       static="false" final="false" visibility="protected"
   3869       deprecated="not deprecated">
   3870       <param name="node" type="com.google.inject.grapher.InterfaceNode"/>
   3871       <exception name="IOException" type="java.io.IOException"/>
   3872       <doc>
   3873       <![CDATA[Adds a new interface node to the graph.]]>
   3874       </doc>
   3875     </method>
   3876     <method name="newImplementationNode"
   3877       abstract="true" native="false" synchronized="false"
   3878       static="false" final="false" visibility="protected"
   3879       deprecated="not deprecated">
   3880       <param name="node" type="com.google.inject.grapher.ImplementationNode"/>
   3881       <exception name="IOException" type="java.io.IOException"/>
   3882       <doc>
   3883       <![CDATA[Adds a new implementation node to the graph.]]>
   3884       </doc>
   3885     </method>
   3886     <method name="newInstanceNode"
   3887       abstract="true" native="false" synchronized="false"
   3888       static="false" final="false" visibility="protected"
   3889       deprecated="not deprecated">
   3890       <param name="node" type="com.google.inject.grapher.InstanceNode"/>
   3891       <exception name="IOException" type="java.io.IOException"/>
   3892       <doc>
   3893       <![CDATA[Adds a new instance node to the graph.]]>
   3894       </doc>
   3895     </method>
   3896     <method name="newDependencyEdge"
   3897       abstract="true" native="false" synchronized="false"
   3898       static="false" final="false" visibility="protected"
   3899       deprecated="not deprecated">
   3900       <param name="edge" type="com.google.inject.grapher.DependencyEdge"/>
   3901       <exception name="IOException" type="java.io.IOException"/>
   3902       <doc>
   3903       <![CDATA[Adds a new dependency edge to the graph.]]>
   3904       </doc>
   3905     </method>
   3906     <method name="newBindingEdge"
   3907       abstract="true" native="false" synchronized="false"
   3908       static="false" final="false" visibility="protected"
   3909       deprecated="not deprecated">
   3910       <param name="edge" type="com.google.inject.grapher.BindingEdge"/>
   3911       <exception name="IOException" type="java.io.IOException"/>
   3912       <doc>
   3913       <![CDATA[Adds a new binding edge to the graph.]]>
   3914       </doc>
   3915     </method>
   3916     <method name="postProcess"
   3917       abstract="true" native="false" synchronized="false"
   3918       static="false" final="false" visibility="protected"
   3919       deprecated="not deprecated">
   3920       <exception name="IOException" type="java.io.IOException"/>
   3921       <doc>
   3922       <![CDATA[Performs any post processing required after all nodes and edges have been added.]]>
   3923       </doc>
   3924     </method>
   3925     <doc>
   3926     <![CDATA[Abstract injector grapher that builds the dependency graph but doesn't render it.
   3927 
   3928  @author bojand (a] google.com (Bojan Djordjevic)
   3929  @since 4.0]]>
   3930     </doc>
   3931   </class>
   3932   <!-- end class com.google.inject.grapher.AbstractInjectorGrapher -->
   3933   <!-- start class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters -->
   3934   <class name="AbstractInjectorGrapher.GrapherParameters" extends="java.lang.Object"
   3935     abstract="false"
   3936     static="true" final="true" visibility="public"
   3937     deprecated="not deprecated">
   3938     <constructor name="GrapherParameters"
   3939       static="false" final="false" visibility="public"
   3940       deprecated="not deprecated">
   3941     </constructor>
   3942     <method name="getRootKeySetCreator" return="com.google.inject.grapher.RootKeySetCreator"
   3943       abstract="false" native="false" synchronized="false"
   3944       static="false" final="false" visibility="public"
   3945       deprecated="not deprecated">
   3946     </method>
   3947     <method name="setRootKeySetCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3948       abstract="false" native="false" synchronized="false"
   3949       static="false" final="false" visibility="public"
   3950       deprecated="not deprecated">
   3951       <param name="rootKeySetCreator" type="com.google.inject.grapher.RootKeySetCreator"/>
   3952     </method>
   3953     <method name="getAliasCreator" return="com.google.inject.grapher.AliasCreator"
   3954       abstract="false" native="false" synchronized="false"
   3955       static="false" final="false" visibility="public"
   3956       deprecated="not deprecated">
   3957     </method>
   3958     <method name="setAliasCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3959       abstract="false" native="false" synchronized="false"
   3960       static="false" final="false" visibility="public"
   3961       deprecated="not deprecated">
   3962       <param name="aliasCreator" type="com.google.inject.grapher.AliasCreator"/>
   3963     </method>
   3964     <method name="getNodeCreator" return="com.google.inject.grapher.NodeCreator"
   3965       abstract="false" native="false" synchronized="false"
   3966       static="false" final="false" visibility="public"
   3967       deprecated="not deprecated">
   3968     </method>
   3969     <method name="setNodeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3970       abstract="false" native="false" synchronized="false"
   3971       static="false" final="false" visibility="public"
   3972       deprecated="not deprecated">
   3973       <param name="nodeCreator" type="com.google.inject.grapher.NodeCreator"/>
   3974     </method>
   3975     <method name="getEdgeCreator" return="com.google.inject.grapher.EdgeCreator"
   3976       abstract="false" native="false" synchronized="false"
   3977       static="false" final="false" visibility="public"
   3978       deprecated="not deprecated">
   3979     </method>
   3980     <method name="setEdgeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3981       abstract="false" native="false" synchronized="false"
   3982       static="false" final="false" visibility="public"
   3983       deprecated="not deprecated">
   3984       <param name="edgeCreator" type="com.google.inject.grapher.EdgeCreator"/>
   3985     </method>
   3986     <doc>
   3987     <![CDATA[Parameters used to override default settings of the grapher.
   3988  @since 4.0]]>
   3989     </doc>
   3990   </class>
   3991   <!-- end class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters -->
   3992   <!-- start class com.google.inject.grapher.Alias -->
   3993   <class name="Alias" extends="java.lang.Object"
   3994     abstract="false"
   3995     static="false" final="true" visibility="public"
   3996     deprecated="not deprecated">
   3997     <constructor name="Alias" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
   3998       static="false" final="false" visibility="public"
   3999       deprecated="not deprecated">
   4000     </constructor>
   4001     <method name="getFromId" return="com.google.inject.grapher.NodeId"
   4002       abstract="false" native="false" synchronized="false"
   4003       static="false" final="false" visibility="public"
   4004       deprecated="not deprecated">
   4005     </method>
   4006     <method name="getToId" return="com.google.inject.grapher.NodeId"
   4007       abstract="false" native="false" synchronized="false"
   4008       static="false" final="false" visibility="public"
   4009       deprecated="not deprecated">
   4010     </method>
   4011     <doc>
   4012     <![CDATA[Alias between two nodes. Causes the 'from' node to be aliased with the 'to' node, which means
   4013  that the 'from' node is not rendered and all edges going to it instead go to the 'to' node.
   4014 
   4015  @author bojand (a] google.com (Bojan Djordjevic)
   4016  @since 4.0]]>
   4017     </doc>
   4018   </class>
   4019   <!-- end class com.google.inject.grapher.Alias -->
   4020   <!-- start interface com.google.inject.grapher.AliasCreator -->
   4021   <interface name="AliasCreator"    abstract="true"
   4022     static="false" final="false" visibility="public"
   4023     deprecated="not deprecated">
   4024     <method name="createAliases" return="java.lang.Iterable&lt;com.google.inject.grapher.Alias&gt;"
   4025       abstract="true" native="false" synchronized="false"
   4026       static="false" final="false" visibility="public"
   4027       deprecated="not deprecated">
   4028       <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
   4029       <doc>
   4030       <![CDATA[Returns aliases for the given dependency graph. The aliases do not need to be transitively
   4031  resolved, i.e. it is valid to return an alias (X to Y) and an alias (Y to Z). It is the
   4032  responsibility of the caller to resolve this to (X to Z) and (Y to Z).
   4033 
   4034  @param bindings bindings that make up the dependency graph
   4035  @return aliases that should be applied on the graph]]>
   4036       </doc>
   4037     </method>
   4038     <doc>
   4039     <![CDATA[Creator of node aliases. Used by dependency graphers to merge nodes in the internal Guice graph
   4040  into a single node on the rendered graph.
   4041 
   4042  @author bojand (a] google.com (Bojan Djordjevic)
   4043  @since 4.0]]>
   4044     </doc>
   4045   </interface>
   4046   <!-- end interface com.google.inject.grapher.AliasCreator -->
   4047   <!-- start class com.google.inject.grapher.BindingEdge -->
   4048   <class name="BindingEdge" extends="com.google.inject.grapher.Edge"
   4049     abstract="false"
   4050     static="false" final="false" visibility="public"
   4051     deprecated="not deprecated">
   4052     <constructor name="BindingEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.grapher.BindingEdge.Type"
   4053       static="false" final="false" visibility="public"
   4054       deprecated="not deprecated">
   4055     </constructor>
   4056     <method name="getType" return="com.google.inject.grapher.BindingEdge.Type"
   4057       abstract="false" native="false" synchronized="false"
   4058       static="false" final="false" visibility="public"
   4059       deprecated="not deprecated">
   4060     </method>
   4061     <method name="equals" return="boolean"
   4062       abstract="false" native="false" synchronized="false"
   4063       static="false" final="false" visibility="public"
   4064       deprecated="not deprecated">
   4065       <param name="obj" type="java.lang.Object"/>
   4066     </method>
   4067     <method name="hashCode" return="int"
   4068       abstract="false" native="false" synchronized="false"
   4069       static="false" final="false" visibility="public"
   4070       deprecated="not deprecated">
   4071     </method>
   4072     <method name="toString" return="java.lang.String"
   4073       abstract="false" native="false" synchronized="false"
   4074       static="false" final="false" visibility="public"
   4075       deprecated="not deprecated">
   4076     </method>
   4077     <method name="copy" return="com.google.inject.grapher.Edge"
   4078       abstract="false" native="false" synchronized="false"
   4079       static="false" final="false" visibility="public"
   4080       deprecated="not deprecated">
   4081       <param name="fromId" type="com.google.inject.grapher.NodeId"/>
   4082       <param name="toId" type="com.google.inject.grapher.NodeId"/>
   4083     </method>
   4084     <doc>
   4085     <![CDATA[Edge that connects an interface to the type or instance that is bound to implement it.
   4086 
   4087  @author phopkins (a] gmail.com (Pete Hopkins)
   4088  @since 4.0 (since 2.0 as an interface)]]>
   4089     </doc>
   4090   </class>
   4091   <!-- end class com.google.inject.grapher.BindingEdge -->
   4092   <!-- start class com.google.inject.grapher.BindingEdge.Type -->
   4093   <class name="BindingEdge.Type" extends="java.lang.Enum&lt;com.google.inject.grapher.BindingEdge.Type&gt;"
   4094     abstract="false"
   4095     static="true" final="true" visibility="public"
   4096     deprecated="not deprecated">
   4097     <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]"
   4098       abstract="false" native="false" synchronized="false"
   4099       static="true" final="false" visibility="public"
   4100       deprecated="not deprecated">
   4101     </method>
   4102     <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type"
   4103       abstract="false" native="false" synchronized="false"
   4104       static="true" final="false" visibility="public"
   4105       deprecated="not deprecated">
   4106       <param name="name" type="java.lang.String"/>
   4107     </method>
   4108     <doc>
   4109     <![CDATA[Classification for what kind of binding this edge represents.]]>
   4110     </doc>
   4111   </class>
   4112   <!-- end class com.google.inject.grapher.BindingEdge.Type -->
   4113   <!-- start class com.google.inject.grapher.DefaultRootKeySetCreator -->
   4114   <class name="DefaultRootKeySetCreator" extends="java.lang.Object"
   4115     abstract="false"
   4116     static="false" final="false" visibility="public"
   4117     deprecated="not deprecated">
   4118     <implements name="com.google.inject.grapher.RootKeySetCreator"/>
   4119     <constructor name="DefaultRootKeySetCreator"
   4120       static="false" final="false" visibility="public"
   4121       deprecated="not deprecated">
   4122     </constructor>
   4123     <method name="getRootKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4124       abstract="false" native="false" synchronized="false"
   4125       static="false" final="false" visibility="public"
   4126       deprecated="not deprecated">
   4127       <param name="injector" type="com.google.inject.Injector"/>
   4128     </method>
   4129     <doc>
   4130     <![CDATA[Root key set creator that starts with all types that are not Guice internal types or the
   4131  {@link Logger} type.
   4132 
   4133  @author bojand (a] google.com (Bojan Djordjevic)
   4134  @since 4.0]]>
   4135     </doc>
   4136   </class>
   4137   <!-- end class com.google.inject.grapher.DefaultRootKeySetCreator -->
   4138   <!-- start class com.google.inject.grapher.DependencyEdge -->
   4139   <class name="DependencyEdge" extends="com.google.inject.grapher.Edge"
   4140     abstract="false"
   4141     static="false" final="false" visibility="public"
   4142     deprecated="not deprecated">
   4143     <constructor name="DependencyEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.spi.InjectionPoint"
   4144       static="false" final="false" visibility="public"
   4145       deprecated="not deprecated">
   4146     </constructor>
   4147     <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
   4148       abstract="false" native="false" synchronized="false"
   4149       static="false" final="false" visibility="public"
   4150       deprecated="not deprecated">
   4151     </method>
   4152     <method name="equals" return="boolean"
   4153       abstract="false" native="false" synchronized="false"
   4154       static="false" final="false" visibility="public"
   4155       deprecated="not deprecated">
   4156       <param name="obj" type="java.lang.Object"/>
   4157     </method>
   4158     <method name="hashCode" return="int"
   4159       abstract="false" native="false" synchronized="false"
   4160       static="false" final="false" visibility="public"
   4161       deprecated="not deprecated">
   4162     </method>
   4163     <method name="toString" return="java.lang.String"
   4164       abstract="false" native="false" synchronized="false"
   4165       static="false" final="false" visibility="public"
   4166       deprecated="not deprecated">
   4167     </method>
   4168     <method name="copy" return="com.google.inject.grapher.Edge"
   4169       abstract="false" native="false" synchronized="false"
   4170       static="false" final="false" visibility="public"
   4171       deprecated="not deprecated">
   4172       <param name="fromId" type="com.google.inject.grapher.NodeId"/>
   4173       <param name="toId" type="com.google.inject.grapher.NodeId"/>
   4174     </method>
   4175     <doc>
   4176     <![CDATA[Edge from a class or {@link InjectionPoint} to the interface node that will satisfy the
   4177  dependency.
   4178 
   4179  @author phopkins (a] gmail.com (Pete Hopkins)
   4180  @since 4.0 (since 2.0 as an interface)]]>
   4181     </doc>
   4182   </class>
   4183   <!-- end class com.google.inject.grapher.DependencyEdge -->
   4184   <!-- start class com.google.inject.grapher.Edge -->
   4185   <class name="Edge" extends="java.lang.Object"
   4186     abstract="true"
   4187     static="false" final="false" visibility="public"
   4188     deprecated="not deprecated">
   4189     <constructor name="Edge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
   4190       static="false" final="false" visibility="protected"
   4191       deprecated="not deprecated">
   4192     </constructor>
   4193     <method name="getFromId" return="com.google.inject.grapher.NodeId"
   4194       abstract="false" native="false" synchronized="false"
   4195       static="false" final="false" visibility="public"
   4196       deprecated="not deprecated">
   4197     </method>
   4198     <method name="getToId" return="com.google.inject.grapher.NodeId"
   4199       abstract="false" native="false" synchronized="false"
   4200       static="false" final="false" visibility="public"
   4201       deprecated="not deprecated">
   4202     </method>
   4203     <method name="equals" return="boolean"
   4204       abstract="false" native="false" synchronized="false"
   4205       static="false" final="false" visibility="public"
   4206       deprecated="not deprecated">
   4207       <param name="obj" type="java.lang.Object"/>
   4208     </method>
   4209     <method name="hashCode" return="int"
   4210       abstract="false" native="false" synchronized="false"
   4211       static="false" final="false" visibility="public"
   4212       deprecated="not deprecated">
   4213     </method>
   4214     <method name="copy" return="com.google.inject.grapher.Edge"
   4215       abstract="true" native="false" synchronized="false"
   4216       static="false" final="false" visibility="public"
   4217       deprecated="not deprecated">
   4218       <param name="fromId" type="com.google.inject.grapher.NodeId"/>
   4219       <param name="toId" type="com.google.inject.grapher.NodeId"/>
   4220       <doc>
   4221       <![CDATA[Returns a copy of the edge with new node IDs.
   4222 
   4223  @param fromId new ID of the 'from' node
   4224  @param toId new ID of the 'to' node
   4225  @return copy of the edge with the new node IDs]]>
   4226       </doc>
   4227     </method>
   4228     <doc>
   4229     <![CDATA[Edge in a guice dependency graph.
   4230 
   4231  @author bojand (a] google.com (Bojan Djordjevic)
   4232  @since 4.0]]>
   4233     </doc>
   4234   </class>
   4235   <!-- end class com.google.inject.grapher.Edge -->
   4236   <!-- start interface com.google.inject.grapher.EdgeCreator -->
   4237   <interface name="EdgeCreator"    abstract="true"
   4238     static="false" final="false" visibility="public"
   4239     deprecated="not deprecated">
   4240     <method name="getEdges" return="java.lang.Iterable&lt;com.google.inject.grapher.Edge&gt;"
   4241       abstract="true" native="false" synchronized="false"
   4242       static="false" final="false" visibility="public"
   4243       deprecated="not deprecated">
   4244       <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
   4245       <doc>
   4246       <![CDATA[Returns edges for the given dependency graph.]]>
   4247       </doc>
   4248     </method>
   4249     <doc>
   4250     <![CDATA[Creator of graph edges to render. All edges will be rendered on the graph after node aliasing is
   4251  performed.
   4252 
   4253  @author bojand (a] google.com (Bojan Djordjevic)
   4254  @since 4.0]]>
   4255     </doc>
   4256   </interface>
   4257   <!-- end interface com.google.inject.grapher.EdgeCreator -->
   4258   <!-- start class com.google.inject.grapher.ImplementationNode -->
   4259   <class name="ImplementationNode" extends="com.google.inject.grapher.Node"
   4260     abstract="false"
   4261     static="false" final="false" visibility="public"
   4262     deprecated="not deprecated">
   4263     <constructor name="ImplementationNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.util.Collection&lt;java.lang.reflect.Member&gt;"
   4264       static="false" final="false" visibility="public"
   4265       deprecated="not deprecated">
   4266     </constructor>
   4267     <method name="getMembers" return="java.util.Collection&lt;java.lang.reflect.Member&gt;"
   4268       abstract="false" native="false" synchronized="false"
   4269       static="false" final="false" visibility="public"
   4270       deprecated="not deprecated">
   4271     </method>
   4272     <method name="equals" return="boolean"
   4273       abstract="false" native="false" synchronized="false"
   4274       static="false" final="false" visibility="public"
   4275       deprecated="not deprecated">
   4276       <param name="obj" type="java.lang.Object"/>
   4277     </method>
   4278     <method name="hashCode" return="int"
   4279       abstract="false" native="false" synchronized="false"
   4280       static="false" final="false" visibility="public"
   4281       deprecated="not deprecated">
   4282     </method>
   4283     <method name="toString" return="java.lang.String"
   4284       abstract="false" native="false" synchronized="false"
   4285       static="false" final="false" visibility="public"
   4286       deprecated="not deprecated">
   4287     </method>
   4288     <method name="copy" return="com.google.inject.grapher.Node"
   4289       abstract="false" native="false" synchronized="false"
   4290       static="false" final="false" visibility="public"
   4291       deprecated="not deprecated">
   4292       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4293     </method>
   4294     <doc>
   4295     <![CDATA[Node for types that have {@link com.google.inject.spi.Dependency}s and are
   4296  bound to {@link InterfaceNode}s. These nodes will often have fields for
   4297  {@link Member}s that are {@link com.google.inject.spi.InjectionPoint}s.
   4298 
   4299  @see DependencyEdge
   4300  @author phopkins (a] gmail.com (Pete Hopkins)
   4301  @since 4.0 (since 2.0 as an interface)]]>
   4302     </doc>
   4303   </class>
   4304   <!-- end class com.google.inject.grapher.ImplementationNode -->
   4305   <!-- start interface com.google.inject.grapher.InjectorGrapher -->
   4306   <interface name="InjectorGrapher"    abstract="true"
   4307     static="false" final="false" visibility="public"
   4308     deprecated="not deprecated">
   4309     <method name="graph"
   4310       abstract="true" native="false" synchronized="false"
   4311       static="false" final="false" visibility="public"
   4312       deprecated="not deprecated">
   4313       <param name="injector" type="com.google.inject.Injector"/>
   4314       <exception name="IOException" type="java.io.IOException"/>
   4315       <doc>
   4316       <![CDATA[Graphs the guice dependency graph for the given injector using default starting keys.]]>
   4317       </doc>
   4318     </method>
   4319     <method name="graph"
   4320       abstract="true" native="false" synchronized="false"
   4321       static="false" final="false" visibility="public"
   4322       deprecated="not deprecated">
   4323       <param name="injector" type="com.google.inject.Injector"/>
   4324       <param name="root" type="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"/>
   4325       <exception name="IOException" type="java.io.IOException"/>
   4326       <doc>
   4327       <![CDATA[Graphs the guice dependency graph for the given injector using the given starting keys and
   4328  their transitive dependencies.]]>
   4329       </doc>
   4330     </method>
   4331     <doc>
   4332     <![CDATA[Guice injector grapher. Renders the guice dependency graph for an injector. It can render the
   4333  whole dependency graph or just transitive dependencies of a given set of nodes.
   4334 
   4335  @author phopkins (a] gmail.com (Pete Hopkins)
   4336  @since 4.0 (since 2.0 as a concrete class with a different API)]]>
   4337     </doc>
   4338   </interface>
   4339   <!-- end interface com.google.inject.grapher.InjectorGrapher -->
   4340   <!-- start class com.google.inject.grapher.InstanceNode -->
   4341   <class name="InstanceNode" extends="com.google.inject.grapher.Node"
   4342     abstract="false"
   4343     static="false" final="false" visibility="public"
   4344     deprecated="not deprecated">
   4345     <constructor name="InstanceNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.lang.Object, java.lang.Iterable&lt;java.lang.reflect.Member&gt;"
   4346       static="false" final="false" visibility="public"
   4347       deprecated="not deprecated">
   4348     </constructor>
   4349     <method name="getInstance" return="java.lang.Object"
   4350       abstract="false" native="false" synchronized="false"
   4351       static="false" final="false" visibility="public"
   4352       deprecated="not deprecated">
   4353     </method>
   4354     <method name="getMembers" return="java.lang.Iterable&lt;java.lang.reflect.Member&gt;"
   4355       abstract="false" native="false" synchronized="false"
   4356       static="false" final="false" visibility="public"
   4357       deprecated="not deprecated">
   4358     </method>
   4359     <method name="equals" return="boolean"
   4360       abstract="false" native="false" synchronized="false"
   4361       static="false" final="false" visibility="public"
   4362       deprecated="not deprecated">
   4363       <param name="obj" type="java.lang.Object"/>
   4364     </method>
   4365     <method name="hashCode" return="int"
   4366       abstract="false" native="false" synchronized="false"
   4367       static="false" final="false" visibility="public"
   4368       deprecated="not deprecated">
   4369     </method>
   4370     <method name="toString" return="java.lang.String"
   4371       abstract="false" native="false" synchronized="false"
   4372       static="false" final="false" visibility="public"
   4373       deprecated="not deprecated">
   4374     </method>
   4375     <method name="copy" return="com.google.inject.grapher.Node"
   4376       abstract="false" native="false" synchronized="false"
   4377       static="false" final="false" visibility="public"
   4378       deprecated="not deprecated">
   4379       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4380     </method>
   4381     <doc>
   4382     <![CDATA[Node for instances. Used when a type is bound to an instance.
   4383 
   4384  @author bojand (a] google.com (Bojan Djordjevic)
   4385  @since 4.0]]>
   4386     </doc>
   4387   </class>
   4388   <!-- end class com.google.inject.grapher.InstanceNode -->
   4389   <!-- start class com.google.inject.grapher.InterfaceNode -->
   4390   <class name="InterfaceNode" extends="com.google.inject.grapher.Node"
   4391     abstract="false"
   4392     static="false" final="false" visibility="public"
   4393     deprecated="not deprecated">
   4394     <constructor name="InterfaceNode" type="com.google.inject.grapher.NodeId, java.lang.Object"
   4395       static="false" final="false" visibility="public"
   4396       deprecated="not deprecated">
   4397     </constructor>
   4398     <method name="copy" return="com.google.inject.grapher.Node"
   4399       abstract="false" native="false" synchronized="false"
   4400       static="false" final="false" visibility="public"
   4401       deprecated="not deprecated">
   4402       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4403     </method>
   4404     <method name="equals" return="boolean"
   4405       abstract="false" native="false" synchronized="false"
   4406       static="false" final="false" visibility="public"
   4407       deprecated="not deprecated">
   4408       <param name="obj" type="java.lang.Object"/>
   4409     </method>
   4410     <method name="toString" return="java.lang.String"
   4411       abstract="false" native="false" synchronized="false"
   4412       static="false" final="false" visibility="public"
   4413       deprecated="not deprecated">
   4414     </method>
   4415     <doc>
   4416     <![CDATA[Node for an interface type that has been bound to an implementation class or instance.
   4417 
   4418  @see BindingEdge
   4419  @author phopkins (a] gmail.com (Pete Hopkins)
   4420  @since 4.0 (since 2.0 as an interface)]]>
   4421     </doc>
   4422   </class>
   4423   <!-- end class com.google.inject.grapher.InterfaceNode -->
   4424   <!-- start interface com.google.inject.grapher.NameFactory -->
   4425   <interface name="NameFactory"    abstract="true"
   4426     static="false" final="false" visibility="public"
   4427     deprecated="not deprecated">
   4428     <method name="getMemberName" return="java.lang.String"
   4429       abstract="true" native="false" synchronized="false"
   4430       static="false" final="false" visibility="public"
   4431       deprecated="not deprecated">
   4432       <param name="member" type="java.lang.reflect.Member"/>
   4433     </method>
   4434     <method name="getClassName" return="java.lang.String"
   4435       abstract="true" native="false" synchronized="false"
   4436       static="false" final="false" visibility="public"
   4437       deprecated="not deprecated">
   4438       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4439     </method>
   4440     <method name="getInstanceName" return="java.lang.String"
   4441       abstract="true" native="false" synchronized="false"
   4442       static="false" final="false" visibility="public"
   4443       deprecated="not deprecated">
   4444       <param name="instance" type="java.lang.Object"/>
   4445     </method>
   4446     <method name="getAnnotationName" return="java.lang.String"
   4447       abstract="true" native="false" synchronized="false"
   4448       static="false" final="false" visibility="public"
   4449       deprecated="not deprecated">
   4450       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4451     </method>
   4452     <method name="getSourceName" return="java.lang.String"
   4453       abstract="true" native="false" synchronized="false"
   4454       static="false" final="false" visibility="public"
   4455       deprecated="not deprecated">
   4456       <param name="source" type="java.lang.Object"/>
   4457     </method>
   4458     <doc>
   4459     <![CDATA[Interface for a service that provides nice {@link String}s that we can
   4460  display in the graph for the types that come up in
   4461  {@link com.google.inject.Binding}s.
   4462 
   4463  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4464     </doc>
   4465   </interface>
   4466   <!-- end interface com.google.inject.grapher.NameFactory -->
   4467   <!-- start class com.google.inject.grapher.Node -->
   4468   <class name="Node" extends="java.lang.Object"
   4469     abstract="true"
   4470     static="false" final="false" visibility="public"
   4471     deprecated="not deprecated">
   4472     <constructor name="Node" type="com.google.inject.grapher.NodeId, java.lang.Object"
   4473       static="false" final="false" visibility="protected"
   4474       deprecated="not deprecated">
   4475     </constructor>
   4476     <method name="getId" return="com.google.inject.grapher.NodeId"
   4477       abstract="false" native="false" synchronized="false"
   4478       static="false" final="false" visibility="public"
   4479       deprecated="not deprecated">
   4480     </method>
   4481     <method name="getSource" return="java.lang.Object"
   4482       abstract="false" native="false" synchronized="false"
   4483       static="false" final="false" visibility="public"
   4484       deprecated="not deprecated">
   4485     </method>
   4486     <method name="equals" return="boolean"
   4487       abstract="false" native="false" synchronized="false"
   4488       static="false" final="false" visibility="public"
   4489       deprecated="not deprecated">
   4490       <param name="obj" type="java.lang.Object"/>
   4491     </method>
   4492     <method name="hashCode" return="int"
   4493       abstract="false" native="false" synchronized="false"
   4494       static="false" final="false" visibility="public"
   4495       deprecated="not deprecated">
   4496     </method>
   4497     <method name="copy" return="com.google.inject.grapher.Node"
   4498       abstract="true" native="false" synchronized="false"
   4499       static="false" final="false" visibility="public"
   4500       deprecated="not deprecated">
   4501       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4502       <doc>
   4503       <![CDATA[Returns a copy of the node with a new ID.
   4504 
   4505  @param id new ID of the node
   4506  @return copy of the node with a new ID]]>
   4507       </doc>
   4508     </method>
   4509     <doc>
   4510     <![CDATA[Node in a guice dependency graph.
   4511 
   4512  @author bojand (a] google.com (Bojan Djordjevic)
   4513  @since 4.0]]>
   4514     </doc>
   4515   </class>
   4516   <!-- end class com.google.inject.grapher.Node -->
   4517   <!-- start interface com.google.inject.grapher.NodeCreator -->
   4518   <interface name="NodeCreator"    abstract="true"
   4519     static="false" final="false" visibility="public"
   4520     deprecated="not deprecated">
   4521     <method name="getNodes" return="java.lang.Iterable&lt;com.google.inject.grapher.Node&gt;"
   4522       abstract="true" native="false" synchronized="false"
   4523       static="false" final="false" visibility="public"
   4524       deprecated="not deprecated">
   4525       <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
   4526       <doc>
   4527       <![CDATA[Returns nodes for the given dependency graph.]]>
   4528       </doc>
   4529     </method>
   4530     <doc>
   4531     <![CDATA[Creator of graph nodes.
   4532 
   4533  @author bojand (a] google.com (Bojan Djordjevic)
   4534  @since 4.0]]>
   4535     </doc>
   4536   </interface>
   4537   <!-- end interface com.google.inject.grapher.NodeCreator -->
   4538   <!-- start class com.google.inject.grapher.NodeId -->
   4539   <class name="NodeId" extends="java.lang.Object"
   4540     abstract="false"
   4541     static="false" final="true" visibility="public"
   4542     deprecated="not deprecated">
   4543     <method name="newTypeId" return="com.google.inject.grapher.NodeId"
   4544       abstract="false" native="false" synchronized="false"
   4545       static="true" final="false" visibility="public"
   4546       deprecated="not deprecated">
   4547       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4548     </method>
   4549     <method name="newInstanceId" return="com.google.inject.grapher.NodeId"
   4550       abstract="false" native="false" synchronized="false"
   4551       static="true" final="false" visibility="public"
   4552       deprecated="not deprecated">
   4553       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4554     </method>
   4555     <method name="getKey" return="com.google.inject.Key&lt;?&gt;"
   4556       abstract="false" native="false" synchronized="false"
   4557       static="false" final="false" visibility="public"
   4558       deprecated="not deprecated">
   4559     </method>
   4560     <method name="hashCode" return="int"
   4561       abstract="false" native="false" synchronized="false"
   4562       static="false" final="false" visibility="public"
   4563       deprecated="not deprecated">
   4564     </method>
   4565     <method name="equals" return="boolean"
   4566       abstract="false" native="false" synchronized="false"
   4567       static="false" final="false" visibility="public"
   4568       deprecated="not deprecated">
   4569       <param name="obj" type="java.lang.Object"/>
   4570     </method>
   4571     <method name="toString" return="java.lang.String"
   4572       abstract="false" native="false" synchronized="false"
   4573       static="false" final="false" visibility="public"
   4574       deprecated="not deprecated">
   4575     </method>
   4576     <doc>
   4577     <![CDATA[ID of a node in the graph. An ID is given by a {@link Key} and a node type, which is used to
   4578  distinguish instances and implementation classes for the same key. For example
   4579  {@code bind(Integer.class).toInstance(42)} produces two nodes: an
   4580  interface node with the key of {@code Key<Integer>} and an instance node with the same
   4581  {@link Key} and value of 42.
   4582 
   4583  @author bojand (a] google.com (Bojan Djordjevic)
   4584  @since 4.0]]>
   4585     </doc>
   4586   </class>
   4587   <!-- end class com.google.inject.grapher.NodeId -->
   4588   <!-- start class com.google.inject.grapher.NodeId.NodeType -->
   4589   <class name="NodeId.NodeType" extends="java.lang.Enum&lt;com.google.inject.grapher.NodeId.NodeType&gt;"
   4590     abstract="false"
   4591     static="true" final="true" visibility="public"
   4592     deprecated="not deprecated">
   4593     <method name="values" return="com.google.inject.grapher.NodeId.NodeType[]"
   4594       abstract="false" native="false" synchronized="false"
   4595       static="true" final="false" visibility="public"
   4596       deprecated="not deprecated">
   4597     </method>
   4598     <method name="valueOf" return="com.google.inject.grapher.NodeId.NodeType"
   4599       abstract="false" native="false" synchronized="false"
   4600       static="true" final="false" visibility="public"
   4601       deprecated="not deprecated">
   4602       <param name="name" type="java.lang.String"/>
   4603     </method>
   4604     <doc>
   4605     <![CDATA[Type of node.
   4606 
   4607  @since 4.0]]>
   4608     </doc>
   4609   </class>
   4610   <!-- end class com.google.inject.grapher.NodeId.NodeType -->
   4611   <!-- start interface com.google.inject.grapher.RootKeySetCreator -->
   4612   <interface name="RootKeySetCreator"    abstract="true"
   4613     static="false" final="false" visibility="public"
   4614     deprecated="not deprecated">
   4615     <method name="getRootKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4616       abstract="true" native="false" synchronized="false"
   4617       static="false" final="false" visibility="public"
   4618       deprecated="not deprecated">
   4619       <param name="injector" type="com.google.inject.Injector"/>
   4620       <doc>
   4621       <![CDATA[Returns the set of starting keys to graph.]]>
   4622       </doc>
   4623     </method>
   4624     <doc>
   4625     <![CDATA[Creator of the default starting set of keys to graph. These keys and their transitive
   4626  dependencies will be graphed.
   4627 
   4628  @author bojand (a] google.com (Bojan Djordjevic)
   4629  @since 4.0]]>
   4630     </doc>
   4631   </interface>
   4632   <!-- end interface com.google.inject.grapher.RootKeySetCreator -->
   4633   <!-- start class com.google.inject.grapher.ShortNameFactory -->
   4634   <class name="ShortNameFactory" extends="java.lang.Object"
   4635     abstract="false"
   4636     static="false" final="false" visibility="public"
   4637     deprecated="not deprecated">
   4638     <implements name="com.google.inject.grapher.NameFactory"/>
   4639     <constructor name="ShortNameFactory"
   4640       static="false" final="false" visibility="public"
   4641       deprecated="not deprecated">
   4642     </constructor>
   4643     <method name="getMemberName" return="java.lang.String"
   4644       abstract="false" native="false" synchronized="false"
   4645       static="false" final="false" visibility="public"
   4646       deprecated="not deprecated">
   4647       <param name="member" type="java.lang.reflect.Member"/>
   4648     </method>
   4649     <method name="getAnnotationName" return="java.lang.String"
   4650       abstract="false" native="false" synchronized="false"
   4651       static="false" final="false" visibility="public"
   4652       deprecated="not deprecated">
   4653       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4654     </method>
   4655     <method name="getClassName" return="java.lang.String"
   4656       abstract="false" native="false" synchronized="false"
   4657       static="false" final="false" visibility="public"
   4658       deprecated="not deprecated">
   4659       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4660     </method>
   4661     <method name="getInstanceName" return="java.lang.String"
   4662       abstract="false" native="false" synchronized="false"
   4663       static="false" final="false" visibility="public"
   4664       deprecated="not deprecated">
   4665       <param name="instance" type="java.lang.Object"/>
   4666     </method>
   4667     <method name="getSourceName" return="java.lang.String"
   4668       abstract="false" native="false" synchronized="false"
   4669       static="false" final="false" visibility="public"
   4670       deprecated="not deprecated">
   4671       <param name="source" type="java.lang.Object"/>
   4672       <doc>
   4673       <![CDATA[Returns a name for a Guice "source" object. This will typically be either
   4674  a {@link StackTraceElement} for when the binding is made to the instance,
   4675  or a {@link Method} when a provider method is used.]]>
   4676       </doc>
   4677     </method>
   4678     <method name="getFileString" return="java.lang.String"
   4679       abstract="false" native="false" synchronized="false"
   4680       static="false" final="false" visibility="protected"
   4681       deprecated="not deprecated">
   4682       <param name="stackTraceElement" type="java.lang.StackTraceElement"/>
   4683     </method>
   4684     <method name="getMethodString" return="java.lang.String"
   4685       abstract="false" native="false" synchronized="false"
   4686       static="false" final="false" visibility="protected"
   4687       deprecated="not deprecated">
   4688       <param name="method" type="java.lang.reflect.Method"/>
   4689     </method>
   4690     <doc>
   4691     <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various
   4692  {@link Object#toString()}s and strips package names out of them so that
   4693  they'll fit on the graph.
   4694 
   4695  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4696     </doc>
   4697   </class>
   4698   <!-- end class com.google.inject.grapher.ShortNameFactory -->
   4699   <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor -->
   4700   <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;"
   4701     abstract="false"
   4702     static="false" final="false" visibility="public"
   4703     deprecated="not deprecated">
   4704     <constructor name="TransitiveDependencyVisitor"
   4705       static="false" final="false" visibility="public"
   4706       deprecated="not deprecated">
   4707     </constructor>
   4708     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4709       abstract="false" native="false" synchronized="false"
   4710       static="false" final="false" visibility="public"
   4711       deprecated="not deprecated">
   4712       <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
   4713     </method>
   4714     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4715       abstract="false" native="false" synchronized="false"
   4716       static="false" final="false" visibility="public"
   4717       deprecated="not deprecated">
   4718       <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
   4719     </method>
   4720     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4721       abstract="false" native="false" synchronized="false"
   4722       static="false" final="false" visibility="public"
   4723       deprecated="not deprecated">
   4724       <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
   4725     </method>
   4726     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4727       abstract="false" native="false" synchronized="false"
   4728       static="false" final="false" visibility="public"
   4729       deprecated="not deprecated">
   4730       <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;?&gt;"/>
   4731     </method>
   4732     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4733       abstract="false" native="false" synchronized="false"
   4734       static="false" final="false" visibility="public"
   4735       deprecated="not deprecated">
   4736       <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
   4737     </method>
   4738     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4739       abstract="false" native="false" synchronized="false"
   4740       static="false" final="false" visibility="public"
   4741       deprecated="not deprecated">
   4742       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
   4743     </method>
   4744     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4745       abstract="false" native="false" synchronized="false"
   4746       static="false" final="false" visibility="public"
   4747       deprecated="not deprecated">
   4748       <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
   4749     </method>
   4750     <method name="visitOther" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4751       abstract="false" native="false" synchronized="false"
   4752       static="false" final="false" visibility="public"
   4753       deprecated="not deprecated">
   4754       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   4755       <doc>
   4756       <![CDATA[@since 4.0]]>
   4757       </doc>
   4758     </method>
   4759     <doc>
   4760     <![CDATA[{@link com.google.inject.spi.BindingTargetVisitor} that returns a
   4761  {@link Collection} of the {@link Key}s of each {@link Binding}'s
   4762  dependencies. Used by {@link InjectorGrapher} to walk the dependency graph
   4763  from a starting set of {@link Binding}s.
   4764 
   4765  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4766     </doc>
   4767   </class>
   4768   <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor -->
   4769 </package>
   4770 <package name="com.google.inject.grapher.graphviz">
   4771   <!-- start class com.google.inject.grapher.graphviz.ArrowType -->
   4772   <class name="ArrowType" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4773     abstract="false"
   4774     static="false" final="true" visibility="public"
   4775     deprecated="not deprecated">
   4776     <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]"
   4777       abstract="false" native="false" synchronized="false"
   4778       static="true" final="false" visibility="public"
   4779       deprecated="not deprecated">
   4780     </method>
   4781     <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType"
   4782       abstract="false" native="false" synchronized="false"
   4783       static="true" final="false" visibility="public"
   4784       deprecated="not deprecated">
   4785       <param name="name" type="java.lang.String"/>
   4786     </method>
   4787     <method name="toString" return="java.lang.String"
   4788       abstract="false" native="false" synchronized="false"
   4789       static="false" final="false" visibility="public"
   4790       deprecated="not deprecated">
   4791     </method>
   4792     <doc>
   4793     <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by
   4794  concatenation to make double arrows and such.
   4795  <p>
   4796  See: http://www.graphviz.org/doc/info/arrows.html
   4797 
   4798  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4799     </doc>
   4800   </class>
   4801   <!-- end class com.google.inject.grapher.graphviz.ArrowType -->
   4802   <!-- start class com.google.inject.grapher.graphviz.CompassPoint -->
   4803   <class name="CompassPoint" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.CompassPoint&gt;"
   4804     abstract="false"
   4805     static="false" final="true" visibility="public"
   4806     deprecated="not deprecated">
   4807     <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]"
   4808       abstract="false" native="false" synchronized="false"
   4809       static="true" final="false" visibility="public"
   4810       deprecated="not deprecated">
   4811     </method>
   4812     <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint"
   4813       abstract="false" native="false" synchronized="false"
   4814       static="true" final="false" visibility="public"
   4815       deprecated="not deprecated">
   4816       <param name="name" type="java.lang.String"/>
   4817     </method>
   4818     <method name="toString" return="java.lang.String"
   4819       abstract="false" native="false" synchronized="false"
   4820       static="false" final="false" visibility="public"
   4821       deprecated="not deprecated">
   4822     </method>
   4823     <doc>
   4824     <![CDATA[Enum for the "compass point" values used to control where edge
   4825  end points appear on the graph.
   4826  <p>
   4827  See: http://www.graphviz.org/doc/info/attrs.html#k:portPos
   4828 
   4829  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4830     </doc>
   4831   </class>
   4832   <!-- end class com.google.inject.grapher.graphviz.CompassPoint -->
   4833   <!-- start class com.google.inject.grapher.graphviz.EdgeStyle -->
   4834   <class name="EdgeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.EdgeStyle&gt;"
   4835     abstract="false"
   4836     static="false" final="true" visibility="public"
   4837     deprecated="not deprecated">
   4838     <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]"
   4839       abstract="false" native="false" synchronized="false"
   4840       static="true" final="false" visibility="public"
   4841       deprecated="not deprecated">
   4842     </method>
   4843     <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle"
   4844       abstract="false" native="false" synchronized="false"
   4845       static="true" final="false" visibility="public"
   4846       deprecated="not deprecated">
   4847       <param name="name" type="java.lang.String"/>
   4848     </method>
   4849     <method name="toString" return="java.lang.String"
   4850       abstract="false" native="false" synchronized="false"
   4851       static="false" final="false" visibility="public"
   4852       deprecated="not deprecated">
   4853     </method>
   4854     <doc>
   4855     <![CDATA[Styles for edges.
   4856  <p>
   4857  See: http://www.graphviz.org/doc/info/attrs.html#k:style
   4858 
   4859  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4860     </doc>
   4861   </class>
   4862   <!-- end class com.google.inject.grapher.graphviz.EdgeStyle -->
   4863   <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge -->
   4864   <class name="GraphvizEdge" extends="java.lang.Object"
   4865     abstract="false"
   4866     static="false" final="false" visibility="public"
   4867     deprecated="not deprecated">
   4868     <constructor name="GraphvizEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
   4869       static="false" final="false" visibility="public"
   4870       deprecated="not deprecated">
   4871     </constructor>
   4872     <method name="getHeadNodeId" return="com.google.inject.grapher.NodeId"
   4873       abstract="false" native="false" synchronized="false"
   4874       static="false" final="false" visibility="public"
   4875       deprecated="not deprecated">
   4876       <doc>
   4877       <![CDATA[@since 4.0]]>
   4878       </doc>
   4879     </method>
   4880     <method name="getHeadPortId" return="java.lang.String"
   4881       abstract="false" native="false" synchronized="false"
   4882       static="false" final="false" visibility="public"
   4883       deprecated="not deprecated">
   4884     </method>
   4885     <method name="setHeadPortId"
   4886       abstract="false" native="false" synchronized="false"
   4887       static="false" final="false" visibility="public"
   4888       deprecated="not deprecated">
   4889       <param name="headPortId" type="java.lang.String"/>
   4890     </method>
   4891     <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
   4892       abstract="false" native="false" synchronized="false"
   4893       static="false" final="false" visibility="public"
   4894       deprecated="not deprecated">
   4895     </method>
   4896     <method name="setHeadCompassPoint"
   4897       abstract="false" native="false" synchronized="false"
   4898       static="false" final="false" visibility="public"
   4899       deprecated="not deprecated">
   4900       <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   4901     </method>
   4902     <method name="getArrowHead" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4903       abstract="false" native="false" synchronized="false"
   4904       static="false" final="false" visibility="public"
   4905       deprecated="not deprecated">
   4906     </method>
   4907     <method name="setArrowHead"
   4908       abstract="false" native="false" synchronized="false"
   4909       static="false" final="false" visibility="public"
   4910       deprecated="not deprecated">
   4911       <param name="arrowHead" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   4912     </method>
   4913     <method name="getTailNodeId" return="com.google.inject.grapher.NodeId"
   4914       abstract="false" native="false" synchronized="false"
   4915       static="false" final="false" visibility="public"
   4916       deprecated="not deprecated">
   4917       <doc>
   4918       <![CDATA[@since 4.0]]>
   4919       </doc>
   4920     </method>
   4921     <method name="getTailPortId" return="java.lang.String"
   4922       abstract="false" native="false" synchronized="false"
   4923       static="false" final="false" visibility="public"
   4924       deprecated="not deprecated">
   4925     </method>
   4926     <method name="setTailPortId"
   4927       abstract="false" native="false" synchronized="false"
   4928       static="false" final="false" visibility="public"
   4929       deprecated="not deprecated">
   4930       <param name="tailPortId" type="java.lang.String"/>
   4931     </method>
   4932     <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
   4933       abstract="false" native="false" synchronized="false"
   4934       static="false" final="false" visibility="public"
   4935       deprecated="not deprecated">
   4936     </method>
   4937     <method name="setTailCompassPoint"
   4938       abstract="false" native="false" synchronized="false"
   4939       static="false" final="false" visibility="public"
   4940       deprecated="not deprecated">
   4941       <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   4942     </method>
   4943     <method name="getArrowTail" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4944       abstract="false" native="false" synchronized="false"
   4945       static="false" final="false" visibility="public"
   4946       deprecated="not deprecated">
   4947     </method>
   4948     <method name="setArrowTail"
   4949       abstract="false" native="false" synchronized="false"
   4950       static="false" final="false" visibility="public"
   4951       deprecated="not deprecated">
   4952       <param name="arrowTail" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   4953     </method>
   4954     <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle"
   4955       abstract="false" native="false" synchronized="false"
   4956       static="false" final="false" visibility="public"
   4957       deprecated="not deprecated">
   4958     </method>
   4959     <method name="setStyle"
   4960       abstract="false" native="false" synchronized="false"
   4961       static="false" final="false" visibility="public"
   4962       deprecated="not deprecated">
   4963       <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/>
   4964     </method>
   4965     <doc>
   4966     <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're
   4967  interested in drawing.
   4968 
   4969  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4970     </doc>
   4971   </class>
   4972   <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge -->
   4973   <!-- start class com.google.inject.grapher.graphviz.GraphvizGrapher -->
   4974   <class name="GraphvizGrapher" extends="com.google.inject.grapher.AbstractInjectorGrapher"
   4975     abstract="false"
   4976     static="false" final="false" visibility="public"
   4977     deprecated="not deprecated">
   4978     <method name="reset"
   4979       abstract="false" native="false" synchronized="false"
   4980       static="false" final="false" visibility="protected"
   4981       deprecated="not deprecated">
   4982     </method>
   4983     <method name="setOut"
   4984       abstract="false" native="false" synchronized="false"
   4985       static="false" final="false" visibility="public"
   4986       deprecated="not deprecated">
   4987       <param name="out" type="java.io.PrintWriter"/>
   4988     </method>
   4989     <method name="setRankdir"
   4990       abstract="false" native="false" synchronized="false"
   4991       static="false" final="false" visibility="public"
   4992       deprecated="not deprecated">
   4993       <param name="rankdir" type="java.lang.String"/>
   4994     </method>
   4995     <method name="postProcess"
   4996       abstract="false" native="false" synchronized="false"
   4997       static="false" final="false" visibility="protected"
   4998       deprecated="not deprecated">
   4999     </method>
   5000     <method name="getGraphAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5001       abstract="false" native="false" synchronized="false"
   5002       static="false" final="false" visibility="protected"
   5003       deprecated="not deprecated">
   5004     </method>
   5005     <method name="start"
   5006       abstract="false" native="false" synchronized="false"
   5007       static="false" final="false" visibility="protected"
   5008       deprecated="not deprecated">
   5009     </method>
   5010     <method name="finish"
   5011       abstract="false" native="false" synchronized="false"
   5012       static="false" final="false" visibility="protected"
   5013       deprecated="not deprecated">
   5014     </method>
   5015     <method name="renderNode"
   5016       abstract="false" native="false" synchronized="false"
   5017       static="false" final="false" visibility="protected"
   5018       deprecated="not deprecated">
   5019       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5020     </method>
   5021     <method name="getNodeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5022       abstract="false" native="false" synchronized="false"
   5023       static="false" final="false" visibility="protected"
   5024       deprecated="not deprecated">
   5025       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5026     </method>
   5027     <method name="getNodeLabel" return="java.lang.String"
   5028       abstract="false" native="false" synchronized="false"
   5029       static="false" final="false" visibility="protected"
   5030       deprecated="not deprecated">
   5031       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5032       <doc>
   5033       <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a
   5034  table with a heading at the top and (in the case of
   5035  {@link ImplementationNode}s) rows for each of the member fields.]]>
   5036       </doc>
   5037     </method>
   5038     <method name="renderEdge"
   5039       abstract="false" native="false" synchronized="false"
   5040       static="false" final="false" visibility="protected"
   5041       deprecated="not deprecated">
   5042       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   5043     </method>
   5044     <method name="getEdgeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5045       abstract="false" native="false" synchronized="false"
   5046       static="false" final="false" visibility="protected"
   5047       deprecated="not deprecated">
   5048       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   5049     </method>
   5050     <method name="getArrowString" return="java.lang.String"
   5051       abstract="false" native="false" synchronized="false"
   5052       static="false" final="false" visibility="protected"
   5053       deprecated="not deprecated">
   5054       <param name="arrows" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   5055       <doc>
   5056       <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that
   5057  represents combining them. With Graphviz, that just means concatenating
   5058  them.]]>
   5059       </doc>
   5060     </method>
   5061     <method name="getEdgeEndPoint" return="java.lang.String"
   5062       abstract="false" native="false" synchronized="false"
   5063       static="false" final="false" visibility="protected"
   5064       deprecated="not deprecated">
   5065       <param name="nodeId" type="java.lang.String"/>
   5066       <param name="portId" type="java.lang.String"/>
   5067       <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   5068     </method>
   5069     <method name="htmlEscape" return="java.lang.String"
   5070       abstract="false" native="false" synchronized="false"
   5071       static="false" final="false" visibility="protected"
   5072       deprecated="not deprecated">
   5073       <param name="str" type="java.lang.String"/>
   5074     </method>
   5075     <method name="htmlEscape" return="java.util.List&lt;java.lang.String&gt;"
   5076       abstract="false" native="false" synchronized="false"
   5077       static="false" final="false" visibility="protected"
   5078       deprecated="not deprecated">
   5079       <param name="elements" type="java.util.List&lt;java.lang.String&gt;"/>
   5080     </method>
   5081     <method name="newInterfaceNode"
   5082       abstract="false" native="false" synchronized="false"
   5083       static="false" final="false" visibility="protected"
   5084       deprecated="not deprecated">
   5085       <param name="node" type="com.google.inject.grapher.InterfaceNode"/>
   5086     </method>
   5087     <method name="newImplementationNode"
   5088       abstract="false" native="false" synchronized="false"
   5089       static="false" final="false" visibility="protected"
   5090       deprecated="not deprecated">
   5091       <param name="node" type="com.google.inject.grapher.ImplementationNode"/>
   5092     </method>
   5093     <method name="newInstanceNode"
   5094       abstract="false" native="false" synchronized="false"
   5095       static="false" final="false" visibility="protected"
   5096       deprecated="not deprecated">
   5097       <param name="node" type="com.google.inject.grapher.InstanceNode"/>
   5098     </method>
   5099     <method name="newDependencyEdge"
   5100       abstract="false" native="false" synchronized="false"
   5101       static="false" final="false" visibility="protected"
   5102       deprecated="not deprecated">
   5103       <param name="edge" type="com.google.inject.grapher.DependencyEdge"/>
   5104     </method>
   5105     <method name="newBindingEdge"
   5106       abstract="false" native="false" synchronized="false"
   5107       static="false" final="false" visibility="protected"
   5108       deprecated="not deprecated">
   5109       <param name="edge" type="com.google.inject.grapher.BindingEdge"/>
   5110     </method>
   5111     <doc>
   5112     <![CDATA[{@link com.google.inject.grapher.InjectorGrapher} implementation that writes out a Graphviz DOT
   5113  file of the graph. Dependencies are bound in {@link GraphvizModule}.
   5114  <p>
   5115  Specify the {@link PrintWriter} to output to with {@link #setOut(PrintWriter)}.
   5116 
   5117  @author phopkins (a] gmail.com (Pete Hopkins)
   5118  @since 4.0]]>
   5119     </doc>
   5120   </class>
   5121   <!-- end class com.google.inject.grapher.graphviz.GraphvizGrapher -->
   5122   <!-- start class com.google.inject.grapher.graphviz.GraphvizModule -->
   5123   <class name="GraphvizModule" extends="com.google.inject.AbstractModule"
   5124     abstract="false"
   5125     static="false" final="false" visibility="public"
   5126     deprecated="not deprecated">
   5127     <constructor name="GraphvizModule"
   5128       static="false" final="false" visibility="public"
   5129       deprecated="not deprecated">
   5130     </constructor>
   5131     <method name="configure"
   5132       abstract="false" native="false" synchronized="false"
   5133       static="false" final="false" visibility="protected"
   5134       deprecated="not deprecated">
   5135     </method>
   5136     <doc>
   5137     <![CDATA[Module that provides classes needed by {@link GraphvizGrapher}.
   5138 
   5139  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5140     </doc>
   5141   </class>
   5142   <!-- end class com.google.inject.grapher.graphviz.GraphvizModule -->
   5143   <!-- start class com.google.inject.grapher.graphviz.GraphvizNode -->
   5144   <class name="GraphvizNode" extends="java.lang.Object"
   5145     abstract="false"
   5146     static="false" final="false" visibility="public"
   5147     deprecated="not deprecated">
   5148     <constructor name="GraphvizNode" type="com.google.inject.grapher.NodeId"
   5149       static="false" final="false" visibility="public"
   5150       deprecated="not deprecated">
   5151       <doc>
   5152       <![CDATA[@since 4.0]]>
   5153       </doc>
   5154     </constructor>
   5155     <method name="getNodeId" return="com.google.inject.grapher.NodeId"
   5156       abstract="false" native="false" synchronized="false"
   5157       static="false" final="false" visibility="public"
   5158       deprecated="not deprecated">
   5159       <doc>
   5160       <![CDATA[@since 4.0]]>
   5161       </doc>
   5162     </method>
   5163     <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape"
   5164       abstract="false" native="false" synchronized="false"
   5165       static="false" final="false" visibility="public"
   5166       deprecated="not deprecated">
   5167     </method>
   5168     <method name="setShape"
   5169       abstract="false" native="false" synchronized="false"
   5170       static="false" final="false" visibility="public"
   5171       deprecated="not deprecated">
   5172       <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/>
   5173     </method>
   5174     <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle"
   5175       abstract="false" native="false" synchronized="false"
   5176       static="false" final="false" visibility="public"
   5177       deprecated="not deprecated">
   5178     </method>
   5179     <method name="setStyle"
   5180       abstract="false" native="false" synchronized="false"
   5181       static="false" final="false" visibility="public"
   5182       deprecated="not deprecated">
   5183       <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/>
   5184     </method>
   5185     <method name="getTitle" return="java.lang.String"
   5186       abstract="false" native="false" synchronized="false"
   5187       static="false" final="false" visibility="public"
   5188       deprecated="not deprecated">
   5189     </method>
   5190     <method name="setTitle"
   5191       abstract="false" native="false" synchronized="false"
   5192       static="false" final="false" visibility="public"
   5193       deprecated="not deprecated">
   5194       <param name="title" type="java.lang.String"/>
   5195     </method>
   5196     <method name="getSubtitles" return="java.util.List&lt;java.lang.String&gt;"
   5197       abstract="false" native="false" synchronized="false"
   5198       static="false" final="false" visibility="public"
   5199       deprecated="not deprecated">
   5200     </method>
   5201     <method name="addSubtitle"
   5202       abstract="false" native="false" synchronized="false"
   5203       static="false" final="false" visibility="public"
   5204       deprecated="not deprecated">
   5205       <param name="position" type="int"/>
   5206       <param name="subtitle" type="java.lang.String"/>
   5207     </method>
   5208     <method name="getHeaderTextColor" return="java.lang.String"
   5209       abstract="false" native="false" synchronized="false"
   5210       static="false" final="false" visibility="public"
   5211       deprecated="not deprecated">
   5212     </method>
   5213     <method name="setHeaderTextColor"
   5214       abstract="false" native="false" synchronized="false"
   5215       static="false" final="false" visibility="public"
   5216       deprecated="not deprecated">
   5217       <param name="headerTextColor" type="java.lang.String"/>
   5218     </method>
   5219     <method name="getHeaderBackgroundColor" return="java.lang.String"
   5220       abstract="false" native="false" synchronized="false"
   5221       static="false" final="false" visibility="public"
   5222       deprecated="not deprecated">
   5223     </method>
   5224     <method name="setHeaderBackgroundColor"
   5225       abstract="false" native="false" synchronized="false"
   5226       static="false" final="false" visibility="public"
   5227       deprecated="not deprecated">
   5228       <param name="headerBackgroundColor" type="java.lang.String"/>
   5229     </method>
   5230     <method name="addField"
   5231       abstract="false" native="false" synchronized="false"
   5232       static="false" final="false" visibility="public"
   5233       deprecated="not deprecated">
   5234       <param name="portId" type="java.lang.String"/>
   5235       <param name="title" type="java.lang.String"/>
   5236     </method>
   5237     <method name="getFields" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5238       abstract="false" native="false" synchronized="false"
   5239       static="false" final="false" visibility="public"
   5240       deprecated="not deprecated">
   5241     </method>
   5242     <method name="getIdentifier" return="java.lang.String"
   5243       abstract="false" native="false" synchronized="false"
   5244       static="false" final="false" visibility="public"
   5245       deprecated="not deprecated">
   5246       <doc>
   5247       <![CDATA[@since 4.0]]>
   5248       </doc>
   5249     </method>
   5250     <method name="setIdentifier"
   5251       abstract="false" native="false" synchronized="false"
   5252       static="false" final="false" visibility="public"
   5253       deprecated="not deprecated">
   5254       <param name="identifier" type="java.lang.String"/>
   5255       <doc>
   5256       <![CDATA[@since 4.0]]>
   5257       </doc>
   5258     </method>
   5259     <doc>
   5260     <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're
   5261  interested in drawing.
   5262 
   5263  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5264     </doc>
   5265   </class>
   5266   <!-- end class com.google.inject.grapher.graphviz.GraphvizNode -->
   5267   <!-- start class com.google.inject.grapher.graphviz.NodeShape -->
   5268   <class name="NodeShape" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeShape&gt;"
   5269     abstract="false"
   5270     static="false" final="true" visibility="public"
   5271     deprecated="not deprecated">
   5272     <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]"
   5273       abstract="false" native="false" synchronized="false"
   5274       static="true" final="false" visibility="public"
   5275       deprecated="not deprecated">
   5276     </method>
   5277     <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape"
   5278       abstract="false" native="false" synchronized="false"
   5279       static="true" final="false" visibility="public"
   5280       deprecated="not deprecated">
   5281       <param name="name" type="java.lang.String"/>
   5282     </method>
   5283     <method name="toString" return="java.lang.String"
   5284       abstract="false" native="false" synchronized="false"
   5285       static="false" final="false" visibility="public"
   5286       deprecated="not deprecated">
   5287     </method>
   5288     <doc>
   5289     <![CDATA[Enum for the shapes that are most interesting for Guice graphing.
   5290  <p>
   5291  See: http://www.graphviz.org/doc/info/shapes.html
   5292  
   5293  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5294     </doc>
   5295   </class>
   5296   <!-- end class com.google.inject.grapher.graphviz.NodeShape -->
   5297   <!-- start class com.google.inject.grapher.graphviz.NodeStyle -->
   5298   <class name="NodeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeStyle&gt;"
   5299     abstract="false"
   5300     static="false" final="true" visibility="public"
   5301     deprecated="not deprecated">
   5302     <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]"
   5303       abstract="false" native="false" synchronized="false"
   5304       static="true" final="false" visibility="public"
   5305       deprecated="not deprecated">
   5306     </method>
   5307     <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle"
   5308       abstract="false" native="false" synchronized="false"
   5309       static="true" final="false" visibility="public"
   5310       deprecated="not deprecated">
   5311       <param name="name" type="java.lang.String"/>
   5312     </method>
   5313     <method name="toString" return="java.lang.String"
   5314       abstract="false" native="false" synchronized="false"
   5315       static="false" final="false" visibility="public"
   5316       deprecated="not deprecated">
   5317     </method>
   5318     <doc>
   5319     <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options.
   5320  <p>
   5321  See: http://www.graphviz.org/doc/info/attrs.html#k:style
   5322 
   5323  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5324     </doc>
   5325   </class>
   5326   <!-- end class com.google.inject.grapher.graphviz.NodeStyle -->
   5327   <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory -->
   5328   <interface name="PortIdFactory"    abstract="true"
   5329     static="false" final="false" visibility="public"
   5330     deprecated="not deprecated">
   5331     <method name="getPortId" return="java.lang.String"
   5332       abstract="true" native="false" synchronized="false"
   5333       static="false" final="false" visibility="public"
   5334       deprecated="not deprecated">
   5335       <param name="member" type="java.lang.reflect.Member"/>
   5336     </method>
   5337     <doc>
   5338     <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the
   5339  rows in {@link com.google.inject.grapher.ImplementationNode}-displaying {@link GraphvizNode}s.
   5340 
   5341  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5342     </doc>
   5343   </interface>
   5344   <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory -->
   5345   <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
   5346   <class name="PortIdFactoryImpl" extends="java.lang.Object"
   5347     abstract="false"
   5348     static="false" final="false" visibility="public"
   5349     deprecated="not deprecated">
   5350     <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/>
   5351     <constructor name="PortIdFactoryImpl"
   5352       static="false" final="false" visibility="public"
   5353       deprecated="not deprecated">
   5354     </constructor>
   5355     <method name="getPortId" return="java.lang.String"
   5356       abstract="false" native="false" synchronized="false"
   5357       static="false" final="false" visibility="public"
   5358       deprecated="not deprecated">
   5359       <param name="member" type="java.lang.reflect.Member"/>
   5360     </method>
   5361     <doc>
   5362     <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}.
   5363 
   5364  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5365     </doc>
   5366   </class>
   5367   <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
   5368 </package>
   5369 <package name="com.google.inject.jndi">
   5370   <!-- start class com.google.inject.jndi.JndiIntegration -->
   5371   <class name="JndiIntegration" extends="java.lang.Object"
   5372     abstract="false"
   5373     static="false" final="false" visibility="public"
   5374     deprecated="not deprecated">
   5375     <method name="fromJndi" return="com.google.inject.Provider&lt;T&gt;"
   5376       abstract="false" native="false" synchronized="false"
   5377       static="true" final="false" visibility="public"
   5378       deprecated="not deprecated">
   5379       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5380       <param name="name" type="java.lang.String"/>
   5381       <doc>
   5382       <![CDATA[Creates a provider which looks up objects in JNDI using the given name.
   5383  Example usage:
   5384 
   5385  <pre>
   5386  bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:..."));
   5387  </pre>]]>
   5388       </doc>
   5389     </method>
   5390     <doc>
   5391     <![CDATA[Integrates Guice with JNDI. Requires a binding to 
   5392  {@link javax.naming.Context}.
   5393 
   5394  @author crazybob (a] google.com (Bob Lee)]]>
   5395     </doc>
   5396   </class>
   5397   <!-- end class com.google.inject.jndi.JndiIntegration -->
   5398 </package>
   5399 <package name="com.google.inject.matcher">
   5400   <!-- start class com.google.inject.matcher.AbstractMatcher -->
   5401   <class name="AbstractMatcher" extends="java.lang.Object"
   5402     abstract="true"
   5403     static="false" final="false" visibility="public"
   5404     deprecated="not deprecated">
   5405     <implements name="com.google.inject.matcher.Matcher&lt;T&gt;"/>
   5406     <constructor name="AbstractMatcher"
   5407       static="false" final="false" visibility="public"
   5408       deprecated="not deprecated">
   5409     </constructor>
   5410     <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5411       abstract="false" native="false" synchronized="false"
   5412       static="false" final="false" visibility="public"
   5413       deprecated="not deprecated">
   5414       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5415     </method>
   5416     <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5417       abstract="false" native="false" synchronized="false"
   5418       static="false" final="false" visibility="public"
   5419       deprecated="not deprecated">
   5420       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5421     </method>
   5422     <doc>
   5423     <![CDATA[Implements {@code and()} and {@code or()}.
   5424 
   5425  @author crazybob (a] google.com (Bob Lee)]]>
   5426     </doc>
   5427   </class>
   5428   <!-- end class com.google.inject.matcher.AbstractMatcher -->
   5429   <!-- start interface com.google.inject.matcher.Matcher -->
   5430   <interface name="Matcher"    abstract="true"
   5431     static="false" final="false" visibility="public"
   5432     deprecated="not deprecated">
   5433     <method name="matches" return="boolean"
   5434       abstract="true" native="false" synchronized="false"
   5435       static="false" final="false" visibility="public"
   5436       deprecated="not deprecated">
   5437       <param name="t" type="T"/>
   5438       <doc>
   5439       <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]>
   5440       </doc>
   5441     </method>
   5442     <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5443       abstract="true" native="false" synchronized="false"
   5444       static="false" final="false" visibility="public"
   5445       deprecated="not deprecated">
   5446       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5447       <doc>
   5448       <![CDATA[Returns a new matcher which returns {@code true} if both this and the
   5449  given matcher return {@code true}.]]>
   5450       </doc>
   5451     </method>
   5452     <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5453       abstract="true" native="false" synchronized="false"
   5454       static="false" final="false" visibility="public"
   5455       deprecated="not deprecated">
   5456       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5457       <doc>
   5458       <![CDATA[Returns a new matcher which returns {@code true} if either this or the
   5459  given matcher return {@code true}.]]>
   5460       </doc>
   5461     </method>
   5462     <doc>
   5463     <![CDATA[Returns {@code true} or {@code false} for a given input.
   5464 
   5465  @author crazybob (a] google.com (Bob Lee)]]>
   5466     </doc>
   5467   </interface>
   5468   <!-- end interface com.google.inject.matcher.Matcher -->
   5469   <!-- start class com.google.inject.matcher.Matchers -->
   5470   <class name="Matchers" extends="java.lang.Object"
   5471     abstract="false"
   5472     static="false" final="false" visibility="public"
   5473     deprecated="not deprecated">
   5474     <method name="any" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5475       abstract="false" native="false" synchronized="false"
   5476       static="true" final="false" visibility="public"
   5477       deprecated="not deprecated">
   5478       <doc>
   5479       <![CDATA[Returns a matcher which matches any input.]]>
   5480       </doc>
   5481     </method>
   5482     <method name="not" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5483       abstract="false" native="false" synchronized="false"
   5484       static="true" final="false" visibility="public"
   5485       deprecated="not deprecated">
   5486       <param name="p" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5487       <doc>
   5488       <![CDATA[Inverts the given matcher.]]>
   5489       </doc>
   5490     </method>
   5491     <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
   5492       abstract="false" native="false" synchronized="false"
   5493       static="true" final="false" visibility="public"
   5494       deprecated="not deprecated">
   5495       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5496       <doc>
   5497       <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
   5498  with a given annotation.]]>
   5499       </doc>
   5500     </method>
   5501     <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
   5502       abstract="false" native="false" synchronized="false"
   5503       static="true" final="false" visibility="public"
   5504       deprecated="not deprecated">
   5505       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5506       <doc>
   5507       <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
   5508  with a given annotation.]]>
   5509       </doc>
   5510     </method>
   5511     <method name="subclassesOf" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5512       abstract="false" native="false" synchronized="false"
   5513       static="true" final="false" visibility="public"
   5514       deprecated="not deprecated">
   5515       <param name="superclass" type="java.lang.Class&lt;?&gt;"/>
   5516       <doc>
   5517       <![CDATA[Returns a matcher which matches subclasses of the given type (as well as
   5518  the given type).]]>
   5519       </doc>
   5520     </method>
   5521     <method name="only" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5522       abstract="false" native="false" synchronized="false"
   5523       static="true" final="false" visibility="public"
   5524       deprecated="not deprecated">
   5525       <param name="value" type="java.lang.Object"/>
   5526       <doc>
   5527       <![CDATA[Returns a matcher which matches objects equal to the given object.]]>
   5528       </doc>
   5529     </method>
   5530     <method name="identicalTo" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5531       abstract="false" native="false" synchronized="false"
   5532       static="true" final="false" visibility="public"
   5533       deprecated="not deprecated">
   5534       <param name="value" type="java.lang.Object"/>
   5535       <doc>
   5536       <![CDATA[Returns a matcher which matches only the given object.]]>
   5537       </doc>
   5538     </method>
   5539     <method name="inPackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5540       abstract="false" native="false" synchronized="false"
   5541       static="true" final="false" visibility="public"
   5542       deprecated="not deprecated">
   5543       <param name="targetPackage" type="java.lang.Package"/>
   5544       <doc>
   5545       <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their
   5546  classloader, so classes with the same package name may not have the same package at runtime.]]>
   5547       </doc>
   5548     </method>
   5549     <method name="inSubpackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5550       abstract="false" native="false" synchronized="false"
   5551       static="true" final="false" visibility="public"
   5552       deprecated="not deprecated">
   5553       <param name="targetPackageName" type="java.lang.String"/>
   5554       <doc>
   5555       <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike
   5556  {@link #inPackage(Package) inPackage()}, this matches classes from any classloader.
   5557  
   5558  @since 2.0]]>
   5559       </doc>
   5560     </method>
   5561     <method name="returns" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.Method&gt;"
   5562       abstract="false" native="false" synchronized="false"
   5563       static="true" final="false" visibility="public"
   5564       deprecated="not deprecated">
   5565       <param name="returnType" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
   5566       <doc>
   5567       <![CDATA[Returns a matcher which matches methods with matching return types.]]>
   5568       </doc>
   5569     </method>
   5570     <doc>
   5571     <![CDATA[Matcher implementations. Supports matching classes and methods.
   5572 
   5573  @author crazybob (a] google.com (Bob Lee)]]>
   5574     </doc>
   5575   </class>
   5576   <!-- end class com.google.inject.matcher.Matchers -->
   5577 </package>
   5578 <package name="com.google.inject.multibindings">
   5579   <!-- start class com.google.inject.multibindings.ClassMapKey -->
   5580   <class name="ClassMapKey"    abstract="true"
   5581     static="false" final="false" visibility="public"
   5582     deprecated="not deprecated">
   5583     <implements name="java.lang.annotation.Annotation"/>
   5584     <doc>
   5585     <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a class map key.
   5586 
   5587  @since 4.0]]>
   5588     </doc>
   5589   </class>
   5590   <!-- end class com.google.inject.multibindings.ClassMapKey -->
   5591   <!-- start class com.google.inject.multibindings.MapBinder -->
   5592   <class name="MapBinder" extends="java.lang.Object"
   5593     abstract="true"
   5594     static="false" final="false" visibility="public"
   5595     deprecated="not deprecated">
   5596     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5597       abstract="false" native="false" synchronized="false"
   5598       static="true" final="false" visibility="public"
   5599       deprecated="not deprecated">
   5600       <param name="binder" type="com.google.inject.Binder"/>
   5601       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5602       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5603       <doc>
   5604       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5605  {@link Map} that is itself bound with no binding annotation.]]>
   5606       </doc>
   5607     </method>
   5608     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5609       abstract="false" native="false" synchronized="false"
   5610       static="true" final="false" visibility="public"
   5611       deprecated="not deprecated">
   5612       <param name="binder" type="com.google.inject.Binder"/>
   5613       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5614       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5615       <doc>
   5616       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5617  {@link Map} that is itself bound with no binding annotation.]]>
   5618       </doc>
   5619     </method>
   5620     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5621       abstract="false" native="false" synchronized="false"
   5622       static="true" final="false" visibility="public"
   5623       deprecated="not deprecated">
   5624       <param name="binder" type="com.google.inject.Binder"/>
   5625       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5626       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5627       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5628       <doc>
   5629       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5630  {@link Map} that is itself bound with {@code annotation}.]]>
   5631       </doc>
   5632     </method>
   5633     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5634       abstract="false" native="false" synchronized="false"
   5635       static="true" final="false" visibility="public"
   5636       deprecated="not deprecated">
   5637       <param name="binder" type="com.google.inject.Binder"/>
   5638       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5639       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5640       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5641       <doc>
   5642       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5643  {@link Map} that is itself bound with {@code annotation}.]]>
   5644       </doc>
   5645     </method>
   5646     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5647       abstract="false" native="false" synchronized="false"
   5648       static="true" final="false" visibility="public"
   5649       deprecated="not deprecated">
   5650       <param name="binder" type="com.google.inject.Binder"/>
   5651       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5652       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5653       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5654       <doc>
   5655       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5656  {@link Map} that is itself bound with {@code annotationType}.]]>
   5657       </doc>
   5658     </method>
   5659     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5660       abstract="false" native="false" synchronized="false"
   5661       static="true" final="false" visibility="public"
   5662       deprecated="not deprecated">
   5663       <param name="binder" type="com.google.inject.Binder"/>
   5664       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5665       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5666       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5667       <doc>
   5668       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5669  {@link Map} that is itself bound with {@code annotationType}.]]>
   5670       </doc>
   5671     </method>
   5672     <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5673       abstract="true" native="false" synchronized="false"
   5674       static="false" final="false" visibility="public"
   5675       deprecated="not deprecated">
   5676       <doc>
   5677       <![CDATA[Configures the {@code MapBinder} to handle duplicate entries.
   5678  <p>When multiple equal keys are bound, the value that gets included in the map is
   5679  arbitrary.
   5680  <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>}
   5681  maps that are normally bound, a {@code Map<K, Set<V>>} and
   5682  {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain
   5683  all values bound to each key.
   5684  <p>
   5685  When multiple modules contribute elements to the map, this configuration
   5686  option impacts all of them.
   5687 
   5688  @return this map binder
   5689  @since 3.0]]>
   5690       </doc>
   5691     </method>
   5692     <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;V&gt;"
   5693       abstract="true" native="false" synchronized="false"
   5694       static="false" final="false" visibility="public"
   5695       deprecated="not deprecated">
   5696       <param name="key" type="K"/>
   5697       <doc>
   5698       <![CDATA[Returns a binding builder used to add a new entry in the map. Each
   5699  key must be distinct (and non-null). Bound providers will be evaluated each
   5700  time the map is injected.
   5701 
   5702  <p>It is an error to call this method without also calling one of the
   5703  {@code to} methods on the returned binding builder.
   5704 
   5705  <p>Scoping elements independently is supported. Use the {@code in} method
   5706  to specify a binding scope.]]>
   5707       </doc>
   5708     </method>
   5709     <doc>
   5710     <![CDATA[An API to bind multiple map entries separately, only to later inject them as
   5711  a complete map. MapBinder is intended for use in your application's module:
   5712  <pre><code>
   5713  public class SnacksModule extends AbstractModule {
   5714    protected void configure() {
   5715      MapBinder&lt;String, Snack&gt; mapbinder
   5716          = MapBinder.newMapBinder(binder(), String.class, Snack.class);
   5717      mapbinder.addBinding("twix").toInstance(new Twix());
   5718      mapbinder.addBinding("snickers").toProvider(SnickersProvider.class);
   5719      mapbinder.addBinding("skittles").to(Skittles.class);
   5720    }
   5721  }</code></pre>
   5722 
   5723  <p>With this binding, a {@link Map}{@code <String, Snack>} can now be
   5724  injected:
   5725  <pre><code>
   5726  class SnackMachine {
   5727    {@literal @}Inject
   5728    public SnackMachine(Map&lt;String, Snack&gt; snacks) { ... }
   5729  }</code></pre>
   5730 
   5731  <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind
   5732  {@code Map<K, Provider<V>>} for lazy value provision:
   5733  <pre><code>
   5734  class SnackMachine {
   5735    {@literal @}Inject
   5736    public SnackMachine(Map&lt;String, Provider&lt;Snack&gt;&gt; snackProviders) { ... }
   5737  }</code></pre>
   5738 
   5739  <p>Contributing mapbindings from different modules is supported. For example,
   5740  it is okay to have both {@code CandyModule} and {@code ChipsModule} both
   5741  create their own {@code MapBinder<String, Snack>}, and to each contribute
   5742  bindings to the snacks map. When that map is injected, it will contain
   5743  entries from both modules.
   5744 
   5745  <p>The map's iteration order is consistent with the binding order. This is
   5746  convenient when multiple elements are contributed by the same module because
   5747  that module can order its bindings appropriately. Avoid relying on the
   5748  iteration order of elements contributed by different modules, since there is
   5749  no equivalent mechanism to order modules.
   5750 
   5751  <p>The map is unmodifiable.  Elements can only be added to the map by
   5752  configuring the MapBinder.  Elements can never be removed from the map.
   5753 
   5754  <p>Values are resolved at map injection time. If a value is bound to a
   5755  provider, that provider's get method will be called each time the map is
   5756  injected (unless the binding is also scoped, or a map of providers is injected).
   5757 
   5758  <p>Annotations are used to create different maps of the same key/value
   5759  type. Each distinct annotation gets its own independent map.
   5760 
   5761  <p><strong>Keys must be distinct.</strong> If the same key is bound more than
   5762  once, map injection will fail. However, use {@link #permitDuplicates()} in
   5763  order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and
   5764  {@code Map<K, Set<Provider<V>>} will be added.
   5765 
   5766  <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will
   5767  throw an unchecked exception.
   5768 
   5769  <p><strong>Values must be non-null to use map injection.</strong> If any
   5770  value is null, map injection will fail (although injecting a map of providers
   5771  will not).
   5772 
   5773  @author dpb (a] google.com (David P. Baker)]]>
   5774     </doc>
   5775   </class>
   5776   <!-- end class com.google.inject.multibindings.MapBinder -->
   5777   <!-- start interface com.google.inject.multibindings.MapBinderBinding -->
   5778   <interface name="MapBinderBinding"    abstract="true"
   5779     static="false" final="false" visibility="public"
   5780     deprecated="not deprecated">
   5781     <method name="getMapKey" return="com.google.inject.Key&lt;T&gt;"
   5782       abstract="true" native="false" synchronized="false"
   5783       static="false" final="false" visibility="public"
   5784       deprecated="not deprecated">
   5785       <doc>
   5786       <![CDATA[Returns the {@link Key} for the map.]]>
   5787       </doc>
   5788     </method>
   5789     <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5790       abstract="true" native="false" synchronized="false"
   5791       static="false" final="false" visibility="public"
   5792       deprecated="not deprecated">
   5793       <doc>
   5794       <![CDATA[Returns the TypeLiteral describing the keys of the map.
   5795  <p>
   5796  The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
   5797  returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
   5798  <code>TypeLiteral&lt;String></code>.]]>
   5799       </doc>
   5800     </method>
   5801     <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5802       abstract="true" native="false" synchronized="false"
   5803       static="false" final="false" visibility="public"
   5804       deprecated="not deprecated">
   5805       <doc>
   5806       <![CDATA[Returns the TypeLiteral describing the values of the map.
   5807  <p>
   5808  The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
   5809  returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
   5810  <code>TypeLiteral&lt;Snack></code>.]]>
   5811       </doc>
   5812     </method>
   5813     <method name="getEntries" return="java.util.List&lt;java.util.Map.Entry&lt;?, com.google.inject.Binding&lt;?&gt;&gt;&gt;"
   5814       abstract="true" native="false" synchronized="false"
   5815       static="false" final="false" visibility="public"
   5816       deprecated="not deprecated">
   5817       <doc>
   5818       <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding
   5819  to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list.
   5820  This is only supported on bindings returned from an injector. This will throw
   5821  {@link UnsupportedOperationException} if it is called on an element retrieved from
   5822  {@link Elements#getElements}.
   5823  <p>
   5824  The elements will always match the type Map's generic type. For example, if getMapKey returns a
   5825  key of <code>Map&lt;String, Snack></code>, then this will always return a list of type
   5826  <code>List&lt;Map.Entry&lt;String, Binding&lt;Snack>>></code>.]]>
   5827       </doc>
   5828     </method>
   5829     <method name="permitsDuplicates" return="boolean"
   5830       abstract="true" native="false" synchronized="false"
   5831       static="false" final="false" visibility="public"
   5832       deprecated="not deprecated">
   5833       <doc>
   5834       <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned
   5835  from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
   5836  MapBinderBinding retrieved from {@link Elements#getElements}.]]>
   5837       </doc>
   5838     </method>
   5839     <method name="containsElement" return="boolean"
   5840       abstract="true" native="false" synchronized="false"
   5841       static="false" final="false" visibility="public"
   5842       deprecated="not deprecated">
   5843       <param name="element" type="com.google.inject.spi.Element"/>
   5844       <doc>
   5845       <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the
   5846  given Element in order to support building and injecting the map. This will work for
   5847  MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is
   5848  only necessary if you are working with elements retrieved from modules (without an Injector),
   5849  otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options.
   5850  <p>
   5851  If you need to introspect the details of the map, such as the keys, values or if it permits
   5852  duplicates, it is necessary to pass the elements through an Injector and use
   5853  {@link #getEntries()} and {@link #permitsDuplicates()}.]]>
   5854       </doc>
   5855     </method>
   5856     <doc>
   5857     <![CDATA[A binding for a MapBinder.
   5858  <p>
   5859  Although MapBinders may be injected through a variety of generic types (Map&lt;K, V>, Map
   5860  &lt;K, Provider&lt;V>>, Map&lt;K, Set&lt;V>>, Map<K, Set&lt;
   5861  Provider&lt;V>>, and even Set&lt;Map.Entry&lt;K, Provider&lt;V>>), a
   5862  MapBinderBinding exists only on the Binding associated with the Map&lt;K, V> key. Other
   5863  bindings can be validated to be derived from this MapBinderBinding using
   5864  {@link #containsElement(Element)}.
   5865  
   5866  @param <T> The fully qualified type of the map, including Map. For example:
   5867           <code>MapBinderBinding&lt;Map&lt;String, Snack>></code>
   5868  
   5869  @since 3.0
   5870  @author sameb (a] google.com (Sam Berlin)]]>
   5871     </doc>
   5872   </interface>
   5873   <!-- end interface com.google.inject.multibindings.MapBinderBinding -->
   5874   <!-- start class com.google.inject.multibindings.MapKey -->
   5875   <class name="MapKey"    abstract="true"
   5876     static="false" final="false" visibility="public"
   5877     deprecated="not deprecated">
   5878     <implements name="java.lang.annotation.Annotation"/>
   5879     <doc>
   5880     <![CDATA[Allows users define customized key type annotations for map bindings by annotating an annotation
   5881  of a {@code Map}'s key type. The custom key annotation can be applied to methods also annotated
   5882  with {@literal @}{@link ProvidesIntoMap}.
   5883  
   5884  <p>A {@link StringMapKey} and {@link ClassMapKey} are provided for convenience with maps whose
   5885  keys are strings or classes. For maps with enums or primitive types as keys, you must provide
   5886  your own MapKey annotation, such as this one for an enum:
   5887 
   5888  <pre>
   5889  {@literal @}MapKey(unwrapValue = true)
   5890  {@literal @}Retention(RUNTIME)
   5891  public {@literal @}interface MyCustomEnumKey {
   5892    MyCustomEnum value();
   5893  }
   5894  </pre>
   5895 
   5896  You can also use the whole annotation as the key, if {@code unwrapValue=false}.
   5897  When unwrapValue is false, the annotation type will be the key type for the injected map and
   5898  the annotation instances will be the key values. If {@code unwrapValue=true}, the value() type
   5899  will be the key type for injected map and the value() instances will be the keys values.
   5900 
   5901  @since 4.0]]>
   5902     </doc>
   5903   </class>
   5904   <!-- end class com.google.inject.multibindings.MapKey -->
   5905   <!-- start class com.google.inject.multibindings.Multibinder -->
   5906   <class name="Multibinder" extends="java.lang.Object"
   5907     abstract="true"
   5908     static="false" final="false" visibility="public"
   5909     deprecated="not deprecated">
   5910     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5911       abstract="false" native="false" synchronized="false"
   5912       static="true" final="false" visibility="public"
   5913       deprecated="not deprecated">
   5914       <param name="binder" type="com.google.inject.Binder"/>
   5915       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5916       <doc>
   5917       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5918  itself bound with no binding annotation.]]>
   5919       </doc>
   5920     </method>
   5921     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5922       abstract="false" native="false" synchronized="false"
   5923       static="true" final="false" visibility="public"
   5924       deprecated="not deprecated">
   5925       <param name="binder" type="com.google.inject.Binder"/>
   5926       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5927       <doc>
   5928       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5929  itself bound with no binding annotation.]]>
   5930       </doc>
   5931     </method>
   5932     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5933       abstract="false" native="false" synchronized="false"
   5934       static="true" final="false" visibility="public"
   5935       deprecated="not deprecated">
   5936       <param name="binder" type="com.google.inject.Binder"/>
   5937       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5938       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5939       <doc>
   5940       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5941  itself bound with {@code annotation}.]]>
   5942       </doc>
   5943     </method>
   5944     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5945       abstract="false" native="false" synchronized="false"
   5946       static="true" final="false" visibility="public"
   5947       deprecated="not deprecated">
   5948       <param name="binder" type="com.google.inject.Binder"/>
   5949       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5950       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5951       <doc>
   5952       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5953  itself bound with {@code annotation}.]]>
   5954       </doc>
   5955     </method>
   5956     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5957       abstract="false" native="false" synchronized="false"
   5958       static="true" final="false" visibility="public"
   5959       deprecated="not deprecated">
   5960       <param name="binder" type="com.google.inject.Binder"/>
   5961       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5962       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5963       <doc>
   5964       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5965  itself bound with {@code annotationType}.]]>
   5966       </doc>
   5967     </method>
   5968     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5969       abstract="false" native="false" synchronized="false"
   5970       static="true" final="false" visibility="public"
   5971       deprecated="not deprecated">
   5972       <param name="binder" type="com.google.inject.Binder"/>
   5973       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   5974       <doc>
   5975       <![CDATA[Returns a new multibinder that collects instances of the key's type in a {@link Set} that is
   5976  itself bound with the annotation (if any) of the key.
   5977 
   5978  @since 4.0]]>
   5979       </doc>
   5980     </method>
   5981     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5982       abstract="false" native="false" synchronized="false"
   5983       static="true" final="false" visibility="public"
   5984       deprecated="not deprecated">
   5985       <param name="binder" type="com.google.inject.Binder"/>
   5986       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5987       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5988       <doc>
   5989       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5990  itself bound with {@code annotationType}.]]>
   5991       </doc>
   5992     </method>
   5993     <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5994       abstract="true" native="false" synchronized="false"
   5995       static="false" final="false" visibility="public"
   5996       deprecated="not deprecated">
   5997       <doc>
   5998       <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are
   5999  bound, the one that gets included is arbitrary. When multiple modules contribute elements to
   6000  the set, this configuration option impacts all of them.
   6001 
   6002  @return this multibinder
   6003  @since 3.0]]>
   6004       </doc>
   6005     </method>
   6006     <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   6007       abstract="true" native="false" synchronized="false"
   6008       static="false" final="false" visibility="public"
   6009       deprecated="not deprecated">
   6010       <doc>
   6011       <![CDATA[Returns a binding builder used to add a new element in the set. Each
   6012  bound element must have a distinct value. Bound providers will be
   6013  evaluated each time the set is injected.
   6014 
   6015  <p>It is an error to call this method without also calling one of the
   6016  {@code to} methods on the returned binding builder.
   6017 
   6018  <p>Scoping elements independently is supported. Use the {@code in} method
   6019  to specify a binding scope.]]>
   6020       </doc>
   6021     </method>
   6022     <doc>
   6023     <![CDATA[An API to bind multiple values separately, only to later inject them as a
   6024  complete collection. Multibinder is intended for use in your application's
   6025  module:
   6026  <pre><code>
   6027  public class SnacksModule extends AbstractModule {
   6028    protected void configure() {
   6029      Multibinder&lt;Snack&gt; multibinder
   6030          = Multibinder.newSetBinder(binder(), Snack.class);
   6031      multibinder.addBinding().toInstance(new Twix());
   6032      multibinder.addBinding().toProvider(SnickersProvider.class);
   6033      multibinder.addBinding().to(Skittles.class);
   6034    }
   6035  }</code></pre>
   6036 
   6037  <p>With this binding, a {@link Set}{@code <Snack>} can now be injected:
   6038  <pre><code>
   6039  class SnackMachine {
   6040    {@literal @}Inject
   6041    public SnackMachine(Set&lt;Snack&gt; snacks) { ... }
   6042  }</code></pre>
   6043 
   6044  If desired, {@link Collection}{@code <Provider<Snack>>} can also be injected.
   6045 
   6046  <p>Contributing multibindings from different modules is supported. For
   6047  example, it is okay for both {@code CandyModule} and {@code ChipsModule}
   6048  to create their own {@code Multibinder<Snack>}, and to each contribute
   6049  bindings to the set of snacks. When that set is injected, it will contain
   6050  elements from both modules.
   6051 
   6052  <p>The set's iteration order is consistent with the binding order. This is
   6053  convenient when multiple elements are contributed by the same module because
   6054  that module can order its bindings appropriately. Avoid relying on the
   6055  iteration order of elements contributed by different modules, since there is
   6056  no equivalent mechanism to order modules.
   6057 
   6058  <p>The set is unmodifiable.  Elements can only be added to the set by
   6059  configuring the multibinder.  Elements can never be removed from the set.
   6060 
   6061  <p>Elements are resolved at set injection time. If an element is bound to a
   6062  provider, that provider's get method will be called each time the set is
   6063  injected (unless the binding is also scoped).
   6064 
   6065  <p>Annotations are be used to create different sets of the same element
   6066  type. Each distinct annotation gets its own independent collection of
   6067  elements.
   6068 
   6069  <p><strong>Elements must be distinct.</strong> If multiple bound elements
   6070  have the same value, set injection will fail.
   6071 
   6072  <p><strong>Elements must be non-null.</strong> If any set element is null,
   6073  set injection will fail.
   6074 
   6075  @author jessewilson (a] google.com (Jesse Wilson)]]>
   6076     </doc>
   6077   </class>
   6078   <!-- end class com.google.inject.multibindings.Multibinder -->
   6079   <!-- start interface com.google.inject.multibindings.MultibinderBinding -->
   6080   <interface name="MultibinderBinding"    abstract="true"
   6081     static="false" final="false" visibility="public"
   6082     deprecated="not deprecated">
   6083     <method name="getSetKey" return="com.google.inject.Key&lt;T&gt;"
   6084       abstract="true" native="false" synchronized="false"
   6085       static="false" final="false" visibility="public"
   6086       deprecated="not deprecated">
   6087       <doc>
   6088       <![CDATA[Returns the key for the set.]]>
   6089       </doc>
   6090     </method>
   6091     <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   6092       abstract="true" native="false" synchronized="false"
   6093       static="false" final="false" visibility="public"
   6094       deprecated="not deprecated">
   6095       <doc>
   6096       <![CDATA[Returns the TypeLiteral that describes the type of elements in the set.
   6097  <p>
   6098  The elements will always match the type Set's generic type. For example, if getSetKey returns a
   6099  key of <code>Set&lt;String></code>, then this will always return a
   6100  <code>TypeLiteral&lt;String></code>.]]>
   6101       </doc>
   6102     </method>
   6103     <method name="getElements" return="java.util.List&lt;com.google.inject.Binding&lt;?&gt;&gt;"
   6104       abstract="true" native="false" synchronized="false"
   6105       static="false" final="false" visibility="public"
   6106       deprecated="not deprecated">
   6107       <doc>
   6108       <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an
   6109  injector. This will throw {@link UnsupportedOperationException} if it is called on an element
   6110  retrieved from {@link Elements#getElements}.
   6111  <p>
   6112  The elements will always match the type Set's generic type. For example, if getSetKey returns a
   6113  key of <code>Set&lt;String></code>, then this will always return a list of type
   6114  <code>List&lt;Binding&lt;String>></code>.]]>
   6115       </doc>
   6116     </method>
   6117     <method name="permitsDuplicates" return="boolean"
   6118       abstract="true" native="false" synchronized="false"
   6119       static="false" final="false" visibility="public"
   6120       deprecated="not deprecated">
   6121       <doc>
   6122       <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned
   6123  from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
   6124  MultibinderBinding retrieved from {@link Elements#getElements}.]]>
   6125       </doc>
   6126     </method>
   6127     <method name="containsElement" return="boolean"
   6128       abstract="true" native="false" synchronized="false"
   6129       static="false" final="false" visibility="public"
   6130       deprecated="not deprecated">
   6131       <param name="element" type="com.google.inject.spi.Element"/>
   6132       <doc>
   6133       <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that
   6134  derive the elements of the set and other bindings that Multibinder uses internally. This will
   6135  work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}.
   6136  Usually this is only necessary if you are working with elements retrieved from modules (without
   6137  an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options.
   6138  <p>
   6139  If you need to introspect the details of the set, such as the values or if it permits
   6140  duplicates, it is necessary to pass the elements through an Injector and use
   6141  {@link #getElements()} and {@link #permitsDuplicates()}.]]>
   6142       </doc>
   6143     </method>
   6144     <doc>
   6145     <![CDATA[A binding for a Multibinder.
   6146  
   6147  @param <T> The fully qualified type of the set, including Set. For example:
   6148           <code>MultibinderBinding&lt;Set&lt;Boolean>></code>
   6149  
   6150  @since 3.0
   6151  @author sameb (a] google.com (Sam Berlin)]]>
   6152     </doc>
   6153   </interface>
   6154   <!-- end interface com.google.inject.multibindings.MultibinderBinding -->
   6155   <!-- start class com.google.inject.multibindings.MultibindingsScanner -->
   6156   <class name="MultibindingsScanner" extends="java.lang.Object"
   6157     abstract="false"
   6158     static="false" final="false" visibility="public"
   6159     deprecated="not deprecated">
   6160     <method name="asModule" return="com.google.inject.Module"
   6161       abstract="false" native="false" synchronized="false"
   6162       static="true" final="false" visibility="public"
   6163       deprecated="not deprecated">
   6164       <doc>
   6165       <![CDATA[Returns a module that, when installed, will scan all modules for methods with the annotations
   6166  {@literal @}{@link ProvidesIntoMap}, {@literal @}{@link ProvidesIntoSet}, and
   6167  {@literal @}{@link ProvidesIntoOptional}.
   6168  
   6169  <p>This is a convenience method, equivalent to doing
   6170  {@code binder().scanModulesForAnnotatedMethods(MultibindingsScanner.scanner())}.]]>
   6171       </doc>
   6172     </method>
   6173     <method name="scanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner"
   6174       abstract="false" native="false" synchronized="false"
   6175       static="true" final="false" visibility="public"
   6176       deprecated="not deprecated">
   6177       <doc>
   6178       <![CDATA[Returns a {@link ModuleAnnotatedMethodScanner} that, when bound, will scan all modules for
   6179  methods with the annotations {@literal @}{@link ProvidesIntoMap},
   6180  {@literal @}{@link ProvidesIntoSet}, and {@literal @}{@link ProvidesIntoOptional}.]]>
   6181       </doc>
   6182     </method>
   6183     <doc>
   6184     <![CDATA[Scans a module for annotations that signal multibindings, mapbindings, and optional bindings.
   6185 
   6186  @since 4.0]]>
   6187     </doc>
   6188   </class>
   6189   <!-- end class com.google.inject.multibindings.MultibindingsScanner -->
   6190   <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
   6191   <interface name="MultibindingsTargetVisitor"    abstract="true"
   6192     static="false" final="false" visibility="public"
   6193     deprecated="not deprecated">
   6194     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   6195     <method name="visit" return="V"
   6196       abstract="true" native="false" synchronized="false"
   6197       static="false" final="false" visibility="public"
   6198       deprecated="not deprecated">
   6199       <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding&lt;? extends T&gt;"/>
   6200       <doc>
   6201       <![CDATA[Visits a binding created through {@link Multibinder}.]]>
   6202       </doc>
   6203     </method>
   6204     <method name="visit" return="V"
   6205       abstract="true" native="false" synchronized="false"
   6206       static="false" final="false" visibility="public"
   6207       deprecated="not deprecated">
   6208       <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding&lt;? extends T&gt;"/>
   6209       <doc>
   6210       <![CDATA[Visits a binding created through {@link MapBinder}.]]>
   6211       </doc>
   6212     </method>
   6213     <method name="visit" return="V"
   6214       abstract="true" native="false" synchronized="false"
   6215       static="false" final="false" visibility="public"
   6216       deprecated="not deprecated">
   6217       <param name="optionalbinding" type="com.google.inject.multibindings.OptionalBinderBinding&lt;? extends T&gt;"/>
   6218       <doc>
   6219       <![CDATA[Visits a binding created through {@link OptionalBinder}.
   6220  
   6221  @since 4.0]]>
   6222       </doc>
   6223     </method>
   6224     <doc>
   6225     <![CDATA[A visitor for the multibinder extension.
   6226  <p>
   6227  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   6228  {@link Multibinder}, {@link MapBinder} or {@link OptionalBinderBinding} will be visited through
   6229  this interface.
   6230 
   6231  @since 3.0
   6232  @author sameb (a] google.com (Sam Berlin)]]>
   6233     </doc>
   6234   </interface>
   6235   <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
   6236   <!-- start class com.google.inject.multibindings.OptionalBinder -->
   6237   <class name="OptionalBinder" extends="java.lang.Object"
   6238     abstract="true"
   6239     static="false" final="false" visibility="public"
   6240     deprecated="not deprecated">
   6241     <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder&lt;T&gt;"
   6242       abstract="false" native="false" synchronized="false"
   6243       static="true" final="false" visibility="public"
   6244       deprecated="not deprecated">
   6245       <param name="binder" type="com.google.inject.Binder"/>
   6246       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   6247     </method>
   6248     <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder&lt;T&gt;"
   6249       abstract="false" native="false" synchronized="false"
   6250       static="true" final="false" visibility="public"
   6251       deprecated="not deprecated">
   6252       <param name="binder" type="com.google.inject.Binder"/>
   6253       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   6254     </method>
   6255     <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder&lt;T&gt;"
   6256       abstract="false" native="false" synchronized="false"
   6257       static="true" final="false" visibility="public"
   6258       deprecated="not deprecated">
   6259       <param name="binder" type="com.google.inject.Binder"/>
   6260       <param name="type" type="com.google.inject.Key&lt;T&gt;"/>
   6261     </method>
   6262     <method name="setDefault" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   6263       abstract="true" native="false" synchronized="false"
   6264       static="false" final="false" visibility="public"
   6265       deprecated="not deprecated">
   6266       <doc>
   6267       <![CDATA[Returns a binding builder used to set the default value that will be injected.
   6268  The binding set by this method will be ignored if {@link #setBinding} is called.
   6269  
   6270  <p>It is an error to call this method without also calling one of the {@code to}
   6271  methods on the returned binding builder.]]>
   6272       </doc>
   6273     </method>
   6274     <method name="setBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   6275       abstract="true" native="false" synchronized="false"
   6276       static="false" final="false" visibility="public"
   6277       deprecated="not deprecated">
   6278       <doc>
   6279       <![CDATA[Returns a binding builder used to set the actual value that will be injected.
   6280  This overrides any binding set by {@link #setDefault}.
   6281  
   6282  <p>It is an error to call this method without also calling one of the {@code to}
   6283  methods on the returned binding builder.]]>
   6284       </doc>
   6285     </method>
   6286     <doc>
   6287     <![CDATA[An API to bind optional values, optionally with a default value.
   6288  OptionalBinder fulfills two roles: <ol>
   6289  <li>It allows a framework to define an injection point that may or
   6290      may not be bound by users.
   6291  <li>It allows a framework to supply a default value that can be changed
   6292      by users.
   6293  </ol>
   6294  
   6295  <p>When an OptionalBinder is added, it will always supply the bindings:
   6296  {@code Optional<T>} and {@code Optional<Provider<T>>}.  If
   6297  {@link #setBinding} or {@link #setDefault} are called, it will also
   6298  bind {@code T}.
   6299  
   6300  <p>{@code setDefault} is intended for use by frameworks that need a default
   6301  value.  User code can call {@code setBinding} to override the default.
   6302  <b>Warning: Even if setBinding is called, the default binding
   6303  will still exist in the object graph.  If it is a singleton, it will be
   6304  instantiated in {@code Stage.PRODUCTION}.</b>
   6305  
   6306  <p>If setDefault or setBinding are linked to Providers, the Provider may return
   6307  {@code null}.  If it does, the Optional bindings will be absent.  Binding
   6308  setBinding to a Provider that returns null will not cause OptionalBinder
   6309  to fall back to the setDefault binding.
   6310  
   6311  <p>If neither setDefault nor setBinding are called, it will try to link to a
   6312  user-supplied binding of the same type.  If no binding exists, the optionals
   6313  will be absent.  Otherwise, if a user-supplied binding of that type exists,
   6314  or if setBinding or setDefault are called, the optionals will return present
   6315  if they are bound to a non-null value.
   6316 
   6317  <p>Values are resolved at injection time. If a value is bound to a
   6318  provider, that provider's get method will be called each time the optional
   6319  is injected (unless the binding is also scoped, or an optional of provider is
   6320  injected).
   6321  
   6322  <p>Annotations are used to create different optionals of the same key/value
   6323  type. Each distinct annotation gets its own independent binding.
   6324   
   6325  <pre><code>
   6326  public class FrameworkModule extends AbstractModule {
   6327    protected void configure() {
   6328      OptionalBinder.newOptionalBinder(binder(), Renamer.class);
   6329    }
   6330  }</code></pre>
   6331 
   6332  <p>With this module, an {@link Optional}{@code <Renamer>} can now be
   6333  injected.  With no other bindings, the optional will be absent.
   6334  Users can specify bindings in one of two ways:
   6335  
   6336  <p>Option 1:
   6337  <pre><code>
   6338  public class UserRenamerModule extends AbstractModule {
   6339    protected void configure() {
   6340      bind(Renamer.class).to(ReplacingRenamer.class);
   6341    }
   6342  }</code></pre>
   6343  
   6344  <p>or Option 2:
   6345  <pre><code>
   6346  public class UserRenamerModule extends AbstractModule {
   6347    protected void configure() {
   6348      OptionalBinder.newOptionalBinder(binder(), Renamer.class)
   6349          .setBinding().to(ReplacingRenamer.class);
   6350    }
   6351  }</code></pre>
   6352  With both options, the {@code Optional<Renamer>} will be present and supply the
   6353  ReplacingRenamer. 
   6354  
   6355  <p>Default values can be supplied using:
   6356  <pre><code>
   6357  public class FrameworkModule extends AbstractModule {
   6358    protected void configure() {
   6359      OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class))
   6360          .setDefault().toInstance(DEFAULT_LOOKUP_URL);
   6361    }
   6362  }</code></pre>
   6363  With the above module, code can inject an {@code @LookupUrl String} and it
   6364  will supply the DEFAULT_LOOKUP_URL.  A user can change this value by binding
   6365  <pre><code>
   6366  public class UserLookupModule extends AbstractModule {
   6367    protected void configure() {
   6368      OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class))
   6369          .setBinding().toInstance(CUSTOM_LOOKUP_URL);
   6370    }
   6371  }</code></pre>
   6372  ... which will override the default value.
   6373  
   6374  <p>If one module uses setDefault the only way to override the default is to use setBinding.
   6375  It is an error for a user to specify the binding without using OptionalBinder if
   6376  setDefault or setBinding are called.  For example, 
   6377  <pre><code>
   6378  public class FrameworkModule extends AbstractModule {
   6379    protected void configure() {
   6380      OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class))
   6381          .setDefault().toInstance(DEFAULT_LOOKUP_URL);
   6382    }
   6383  }
   6384  public class UserLookupModule extends AbstractModule {
   6385    protected void configure() {
   6386      bind(Key.get(String.class, LookupUrl.class)).toInstance(CUSTOM_LOOKUP_URL);
   6387    } 
   6388  }</code></pre>
   6389  ... would generate an error, because both the framework and the user are trying to bind
   6390  {@code @LookupUrl String}. 
   6391 
   6392  @author sameb (a] google.com (Sam Berlin)
   6393  @since 4.0]]>
   6394     </doc>
   6395   </class>
   6396   <!-- end class com.google.inject.multibindings.OptionalBinder -->
   6397   <!-- start interface com.google.inject.multibindings.OptionalBinderBinding -->
   6398   <interface name="OptionalBinderBinding"    abstract="true"
   6399     static="false" final="false" visibility="public"
   6400     deprecated="not deprecated">
   6401     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   6402       abstract="true" native="false" synchronized="false"
   6403       static="false" final="false" visibility="public"
   6404       deprecated="not deprecated">
   6405       <doc>
   6406       <![CDATA[Returns the {@link Key} for this binding.]]>
   6407       </doc>
   6408     </method>
   6409     <method name="getDefaultBinding" return="com.google.inject.Binding&lt;?&gt;"
   6410       abstract="true" native="false" synchronized="false"
   6411       static="false" final="false" visibility="public"
   6412       deprecated="not deprecated">
   6413       <doc>
   6414       <![CDATA[Returns the default binding (set by {@link OptionalBinder#setDefault}) if one exists or null
   6415  if no default binding is set. This will throw {@link UnsupportedOperationException} if it is
   6416  called on an element retrieved from {@link Elements#getElements}.
   6417  <p>
   6418  The Binding's type will always match the type Optional's generic type. For example, if getKey
   6419  returns a key of <code>Optional&lt;String></code>, then this will always return a
   6420  <code>Binding&lt;String></code>.]]>
   6421       </doc>
   6422     </method>
   6423     <method name="getActualBinding" return="com.google.inject.Binding&lt;?&gt;"
   6424       abstract="true" native="false" synchronized="false"
   6425       static="false" final="false" visibility="public"
   6426       deprecated="not deprecated">
   6427       <doc>
   6428       <![CDATA[Returns the actual binding (set by {@link OptionalBinder#setBinding}) or null if not set.
   6429  This will throw {@link UnsupportedOperationException} if it is called on an element retrieved
   6430  from {@link Elements#getElements}.
   6431  <p>
   6432  The Binding's type will always match the type Optional's generic type. For example, if getKey
   6433  returns a key of <code>Optional&lt;String></code>, then this will always return a
   6434  <code>Binding&lt;String></code>.]]>
   6435       </doc>
   6436     </method>
   6437     <method name="containsElement" return="boolean"
   6438       abstract="true" native="false" synchronized="false"
   6439       static="false" final="false" visibility="public"
   6440       deprecated="not deprecated">
   6441       <param name="element" type="com.google.inject.spi.Element"/>
   6442       <doc>
   6443       <![CDATA[Returns true if this OptionalBinder contains the given Element in order to build the optional
   6444  binding or uses the given Element in order to support building and injecting its data. This
   6445  will work for OptionalBinderBinding retrieved from an injector and
   6446  {@link Elements#getElements}. Usually this is only necessary if you are working with elements
   6447  retrieved from modules (without an Injector), otherwise {@link #getDefaultBinding} and
   6448  {@link #getActualBinding} are better options.]]>
   6449       </doc>
   6450     </method>
   6451     <doc>
   6452     <![CDATA[A binding for a OptionalBinder.
   6453  
   6454  <p>Although OptionalBinders may be injected through a variety of types
   6455  {@code T}, {@code Optional<T>}, {@code Optional<Provider<T>>}, etc..), an
   6456  OptionalBinderBinding exists only on the Binding associated with the
   6457  {@code Optional<T>} key.  Other bindings can be validated to be derived from this
   6458  OptionalBinderBinding using {@link #containsElement}.
   6459  
   6460  @param <T> The fully qualified type of the optional binding, including Optional.
   6461         For example: {@code Optional<String>}.
   6462  
   6463  @since 4.0
   6464  @author sameb (a] google.com (Sam Berlin)]]>
   6465     </doc>
   6466   </interface>
   6467   <!-- end interface com.google.inject.multibindings.OptionalBinderBinding -->
   6468   <!-- start class com.google.inject.multibindings.ProvidesIntoMap -->
   6469   <class name="ProvidesIntoMap"    abstract="true"
   6470     static="false" final="false" visibility="public"
   6471     deprecated="not deprecated">
   6472     <implements name="java.lang.annotation.Annotation"/>
   6473     <doc>
   6474     <![CDATA[Annotates methods of a {@link Module} to add items to a {@link MapBinder}.
   6475  The method's return type, binding annotation and additional key annotation determines
   6476  what Map this will contribute to. For example,
   6477 
   6478  <pre>
   6479  {@literal @}ProvidesIntoMap
   6480  {@literal @}StringMapKey("Foo")
   6481  {@literal @}Named("plugins")
   6482  Plugin provideFooUrl(FooManager fm) { returm fm.getPlugin(); }
   6483 
   6484  {@literal @}ProvidesIntoMap
   6485  {@literal @}StringMapKey("Bar")
   6486  {@literal @}Named("urls")
   6487  Plugin provideBarUrl(BarManager bm) { return bm.getPlugin(); }
   6488  </pre>
   6489 
   6490  will add two items to the {@code @Named("urls") Map<String, Plugin>} map. The key 'Foo'
   6491  will map to the provideFooUrl method, and the key 'Bar' will map to the provideBarUrl method.
   6492  The values are bound as providers and will be evaluated at injection time.
   6493 
   6494  <p>Because the key is specified as an annotation, only Strings, Classes, enums, primitive
   6495  types and annotation instances are supported as keys.
   6496 
   6497  @author sameb (a] google.com (Sam Berlin)
   6498  @since 4.0]]>
   6499     </doc>
   6500   </class>
   6501   <!-- end class com.google.inject.multibindings.ProvidesIntoMap -->
   6502   <!-- start class com.google.inject.multibindings.ProvidesIntoOptional -->
   6503   <class name="ProvidesIntoOptional"    abstract="true"
   6504     static="false" final="false" visibility="public"
   6505     deprecated="not deprecated">
   6506     <implements name="java.lang.annotation.Annotation"/>
   6507     <doc>
   6508     <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}.
   6509  The method's return type and binding annotation determines what Optional this will
   6510  contribute to. For example,
   6511 
   6512  <pre>
   6513  {@literal @}ProvidesIntoOptional(DEFAULT)
   6514  {@literal @}Named("url")
   6515  String provideFooUrl(FooManager fm) { returm fm.getUrl(); }
   6516 
   6517  {@literal @}ProvidesIntoOptional(ACTUAL)
   6518  {@literal @}Named("url")
   6519  String provideBarUrl(BarManager bm) { return bm.getUrl(); }
   6520  </pre>
   6521 
   6522  will set the default value of {@code @Named("url") Optional<String>} to foo's URL,
   6523  and then override it to bar's URL.
   6524 
   6525  @author sameb (a] google.com (Sam Berlin)
   6526  @since 4.0]]>
   6527     </doc>
   6528   </class>
   6529   <!-- end class com.google.inject.multibindings.ProvidesIntoOptional -->
   6530   <!-- start class com.google.inject.multibindings.ProvidesIntoOptional.Type -->
   6531   <class name="ProvidesIntoOptional.Type" extends="java.lang.Enum&lt;com.google.inject.multibindings.ProvidesIntoOptional.Type&gt;"
   6532     abstract="false"
   6533     static="true" final="true" visibility="public"
   6534     deprecated="not deprecated">
   6535     <method name="values" return="com.google.inject.multibindings.ProvidesIntoOptional.Type[]"
   6536       abstract="false" native="false" synchronized="false"
   6537       static="true" final="false" visibility="public"
   6538       deprecated="not deprecated">
   6539     </method>
   6540     <method name="valueOf" return="com.google.inject.multibindings.ProvidesIntoOptional.Type"
   6541       abstract="false" native="false" synchronized="false"
   6542       static="true" final="false" visibility="public"
   6543       deprecated="not deprecated">
   6544       <param name="name" type="java.lang.String"/>
   6545     </method>
   6546     <doc>
   6547     <![CDATA[@since 4.0]]>
   6548     </doc>
   6549   </class>
   6550   <!-- end class com.google.inject.multibindings.ProvidesIntoOptional.Type -->
   6551   <!-- start class com.google.inject.multibindings.ProvidesIntoSet -->
   6552   <class name="ProvidesIntoSet"    abstract="true"
   6553     static="false" final="false" visibility="public"
   6554     deprecated="not deprecated">
   6555     <implements name="java.lang.annotation.Annotation"/>
   6556     <doc>
   6557     <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}.
   6558  The method's return type and binding annotation determines what Set this will
   6559  contribute to. For example,
   6560 
   6561  <pre>
   6562  {@literal @}ProvidesIntoSet
   6563  {@literal @}Named("urls")
   6564  String provideFooUrl(FooManager fm) { returm fm.getUrl(); }
   6565 
   6566  {@literal @}ProvidesIntoSet
   6567  {@literal @}Named("urls")
   6568  String provideBarUrl(BarManager bm) { return bm.getUrl(); }
   6569  </pre>
   6570 
   6571  will add two items to the {@code @Named("urls") Set<String>} set. The items are bound as
   6572  providers and will be evaluated at injection time.
   6573 
   6574  @author sameb (a] google.com (Sam Berlin)
   6575  @since 4.0]]>
   6576     </doc>
   6577   </class>
   6578   <!-- end class com.google.inject.multibindings.ProvidesIntoSet -->
   6579   <!-- start class com.google.inject.multibindings.StringMapKey -->
   6580   <class name="StringMapKey"    abstract="true"
   6581     static="false" final="false" visibility="public"
   6582     deprecated="not deprecated">
   6583     <implements name="java.lang.annotation.Annotation"/>
   6584     <doc>
   6585     <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a string map key.
   6586 
   6587  @since 4.0]]>
   6588     </doc>
   6589   </class>
   6590   <!-- end class com.google.inject.multibindings.StringMapKey -->
   6591 </package>
   6592 <package name="com.google.inject.name">
   6593   <!-- start class com.google.inject.name.Named -->
   6594   <class name="Named"    abstract="true"
   6595     static="false" final="false" visibility="public"
   6596     deprecated="not deprecated">
   6597     <implements name="java.lang.annotation.Annotation"/>
   6598     <doc>
   6599     <![CDATA[Annotates named things.
   6600 
   6601  @author crazybob (a] google.com (Bob Lee)]]>
   6602     </doc>
   6603   </class>
   6604   <!-- end class com.google.inject.name.Named -->
   6605   <!-- start class com.google.inject.name.Names -->
   6606   <class name="Names" extends="java.lang.Object"
   6607     abstract="false"
   6608     static="false" final="false" visibility="public"
   6609     deprecated="not deprecated">
   6610     <method name="named" return="com.google.inject.name.Named"
   6611       abstract="false" native="false" synchronized="false"
   6612       static="true" final="false" visibility="public"
   6613       deprecated="not deprecated">
   6614       <param name="name" type="java.lang.String"/>
   6615       <doc>
   6616       <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]>
   6617       </doc>
   6618     </method>
   6619     <method name="bindProperties"
   6620       abstract="false" native="false" synchronized="false"
   6621       static="true" final="false" visibility="public"
   6622       deprecated="not deprecated">
   6623       <param name="binder" type="com.google.inject.Binder"/>
   6624       <param name="properties" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6625       <doc>
   6626       <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in
   6627  {@code properties}.]]>
   6628       </doc>
   6629     </method>
   6630     <method name="bindProperties"
   6631       abstract="false" native="false" synchronized="false"
   6632       static="true" final="false" visibility="public"
   6633       deprecated="not deprecated">
   6634       <param name="binder" type="com.google.inject.Binder"/>
   6635       <param name="properties" type="java.util.Properties"/>
   6636       <doc>
   6637       <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This
   6638  method binds all properties including those inherited from 
   6639  {@link Properties#defaults defaults}.]]>
   6640       </doc>
   6641     </method>
   6642     <doc>
   6643     <![CDATA[Utility methods for use with {@code @}{@link Named}.
   6644 
   6645  @author crazybob (a] google.com (Bob Lee)]]>
   6646     </doc>
   6647   </class>
   6648   <!-- end class com.google.inject.name.Names -->
   6649 </package>
   6650 <package name="com.google.inject.persist">
   6651   <!-- start class com.google.inject.persist.PersistFilter -->
   6652   <class name="PersistFilter" extends="java.lang.Object"
   6653     abstract="false"
   6654     static="false" final="true" visibility="public"
   6655     deprecated="not deprecated">
   6656     <implements name="javax.servlet.Filter"/>
   6657     <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService"
   6658       static="false" final="false" visibility="public"
   6659       deprecated="not deprecated">
   6660     </constructor>
   6661     <method name="init"
   6662       abstract="false" native="false" synchronized="false"
   6663       static="false" final="false" visibility="public"
   6664       deprecated="not deprecated">
   6665       <param name="filterConfig" type="javax.servlet.FilterConfig"/>
   6666       <exception name="ServletException" type="javax.servlet.ServletException"/>
   6667     </method>
   6668     <method name="destroy"
   6669       abstract="false" native="false" synchronized="false"
   6670       static="false" final="false" visibility="public"
   6671       deprecated="not deprecated">
   6672     </method>
   6673     <method name="doFilter"
   6674       abstract="false" native="false" synchronized="false"
   6675       static="false" final="false" visibility="public"
   6676       deprecated="not deprecated">
   6677       <param name="servletRequest" type="javax.servlet.ServletRequest"/>
   6678       <param name="servletResponse" type="javax.servlet.ServletResponse"/>
   6679       <param name="filterChain" type="javax.servlet.FilterChain"/>
   6680       <exception name="IOException" type="java.io.IOException"/>
   6681       <exception name="ServletException" type="javax.servlet.ServletException"/>
   6682     </method>
   6683     <doc>
   6684     <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have
   6685  guice-persist manage the lifecycle of active units of work.
   6686  The filter automatically starts and stops the relevant {@link PersistService}
   6687  upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and
   6688  {@link javax.servlet.Filter#destroy()} respectively.
   6689 
   6690  <p> To be able to use the open session-in-view pattern (i.e. work per request),
   6691  register this filter <b>once</b> in your Guice {@code ServletModule}. It is
   6692  important that you register this filter before any other filter.
   6693 
   6694  For multiple providers, you should register this filter once per provider, inside
   6695  a private module for each persist module installed (this must be the same private
   6696  module where the specific persist module is itself installed).
   6697 
   6698  <p>
   6699  Example configuration:
   6700  <pre>{@code
   6701   public class MyModule extends ServletModule {
   6702     public void configureServlets() {
   6703       filter("/*").through(PersistFilter.class);
   6704 
   6705       serve("/index.html").with(MyHtmlServlet.class);
   6706       // Etc.
   6707     }
   6708   }
   6709  }</pre>
   6710  <p>
   6711  This filter is thread safe and allows you to create injectors concurrently
   6712  and deploy multiple guice-persist modules within the same injector, or even
   6713  multiple injectors with persist modules withing the same JVM or web app.
   6714  <p>
   6715  This filter requires the Guice Servlet extension.
   6716 
   6717  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6718     </doc>
   6719   </class>
   6720   <!-- end class com.google.inject.persist.PersistFilter -->
   6721   <!-- start class com.google.inject.persist.PersistModule -->
   6722   <class name="PersistModule" extends="com.google.inject.AbstractModule"
   6723     abstract="true"
   6724     static="false" final="false" visibility="public"
   6725     deprecated="not deprecated">
   6726     <constructor name="PersistModule"
   6727       static="false" final="false" visibility="public"
   6728       deprecated="not deprecated">
   6729     </constructor>
   6730     <method name="configure"
   6731       abstract="false" native="false" synchronized="false"
   6732       static="false" final="true" visibility="protected"
   6733       deprecated="not deprecated">
   6734     </method>
   6735     <method name="configurePersistence"
   6736       abstract="true" native="false" synchronized="false"
   6737       static="false" final="false" visibility="protected"
   6738       deprecated="not deprecated">
   6739     </method>
   6740     <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
   6741       abstract="true" native="false" synchronized="false"
   6742       static="false" final="false" visibility="protected"
   6743       deprecated="not deprecated">
   6744     </method>
   6745     <doc>
   6746     <![CDATA[Install this module to add guice-persist library support for JPA persistence
   6747  providers.
   6748 
   6749  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6750     </doc>
   6751   </class>
   6752   <!-- end class com.google.inject.persist.PersistModule -->
   6753   <!-- start interface com.google.inject.persist.PersistService -->
   6754   <interface name="PersistService"    abstract="true"
   6755     static="false" final="false" visibility="public"
   6756     deprecated="not deprecated">
   6757     <method name="start"
   6758       abstract="true" native="false" synchronized="false"
   6759       static="false" final="false" visibility="public"
   6760       deprecated="not deprecated">
   6761       <doc>
   6762       <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for
   6763  use. For instance, with JPA, it creates an EntityManagerFactory and may
   6764  open connection pools. This method must be called by your code prior to
   6765  using any guice-persist or JPA artifacts. If already started,
   6766  calling this method does nothing, if already stopped, it also does
   6767  nothing.]]>
   6768       </doc>
   6769     </method>
   6770     <method name="stop"
   6771       abstract="true" native="false" synchronized="false"
   6772       static="false" final="false" visibility="public"
   6773       deprecated="not deprecated">
   6774       <doc>
   6775       <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it
   6776  closes the {@code EntityManagerFactory}. If already stopped, calling this
   6777  method does nothing. If not yet started, it also does nothing.]]>
   6778       </doc>
   6779     </method>
   6780     <doc>
   6781     <![CDATA[Persistence provider service. Use this to manage the overall
   6782  startup and stop of the persistence module(s).
   6783 
   6784  TODO(dhanji): Integrate with Service API when appropriate.
   6785 
   6786  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6787     </doc>
   6788   </interface>
   6789   <!-- end interface com.google.inject.persist.PersistService -->
   6790   <!-- start class com.google.inject.persist.Transactional -->
   6791   <class name="Transactional"    abstract="true"
   6792     static="false" final="false" visibility="public"
   6793     deprecated="not deprecated">
   6794     <implements name="java.lang.annotation.Annotation"/>
   6795     <doc>
   6796     <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality.
   6797  Consult the documentation on https://github.com/google/guice/wiki/GuicePersist for detailed
   6798  semantics.
   6799  Marking a method {@code @Transactional} will start a new transaction before the method
   6800  executes and commit it after the method returns.
   6801  <p>
   6802  If the method throws an exception, the transaction will be rolled back <em>unless</em>
   6803  you have specifically requested not to in the {@link #ignore()} clause.
   6804  <p>
   6805  Similarly, the set of exceptions that will trigger a rollback can be defined in
   6806  the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a
   6807  rollback.
   6808 
   6809  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6810     </doc>
   6811   </class>
   6812   <!-- end class com.google.inject.persist.Transactional -->
   6813   <!-- start interface com.google.inject.persist.UnitOfWork -->
   6814   <interface name="UnitOfWork"    abstract="true"
   6815     static="false" final="false" visibility="public"
   6816     deprecated="not deprecated">
   6817     <method name="begin"
   6818       abstract="true" native="false" synchronized="false"
   6819       static="false" final="false" visibility="public"
   6820       deprecated="not deprecated">
   6821       <doc>
   6822       <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there
   6823  is already one open, the invocation will do nothing. In this way, you can define arbitrary
   6824  units-of-work that nest within one another safely.
   6825 
   6826  Transaction semantics are not affected.]]>
   6827       </doc>
   6828     </method>
   6829     <method name="end"
   6830       abstract="true" native="false" synchronized="false"
   6831       static="false" final="false" visibility="public"
   6832       deprecated="not deprecated">
   6833       <doc>
   6834       <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data
   6835  layer to close. If there is no Unit of work open, then the call returns silently. You can
   6836  safely invoke end() repeatedly.
   6837  <p>
   6838  Transaction semantics are not affected.]]>
   6839       </doc>
   6840     </method>
   6841     <doc>
   6842     <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do
   6843  work in non-request, non-transactional threads. Or where more fine-grained control over the unit
   6844  of work is required. Starting and ending a unit of work directly corresponds to opening and
   6845  closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively.
   6846  <p> The
   6847  Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to
   6848  end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning
   6849  behind thread-locality of Unit of Work semantics).
   6850 
   6851  <ul>
   6852    <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li>
   6853    <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li>
   6854    <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a
   6855        background or bootstrap thread) is probably a good use case.</li>
   6856   </ul>
   6857 
   6858  @author Dhanji R. Prasanna (dhanji@gmail com)]]>
   6859     </doc>
   6860   </interface>
   6861   <!-- end interface com.google.inject.persist.UnitOfWork -->
   6862 </package>
   6863 <package name="com.google.inject.persist.finder">
   6864   <!-- start class com.google.inject.persist.finder.DynamicFinder -->
   6865   <class name="DynamicFinder" extends="java.lang.Object"
   6866     abstract="false"
   6867     static="false" final="true" visibility="public"
   6868     deprecated="not deprecated">
   6869     <constructor name="DynamicFinder" type="java.lang.reflect.Method"
   6870       static="false" final="false" visibility="public"
   6871       deprecated="not deprecated">
   6872     </constructor>
   6873     <method name="from" return="com.google.inject.persist.finder.DynamicFinder"
   6874       abstract="false" native="false" synchronized="false"
   6875       static="true" final="false" visibility="public"
   6876       deprecated="not deprecated">
   6877       <param name="method" type="java.lang.reflect.Method"/>
   6878       <doc>
   6879       <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null.
   6880 
   6881  @param method a method you want to test as a dynamic finder]]>
   6882       </doc>
   6883     </method>
   6884     <method name="metadata" return="com.google.inject.persist.finder.Finder"
   6885       abstract="false" native="false" synchronized="false"
   6886       static="false" final="false" visibility="public"
   6887       deprecated="not deprecated">
   6888     </method>
   6889     <doc>
   6890     <![CDATA[Utility that helps you introspect dynamic finder methods.
   6891 
   6892  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6893     </doc>
   6894   </class>
   6895   <!-- end class com.google.inject.persist.finder.DynamicFinder -->
   6896   <!-- start class com.google.inject.persist.finder.Finder -->
   6897   <class name="Finder"    abstract="true"
   6898     static="false" final="false" visibility="public"
   6899     deprecated="not deprecated">
   6900     <implements name="java.lang.annotation.Annotation"/>
   6901     <doc>
   6902     <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the
   6903  specified JPAQL query. Provides result auto-boxing and automatic parameter binding.
   6904 
   6905  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6906     </doc>
   6907   </class>
   6908   <!-- end class com.google.inject.persist.finder.Finder -->
   6909   <!-- start class com.google.inject.persist.finder.FirstResult -->
   6910   <class name="FirstResult"    abstract="true"
   6911     static="false" final="false" visibility="public"
   6912     deprecated="not deprecated">
   6913     <implements name="java.lang.annotation.Annotation"/>
   6914     <doc>
   6915     <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
   6916  the index of the first result in the result set you are interested in.
   6917  Useful for paging result sets. Complemented by {@link MaxResults}.
   6918 
   6919  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6920     </doc>
   6921   </class>
   6922   <!-- end class com.google.inject.persist.finder.FirstResult -->
   6923   <!-- start class com.google.inject.persist.finder.MaxResults -->
   6924   <class name="MaxResults"    abstract="true"
   6925     static="false" final="false" visibility="public"
   6926     deprecated="not deprecated">
   6927     <implements name="java.lang.annotation.Annotation"/>
   6928     <doc>
   6929     <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
   6930  the maximum size of returned result window. Usefule for paging result sets.
   6931  Complement of {@link FirstResult}.
   6932 
   6933  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6934     </doc>
   6935   </class>
   6936   <!-- end class com.google.inject.persist.finder.MaxResults -->
   6937 </package>
   6938 <package name="com.google.inject.persist.jpa">
   6939   <!-- start class com.google.inject.persist.jpa.JpaPersistModule -->
   6940   <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule"
   6941     abstract="false"
   6942     static="false" final="true" visibility="public"
   6943     deprecated="not deprecated">
   6944     <constructor name="JpaPersistModule" type="java.lang.String"
   6945       static="false" final="false" visibility="public"
   6946       deprecated="not deprecated">
   6947     </constructor>
   6948     <method name="configurePersistence"
   6949       abstract="false" native="false" synchronized="false"
   6950       static="false" final="false" visibility="protected"
   6951       deprecated="not deprecated">
   6952     </method>
   6953     <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
   6954       abstract="false" native="false" synchronized="false"
   6955       static="false" final="false" visibility="protected"
   6956       deprecated="not deprecated">
   6957     </method>
   6958     <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule"
   6959       abstract="false" native="false" synchronized="false"
   6960       static="false" final="false" visibility="public"
   6961       deprecated="not deprecated">
   6962       <param name="properties" type="java.util.Map&lt;?, ?&gt;"/>
   6963       <doc>
   6964       <![CDATA[Configures the JPA persistence provider with a set of properties.
   6965  
   6966  @param properties A set of name value pairs that configure a JPA persistence
   6967      provider as per the specification.
   6968  @since 4.0 (since 3.0 with a parameter type of {@code java.util.Properties})]]>
   6969       </doc>
   6970     </method>
   6971     <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule"
   6972       abstract="false" native="false" synchronized="false"
   6973       static="false" final="false" visibility="public"
   6974       deprecated="not deprecated">
   6975       <param name="iface" type="java.lang.Class&lt;T&gt;"/>
   6976       <doc>
   6977       <![CDATA[Adds an interface to this module to use as a dynamic finder.
   6978 
   6979  @param iface Any interface type whose methods are all dynamic finders.]]>
   6980       </doc>
   6981     </method>
   6982     <doc>
   6983     <![CDATA[JPA provider for guice persist.
   6984 
   6985  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6986     </doc>
   6987   </class>
   6988   <!-- end class com.google.inject.persist.jpa.JpaPersistModule -->
   6989 </package>
   6990 <package name="com.google.inject.servlet">
   6991   <!-- start class com.google.inject.servlet.GuiceFilter -->
   6992   <class name="GuiceFilter" extends="java.lang.Object"
   6993     abstract="false"
   6994     static="false" final="false" visibility="public"
   6995     deprecated="not deprecated">
   6996     <implements name="javax.servlet.Filter"/>
   6997     <constructor name="GuiceFilter"
   6998       static="false" final="false" visibility="public"
   6999       deprecated="not deprecated">
   7000     </constructor>
   7001     <method name="doFilter"
   7002       abstract="false" native="false" synchronized="false"
   7003       static="false" final="false" visibility="public"
   7004       deprecated="not deprecated">
   7005       <param name="servletRequest" type="javax.servlet.ServletRequest"/>
   7006       <param name="servletResponse" type="javax.servlet.ServletResponse"/>
   7007       <param name="filterChain" type="javax.servlet.FilterChain"/>
   7008       <exception name="IOException" type="java.io.IOException"/>
   7009       <exception name="ServletException" type="javax.servlet.ServletException"/>
   7010     </method>
   7011     <method name="init"
   7012       abstract="false" native="false" synchronized="false"
   7013       static="false" final="false" visibility="public"
   7014       deprecated="not deprecated">
   7015       <param name="filterConfig" type="javax.servlet.FilterConfig"/>
   7016       <exception name="ServletException" type="javax.servlet.ServletException"/>
   7017     </method>
   7018     <method name="destroy"
   7019       abstract="false" native="false" synchronized="false"
   7020       static="false" final="false" visibility="public"
   7021       deprecated="not deprecated">
   7022     </method>
   7023     <doc>
   7024     <![CDATA[<p>
   7025  Apply this filter in web.xml above all other filters (typically), to all requests where you plan
   7026   to use servlet scopes. This is also needed in order to dispatch requests to injectable filters
   7027   and servlets:
   7028   <pre>
   7029   &lt;filter&gt;
   7030     &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
   7031     &lt;filter-class&gt;<b>com.google.inject.servlet.GuiceFilter</b>&lt;/filter-class&gt;
   7032   &lt;/filter&gt;
   7033 
   7034   &lt;filter-mapping&gt;
   7035     &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
   7036     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
   7037   &lt;/filter-mapping&gt;
   7038   </pre>
   7039 
   7040  This filter must appear before every filter that makes use of Guice injection or servlet
   7041  scopes functionality. Typically, you will only register this filter in web.xml and register
   7042  any other filters (and servlets) using a {@link ServletModule}.
   7043 
   7044  @author crazybob (a] google.com (Bob Lee)
   7045  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   7046     </doc>
   7047   </class>
   7048   <!-- end class com.google.inject.servlet.GuiceFilter -->
   7049   <!-- start class com.google.inject.servlet.GuiceServletContextListener -->
   7050   <class name="GuiceServletContextListener" extends="java.lang.Object"
   7051     abstract="true"
   7052     static="false" final="false" visibility="public"
   7053     deprecated="not deprecated">
   7054     <implements name="javax.servlet.ServletContextListener"/>
   7055     <constructor name="GuiceServletContextListener"
   7056       static="false" final="false" visibility="public"
   7057       deprecated="not deprecated">
   7058     </constructor>
   7059     <method name="contextInitialized"
   7060       abstract="false" native="false" synchronized="false"
   7061       static="false" final="false" visibility="public"
   7062       deprecated="not deprecated">
   7063       <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/>
   7064     </method>
   7065     <method name="contextDestroyed"
   7066       abstract="false" native="false" synchronized="false"
   7067       static="false" final="false" visibility="public"
   7068       deprecated="not deprecated">
   7069       <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/>
   7070     </method>
   7071     <method name="getInjector" return="com.google.inject.Injector"
   7072       abstract="true" native="false" synchronized="false"
   7073       static="false" final="false" visibility="protected"
   7074       deprecated="not deprecated">
   7075       <doc>
   7076       <![CDATA[Override this method to create (or otherwise obtain a reference to) your
   7077  injector.]]>
   7078       </doc>
   7079     </method>
   7080     <doc>
   7081     <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener}
   7082  class as a logical place to create and configure your injector. This will ensure the injector
   7083  is created when the web application is deployed.
   7084  
   7085  @author Kevin Bourrillion (kevinb (a] google.com)
   7086  @since 2.0]]>
   7087     </doc>
   7088   </class>
   7089   <!-- end class com.google.inject.servlet.GuiceServletContextListener -->
   7090   <!-- start interface com.google.inject.servlet.InstanceFilterBinding -->
   7091   <interface name="InstanceFilterBinding"    abstract="true"
   7092     static="false" final="false" visibility="public"
   7093     deprecated="not deprecated">
   7094     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   7095     <method name="getFilterInstance" return="javax.servlet.Filter"
   7096       abstract="true" native="false" synchronized="false"
   7097       static="false" final="false" visibility="public"
   7098       deprecated="not deprecated">
   7099       <doc>
   7100       <![CDATA[Returns the filter instance that will be used.]]>
   7101       </doc>
   7102     </method>
   7103     <doc>
   7104     <![CDATA[A binding to a single instance of a filter. 
   7105 
   7106  @author sameb (a] google.com
   7107  @since 3.0]]>
   7108     </doc>
   7109   </interface>
   7110   <!-- end interface com.google.inject.servlet.InstanceFilterBinding -->
   7111   <!-- start interface com.google.inject.servlet.InstanceServletBinding -->
   7112   <interface name="InstanceServletBinding"    abstract="true"
   7113     static="false" final="false" visibility="public"
   7114     deprecated="not deprecated">
   7115     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   7116     <method name="getServletInstance" return="javax.servlet.http.HttpServlet"
   7117       abstract="true" native="false" synchronized="false"
   7118       static="false" final="false" visibility="public"
   7119       deprecated="not deprecated">
   7120       <doc>
   7121       <![CDATA[Returns the servlet instance that will be used.]]>
   7122       </doc>
   7123     </method>
   7124     <doc>
   7125     <![CDATA[A binding to a single instance of a servlet. 
   7126 
   7127  @author sameb (a] google.com
   7128  @since 3.0]]>
   7129     </doc>
   7130   </interface>
   7131   <!-- end interface com.google.inject.servlet.InstanceServletBinding -->
   7132   <!-- start interface com.google.inject.servlet.LinkedFilterBinding -->
   7133   <interface name="LinkedFilterBinding"    abstract="true"
   7134     static="false" final="false" visibility="public"
   7135     deprecated="not deprecated">
   7136     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   7137     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends javax.servlet.Filter&gt;"
   7138       abstract="true" native="false" synchronized="false"
   7139       static="false" final="false" visibility="public"
   7140       deprecated="not deprecated">
   7141       <doc>
   7142       <![CDATA[Returns the key used to lookup the filter instance.]]>
   7143       </doc>
   7144     </method>
   7145     <doc>
   7146     <![CDATA[A linked binding to a filter. 
   7147 
   7148  @author sameb (a] google.com
   7149  @since 3.0]]>
   7150     </doc>
   7151   </interface>
   7152   <!-- end interface com.google.inject.servlet.LinkedFilterBinding -->
   7153   <!-- start interface com.google.inject.servlet.LinkedServletBinding -->
   7154   <interface name="LinkedServletBinding"    abstract="true"
   7155     static="false" final="false" visibility="public"
   7156     deprecated="not deprecated">
   7157     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   7158     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends javax.servlet.http.HttpServlet&gt;"
   7159       abstract="true" native="false" synchronized="false"
   7160       static="false" final="false" visibility="public"
   7161       deprecated="not deprecated">
   7162       <doc>
   7163       <![CDATA[Returns the key used to lookup the servlet instance.]]>
   7164       </doc>
   7165     </method>
   7166     <doc>
   7167     <![CDATA[A linked binding to a servlet. 
   7168 
   7169  @author sameb (a] google.com
   7170  @since 3.0]]>
   7171     </doc>
   7172   </interface>
   7173   <!-- end interface com.google.inject.servlet.LinkedServletBinding -->
   7174   <!-- start class com.google.inject.servlet.RequestParameters -->
   7175   <class name="RequestParameters"    abstract="true"
   7176     static="false" final="false" visibility="public"
   7177     deprecated="not deprecated">
   7178     <implements name="java.lang.annotation.Annotation"/>
   7179     <doc>
   7180     <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>}
   7181  when you want the HTTP request parameter map to be injected.
   7182 
   7183  @author crazybob (a] google.com (Bob Lee)]]>
   7184     </doc>
   7185   </class>
   7186   <!-- end class com.google.inject.servlet.RequestParameters -->
   7187   <!-- start class com.google.inject.servlet.RequestScoped -->
   7188   <class name="RequestScoped"    abstract="true"
   7189     static="false" final="false" visibility="public"
   7190     deprecated="not deprecated">
   7191     <implements name="java.lang.annotation.Annotation"/>
   7192     <doc>
   7193     <![CDATA[Apply this to implementation classes when you want one instance per request.
   7194 
   7195  @author crazybob (a] google.com (Bob Lee)]]>
   7196     </doc>
   7197   </class>
   7198   <!-- end class com.google.inject.servlet.RequestScoped -->
   7199   <!-- start class com.google.inject.servlet.ScopingException -->
   7200   <class name="ScopingException" extends="java.lang.IllegalStateException"
   7201     abstract="false"
   7202     static="false" final="true" visibility="public"
   7203     deprecated="not deprecated">
   7204     <constructor name="ScopingException" type="java.lang.String"
   7205       static="false" final="false" visibility="public"
   7206       deprecated="not deprecated">
   7207     </constructor>
   7208     <doc>
   7209     <![CDATA[Exception thrown when there was a failure entering request scope.
   7210 
   7211  @author Chris Nokleberg
   7212  @since 4.0]]>
   7213     </doc>
   7214   </class>
   7215   <!-- end class com.google.inject.servlet.ScopingException -->
   7216   <!-- start class com.google.inject.servlet.ScopingOnly -->
   7217   <class name="ScopingOnly"    abstract="true"
   7218     static="false" final="false" visibility="public"
   7219     deprecated="not deprecated">
   7220     <implements name="java.lang.annotation.Annotation"/>
   7221     <doc>
   7222     <![CDATA[Annotates a {@link GuiceFilter} that provides scope functionality, but
   7223  doesn't dispatch to {@link ServletModule} bound servlets or filters.
   7224 
   7225  @author iqshum (a] google.com (Isaac Shum)
   7226  @since 4.0]]>
   7227     </doc>
   7228   </class>
   7229   <!-- end class com.google.inject.servlet.ScopingOnly -->
   7230   <!-- start class com.google.inject.servlet.ServletModule -->
   7231   <class name="ServletModule" extends="com.google.inject.AbstractModule"
   7232     abstract="false"
   7233     static="false" final="false" visibility="public"
   7234     deprecated="not deprecated">
   7235     <constructor name="ServletModule"
   7236       static="false" final="false" visibility="public"
   7237       deprecated="not deprecated">
   7238     </constructor>
   7239     <method name="configure"
   7240       abstract="false" native="false" synchronized="false"
   7241       static="false" final="true" visibility="protected"
   7242       deprecated="not deprecated">
   7243     </method>
   7244     <method name="configureServlets"
   7245       abstract="false" native="false" synchronized="false"
   7246       static="false" final="false" visibility="protected"
   7247       deprecated="not deprecated">
   7248       <doc>
   7249       <![CDATA[<h3>Servlet Mapping EDSL</h3>
   7250 
   7251  <p> Part of the EDSL builder language for configuring servlets
   7252  and filters with guice-servlet. Think of this as an in-code replacement for web.xml.
   7253  Filters and servlets are configured here using simple java method calls. Here is a typical
   7254  example of registering a filter when creating your Guice injector:
   7255 
   7256  <pre>
   7257    Guice.createInjector(..., new ServletModule() {
   7258 
   7259      {@literal @}Override
   7260      protected void configureServlets() {
   7261        <b>serve("*.html").with(MyServlet.class)</b>
   7262      }
   7263    }
   7264  </pre>
   7265 
   7266  This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service
   7267  any web pages ending in {@code .html}. You can also use a path-style syntax to register
   7268  servlets:
   7269 
   7270  <pre>
   7271        <b>serve("/my/*").with(MyServlet.class)</b>
   7272  </pre>
   7273 
   7274  Every servlet (or filter) is required to be a singleton. If you cannot annotate the class
   7275  directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in
   7276  your module. Mapping a servlet that is bound under any other scope is an error.
   7277 
   7278  <p>
   7279  <h4>Dispatch Order</h4>
   7280  You are free to register as many servlets and filters as you like this way. They will
   7281  be compared and dispatched in the order in which the filter methods are called:
   7282 
   7283  <pre>
   7284 
   7285    Guice.createInjector(..., new ServletModule() {
   7286 
   7287      {@literal @}Override
   7288      protected void configureServlets() {
   7289        filter("/*").through(MyFilter.class);
   7290        filter("*.css").through(MyCssFilter.class);
   7291        filter("*.jpg").through(new MyJpgFilter());
   7292        // etc..
   7293 
   7294        serve("*.html").with(MyServlet.class);
   7295        serve("/my/*").with(MyServlet.class);
   7296        serve("*.jpg").with(new MyServlet());
   7297        // etc..
   7298       }
   7299     }
   7300  </pre>
   7301  This will traverse down the list of rules in lexical order. For example, a url
   7302   "{@code /my/file.js}" (after it runs through the matching filters) will first
   7303   be compared against the servlet mapping:
   7304  
   7305  <pre>
   7306        serve("*.html").with(MyServlet.class);
   7307  </pre>
   7308  And failing that, it will descend to the next servlet mapping:
   7309 
   7310  <pre>
   7311        serve("/my/*").with(MyServlet.class);
   7312  </pre>
   7313 
   7314  Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These
   7315  two mapping rules can also be written in more compact form using varargs syntax:
   7316 
   7317  <pre>
   7318        serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class);
   7319  </pre>
   7320  
   7321  This way you can map several URI patterns to the same servlet. A similar syntax is
   7322  also available for filter mappings.
   7323 
   7324  <p>
   7325  <h4>Regular Expressions</h4>
   7326  You can also map servlets (or filters) to URIs using regular expressions:
   7327  <pre>
   7328     <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b>
   7329  </pre>
   7330 
   7331  This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as:
   7332  <ul>
   7333  <li>http://www.google.com/ajax.html</li>
   7334  <li>http://www.google.com/content/ajax/index</li>
   7335  <li>http://www.google.com/it/is_totally_ajaxian</li>
   7336  </ul>
   7337 
   7338 
   7339  <h3>Initialization Parameters</h3>
   7340 
   7341  Servlets (and filters) allow you to pass in init params
   7342  using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to
   7343  Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter
   7344  name/value pairs. For example, to initialize {@code MyServlet} with two parameters
   7345  ({@code name="Dhanji", site="google.com"}) you could write:
   7346 
   7347  <pre>
   7348   Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;();
   7349   params.put("name", "Dhanji");
   7350   params.put("site", "google.com");
   7351 
   7352   ...
   7353       serve("/*").with(MyServlet.class, <b>params</b>)
   7354  </pre>
   7355 
   7356  <p>
   7357  <h3>Binding Keys</h3>
   7358 
   7359  You can also bind keys rather than classes. This lets you hide
   7360  implementations with package-local visbility and expose them using
   7361  only a Guice module and an annotation:
   7362 
   7363  <pre>
   7364   ...
   7365       filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>);
   7366  </pre>
   7367 
   7368  Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a
   7369  custom binding annotation. Elsewhere (in one of your own modules) you can bind this
   7370  filter's implementation:
   7371 
   7372  <pre>
   7373    bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class);
   7374  </pre>
   7375 
   7376  See {@link com.google.inject.Binder} for more information on binding syntax.
   7377 
   7378  <p>
   7379  <h3>Multiple Modules</h3>
   7380 
   7381  It is sometimes useful to capture servlet and filter mappings from multiple different
   7382  modules. This is essential if you want to package and offer drop-in Guice plugins that
   7383  provide servlet functionality.
   7384 
   7385  <p>
   7386  Guice Servlet allows you to register several instances of {@code ServletModule} to your
   7387  injector. The order in which these modules are installed determines the dispatch order
   7388  of filters and the precedence order of servlets. For example, if you had two servlet modules,
   7389  {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped
   7390  to the same URI pattern, {@code "/*"}:
   7391 
   7392  <p>
   7393  In {@code RpcModule}:
   7394  <pre>
   7395      filter("/*").through(RpcFilter.class);
   7396  </pre>
   7397 
   7398  In {@code WebServiceModule}:
   7399  <pre>
   7400      filter("/*").through(WebServiceFilter.class);
   7401  </pre>
   7402 
   7403  Then the order in which these filters are dispatched is determined by the order in which
   7404  the modules are installed:
   7405 
   7406  <pre>
   7407    <b>install(new WebServiceModule());</b>
   7408    install(new RpcModule());
   7409  </pre>
   7410 
   7411  In the case shown above {@code WebServiceFilter} will run first.
   7412  
   7413  @since 2.0]]>
   7414       </doc>
   7415     </method>
   7416     <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   7417       abstract="false" native="false" synchronized="false"
   7418       static="false" final="true" visibility="protected"
   7419       deprecated="not deprecated">
   7420       <param name="urlPattern" type="java.lang.String"/>
   7421       <param name="morePatterns" type="java.lang.String[]"/>
   7422       <doc>
   7423       <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
   7424  @since 2.0]]>
   7425       </doc>
   7426     </method>
   7427     <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   7428       abstract="false" native="false" synchronized="false"
   7429       static="false" final="true" visibility="protected"
   7430       deprecated="not deprecated">
   7431       <param name="regex" type="java.lang.String"/>
   7432       <param name="regexes" type="java.lang.String[]"/>
   7433       <doc>
   7434       <![CDATA[@param regex Any Java-style regular expression.
   7435  @since 2.0]]>
   7436       </doc>
   7437     </method>
   7438     <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   7439       abstract="false" native="false" synchronized="false"
   7440       static="false" final="true" visibility="protected"
   7441       deprecated="not deprecated">
   7442       <param name="urlPattern" type="java.lang.String"/>
   7443       <param name="morePatterns" type="java.lang.String[]"/>
   7444       <doc>
   7445       <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
   7446  @since 2.0]]>
   7447       </doc>
   7448     </method>
   7449     <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   7450       abstract="false" native="false" synchronized="false"
   7451       static="false" final="true" visibility="protected"
   7452       deprecated="not deprecated">
   7453       <param name="regex" type="java.lang.String"/>
   7454       <param name="regexes" type="java.lang.String[]"/>
   7455       <doc>
   7456       <![CDATA[@param regex Any Java-style regular expression.
   7457  @since 2.0]]>
   7458       </doc>
   7459     </method>
   7460     <method name="getServletContext" return="javax.servlet.ServletContext"
   7461       abstract="false" native="false" synchronized="false"
   7462       static="false" final="true" visibility="protected"
   7463       deprecated="not deprecated">
   7464       <doc>
   7465       <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to
   7466  create your injector. Otherwise, it returns null.
   7467  @return The current servlet context.
   7468  @since 3.0]]>
   7469       </doc>
   7470     </method>
   7471     <doc>
   7472     <![CDATA[Configures the servlet scopes and creates bindings for the servlet API
   7473  objects so you can inject the request, response, session, etc.
   7474 
   7475  <p>
   7476  You should subclass this module to register servlets and
   7477  filters in the {@link #configureServlets()} method.
   7478 
   7479  @author crazybob (a] google.com (Bob Lee)
   7480  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   7481     </doc>
   7482   </class>
   7483   <!-- end class com.google.inject.servlet.ServletModule -->
   7484   <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
   7485   <interface name="ServletModule.FilterKeyBindingBuilder"    abstract="true"
   7486     static="true" final="false" visibility="public"
   7487     deprecated="not deprecated">
   7488     <method name="through"
   7489       abstract="true" native="false" synchronized="false"
   7490       static="false" final="false" visibility="public"
   7491       deprecated="not deprecated">
   7492       <param name="filterKey" type="java.lang.Class&lt;? extends javax.servlet.Filter&gt;"/>
   7493     </method>
   7494     <method name="through"
   7495       abstract="true" native="false" synchronized="false"
   7496       static="false" final="false" visibility="public"
   7497       deprecated="not deprecated">
   7498       <param name="filterKey" type="com.google.inject.Key&lt;? extends javax.servlet.Filter&gt;"/>
   7499     </method>
   7500     <method name="through"
   7501       abstract="true" native="false" synchronized="false"
   7502       static="false" final="false" visibility="public"
   7503       deprecated="not deprecated">
   7504       <param name="filter" type="javax.servlet.Filter"/>
   7505       <doc>
   7506       <![CDATA[@since 3.0]]>
   7507       </doc>
   7508     </method>
   7509     <method name="through"
   7510       abstract="true" native="false" synchronized="false"
   7511       static="false" final="false" visibility="public"
   7512       deprecated="not deprecated">
   7513       <param name="filterKey" type="java.lang.Class&lt;? extends javax.servlet.Filter&gt;"/>
   7514       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7515     </method>
   7516     <method name="through"
   7517       abstract="true" native="false" synchronized="false"
   7518       static="false" final="false" visibility="public"
   7519       deprecated="not deprecated">
   7520       <param name="filterKey" type="com.google.inject.Key&lt;? extends javax.servlet.Filter&gt;"/>
   7521       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7522     </method>
   7523     <method name="through"
   7524       abstract="true" native="false" synchronized="false"
   7525       static="false" final="false" visibility="public"
   7526       deprecated="not deprecated">
   7527       <param name="filter" type="javax.servlet.Filter"/>
   7528       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7529       <doc>
   7530       <![CDATA[@since 3.0]]>
   7531       </doc>
   7532     </method>
   7533     <doc>
   7534     <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
   7535 
   7536  @since 2.0]]>
   7537     </doc>
   7538   </interface>
   7539   <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
   7540   <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
   7541   <interface name="ServletModule.ServletKeyBindingBuilder"    abstract="true"
   7542     static="true" final="false" visibility="public"
   7543     deprecated="not deprecated">
   7544     <method name="with"
   7545       abstract="true" native="false" synchronized="false"
   7546       static="false" final="false" visibility="public"
   7547       deprecated="not deprecated">
   7548       <param name="servletKey" type="java.lang.Class&lt;? extends javax.servlet.http.HttpServlet&gt;"/>
   7549     </method>
   7550     <method name="with"
   7551       abstract="true" native="false" synchronized="false"
   7552       static="false" final="false" visibility="public"
   7553       deprecated="not deprecated">
   7554       <param name="servletKey" type="com.google.inject.Key&lt;? extends javax.servlet.http.HttpServlet&gt;"/>
   7555     </method>
   7556     <method name="with"
   7557       abstract="true" native="false" synchronized="false"
   7558       static="false" final="false" visibility="public"
   7559       deprecated="not deprecated">
   7560       <param name="servlet" type="javax.servlet.http.HttpServlet"/>
   7561       <doc>
   7562       <![CDATA[@since 3.0]]>
   7563       </doc>
   7564     </method>
   7565     <method name="with"
   7566       abstract="true" native="false" synchronized="false"
   7567       static="false" final="false" visibility="public"
   7568       deprecated="not deprecated">
   7569       <param name="servletKey" type="java.lang.Class&lt;? extends javax.servlet.http.HttpServlet&gt;"/>
   7570       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7571     </method>
   7572     <method name="with"
   7573       abstract="true" native="false" synchronized="false"
   7574       static="false" final="false" visibility="public"
   7575       deprecated="not deprecated">
   7576       <param name="servletKey" type="com.google.inject.Key&lt;? extends javax.servlet.http.HttpServlet&gt;"/>
   7577       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7578     </method>
   7579     <method name="with"
   7580       abstract="true" native="false" synchronized="false"
   7581       static="false" final="false" visibility="public"
   7582       deprecated="not deprecated">
   7583       <param name="servlet" type="javax.servlet.http.HttpServlet"/>
   7584       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7585       <doc>
   7586       <![CDATA[@since 3.0]]>
   7587       </doc>
   7588     </method>
   7589     <doc>
   7590     <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
   7591 
   7592  @since 2.0]]>
   7593     </doc>
   7594   </interface>
   7595   <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
   7596   <!-- start interface com.google.inject.servlet.ServletModuleBinding -->
   7597   <interface name="ServletModuleBinding"    abstract="true"
   7598     static="false" final="false" visibility="public"
   7599     deprecated="not deprecated">
   7600     <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType"
   7601       abstract="true" native="false" synchronized="false"
   7602       static="false" final="false" visibility="public"
   7603       deprecated="not deprecated">
   7604       <doc>
   7605       <![CDATA[Returns the pattern type that this binding was created with.]]>
   7606       </doc>
   7607     </method>
   7608     <method name="getPattern" return="java.lang.String"
   7609       abstract="true" native="false" synchronized="false"
   7610       static="false" final="false" visibility="public"
   7611       deprecated="not deprecated">
   7612       <doc>
   7613       <![CDATA[Returns the pattern used to match against the binding.]]>
   7614       </doc>
   7615     </method>
   7616     <method name="getInitParams" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   7617       abstract="true" native="false" synchronized="false"
   7618       static="false" final="false" visibility="public"
   7619       deprecated="not deprecated">
   7620       <doc>
   7621       <![CDATA[Returns any context params supplied when creating the binding.]]>
   7622       </doc>
   7623     </method>
   7624     <method name="matchesUri" return="boolean"
   7625       abstract="true" native="false" synchronized="false"
   7626       static="false" final="false" visibility="public"
   7627       deprecated="not deprecated">
   7628       <param name="uri" type="java.lang.String"/>
   7629       <doc>
   7630       <![CDATA[Returns true if the given URI will match this binding.]]>
   7631       </doc>
   7632     </method>
   7633     <doc>
   7634     <![CDATA[A binding created by {@link ServletModule}.
   7635  
   7636  @author sameb (a] google.com (Sam Berlin)
   7637  @since 3.0]]>
   7638     </doc>
   7639   </interface>
   7640   <!-- end interface com.google.inject.servlet.ServletModuleBinding -->
   7641   <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor -->
   7642   <interface name="ServletModuleTargetVisitor"    abstract="true"
   7643     static="false" final="false" visibility="public"
   7644     deprecated="not deprecated">
   7645     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   7646     <method name="visit" return="V"
   7647       abstract="true" native="false" synchronized="false"
   7648       static="false" final="false" visibility="public"
   7649       deprecated="not deprecated">
   7650       <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/>
   7651       <doc>
   7652       <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where
   7653  {@link FilterKeyBindingBuilder#through} is called with a Class or Key.
   7654  
   7655  If multiple patterns were specified, this will be called multiple times.]]>
   7656       </doc>
   7657     </method>
   7658     <method name="visit" return="V"
   7659       abstract="true" native="false" synchronized="false"
   7660       static="false" final="false" visibility="public"
   7661       deprecated="not deprecated">
   7662       <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/>
   7663       <doc>
   7664       <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where
   7665  {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}.
   7666  
   7667  If multiple patterns were specified, this will be called multiple times.]]>
   7668       </doc>
   7669     </method>
   7670     <method name="visit" return="V"
   7671       abstract="true" native="false" synchronized="false"
   7672       static="false" final="false" visibility="public"
   7673       deprecated="not deprecated">
   7674       <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/>
   7675       <doc>
   7676       <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
   7677  {@link ServletKeyBindingBuilder#with}, is called with a Class or Key.
   7678  
   7679  If multiple patterns were specified, this will be called multiple times.]]>
   7680       </doc>
   7681     </method>
   7682     <method name="visit" return="V"
   7683       abstract="true" native="false" synchronized="false"
   7684       static="false" final="false" visibility="public"
   7685       deprecated="not deprecated">
   7686       <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/>
   7687       <doc>
   7688       <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 
   7689  {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}.
   7690  
   7691  If multiple patterns were specified, this will be called multiple times.]]>
   7692       </doc>
   7693     </method>
   7694     <doc>
   7695     <![CDATA[A visitor for the servlet extension.
   7696  
   7697  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   7698  {@link ServletModule} will be visited through this interface.
   7699  
   7700  @since 3.0
   7701  @author sameb (a] google.com (Sam Berlin)]]>
   7702     </doc>
   7703   </interface>
   7704   <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor -->
   7705   <!-- start class com.google.inject.servlet.ServletScopes -->
   7706   <class name="ServletScopes" extends="java.lang.Object"
   7707     abstract="false"
   7708     static="false" final="false" visibility="public"
   7709     deprecated="not deprecated">
   7710     <method name="continueRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7711       abstract="false" native="false" synchronized="false"
   7712       static="true" final="false" visibility="public"
   7713       deprecated="not deprecated">
   7714       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7715       <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
   7716       <doc>
   7717       <![CDATA[Wraps the given callable in a contextual callable that "continues" the
   7718  HTTP request in another thread. This acts as a way of transporting
   7719  request context data from the request processing thread to to worker
   7720  threads.
   7721  <p>
   7722  There are some limitations:
   7723  <ul>
   7724    <li>Derived objects (i.e. anything marked @RequestScoped will not be
   7725       transported.</li>
   7726    <li>State changes to the HttpServletRequest after this method is called
   7727       will not be seen in the continued thread.</li>
   7728    <li>Only the HttpServletRequest, ServletContext and request parameter
   7729       map are available in the continued thread. The response and session
   7730       are not available.</li>
   7731  </ul>
   7732 
   7733  <p>The returned callable will throw a {@link ScopingException} when called
   7734  if the HTTP request scope is still active on the current thread.
   7735 
   7736  @param callable code to be executed in another thread, which depends on
   7737      the request scope.
   7738  @param seedMap the initial set of scoped instances for Guice to seed the
   7739      request scope with.  To seed a key with null, use {@code null} as
   7740      the value.
   7741  @return a callable that will invoke the given callable, making the request
   7742      context available to it.
   7743  @throws OutOfScopeException if this method is called from a non-request
   7744      thread, or if the request has completed.
   7745  
   7746  @since 3.0]]>
   7747       </doc>
   7748     </method>
   7749     <method name="transferRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7750       abstract="false" native="false" synchronized="false"
   7751       static="true" final="false" visibility="public"
   7752       deprecated="not deprecated">
   7753       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7754       <doc>
   7755       <![CDATA[Wraps the given callable in a contextual callable that "transfers" the
   7756  request to another thread. This acts as a way of transporting
   7757  request context data from the current thread to a future thread.
   7758 
   7759  <p>As opposed to {@link #continueRequest}, this method propagates all
   7760  existing scoped objects. The primary use case is in server implementations
   7761  where you can detach the request processing thread while waiting for data,
   7762  and reattach to a different thread to finish processing at a later time.
   7763 
   7764  <p>Because request-scoped objects are not typically thread-safe, the
   7765  callable returned by this method must not be run on a different thread
   7766  until the current request scope has terminated. The returned callable will
   7767  block until the current thread has released the request scope.
   7768 
   7769  @param callable code to be executed in another thread, which depends on
   7770      the request scope.
   7771  @return a callable that will invoke the given callable, making the request
   7772      context available to it.
   7773  @throws OutOfScopeException if this method is called from a non-request
   7774      thread, or if the request has completed.
   7775  @since 4.0]]>
   7776       </doc>
   7777     </method>
   7778     <method name="isRequestScoped" return="boolean"
   7779       abstract="false" native="false" synchronized="false"
   7780       static="true" final="false" visibility="public"
   7781       deprecated="not deprecated">
   7782       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   7783       <doc>
   7784       <![CDATA[Returns true if {@code binding} is request-scoped. If the binding is a
   7785  {@link com.google.inject.spi.LinkedKeyBinding linked key binding} and
   7786  belongs to an injector (i. e. it was retrieved via
   7787  {@link Injector#getBinding Injector.getBinding()}), then this method will
   7788  also return true if the target binding is request-scoped.
   7789 
   7790  @since 4.0]]>
   7791       </doc>
   7792     </method>
   7793     <method name="scopeRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7794       abstract="false" native="false" synchronized="false"
   7795       static="true" final="false" visibility="public"
   7796       deprecated="not deprecated">
   7797       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7798       <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
   7799       <doc>
   7800       <![CDATA[Scopes the given callable inside a request scope. This is not the same
   7801  as the HTTP request scope, but is used if no HTTP request scope is in
   7802  progress. In this way, keys can be scoped as @RequestScoped and exist
   7803  in non-HTTP requests (for example: RPC requests) as well as in HTTP
   7804  request threads.
   7805 
   7806  <p>The returned callable will throw a {@link ScopingException} when called
   7807  if there is a request scope already active on the current thread.
   7808 
   7809  @param callable code to be executed which depends on the request scope.
   7810      Typically in another thread, but not necessarily so.
   7811  @param seedMap the initial set of scoped instances for Guice to seed the
   7812      request scope with.  To seed a key with null, use {@code null} as
   7813      the value.
   7814  @return a callable that when called will run inside the a request scope
   7815      that exposes the instances in the {@code seedMap} as scoped keys.
   7816  @since 3.0]]>
   7817       </doc>
   7818     </method>
   7819     <field name="REQUEST" type="com.google.inject.Scope"
   7820       transient="false" volatile="false"
   7821       static="true" final="true" visibility="public"
   7822       deprecated="not deprecated">
   7823       <doc>
   7824       <![CDATA[HTTP servlet request scope.]]>
   7825       </doc>
   7826     </field>
   7827     <field name="SESSION" type="com.google.inject.Scope"
   7828       transient="false" volatile="false"
   7829       static="true" final="true" visibility="public"
   7830       deprecated="not deprecated">
   7831       <doc>
   7832       <![CDATA[HTTP session scope.]]>
   7833       </doc>
   7834     </field>
   7835     <doc>
   7836     <![CDATA[Servlet scopes.
   7837 
   7838  @author crazybob (a] google.com (Bob Lee)]]>
   7839     </doc>
   7840   </class>
   7841   <!-- end class com.google.inject.servlet.ServletScopes -->
   7842   <!-- start class com.google.inject.servlet.SessionScoped -->
   7843   <class name="SessionScoped"    abstract="true"
   7844     static="false" final="false" visibility="public"
   7845     deprecated="not deprecated">
   7846     <implements name="java.lang.annotation.Annotation"/>
   7847     <doc>
   7848     <![CDATA[Apply this to implementation classes when you want one instance per session.
   7849 
   7850  @see com.google.inject.Scopes#SINGLETON
   7851  @author crazybob (a] google.com (Bob Lee)]]>
   7852     </doc>
   7853   </class>
   7854   <!-- end class com.google.inject.servlet.SessionScoped -->
   7855   <!-- start class com.google.inject.servlet.UriPatternType -->
   7856   <class name="UriPatternType" extends="java.lang.Enum&lt;com.google.inject.servlet.UriPatternType&gt;"
   7857     abstract="false"
   7858     static="false" final="true" visibility="public"
   7859     deprecated="not deprecated">
   7860     <method name="values" return="com.google.inject.servlet.UriPatternType[]"
   7861       abstract="false" native="false" synchronized="false"
   7862       static="true" final="false" visibility="public"
   7863       deprecated="not deprecated">
   7864     </method>
   7865     <method name="valueOf" return="com.google.inject.servlet.UriPatternType"
   7866       abstract="false" native="false" synchronized="false"
   7867       static="true" final="false" visibility="public"
   7868       deprecated="not deprecated">
   7869       <param name="name" type="java.lang.String"/>
   7870     </method>
   7871     <doc>
   7872     <![CDATA[An enumeration of the available URI-pattern matching styles
   7873  
   7874  @since 3.0]]>
   7875     </doc>
   7876   </class>
   7877   <!-- end class com.google.inject.servlet.UriPatternType -->
   7878 </package>
   7879 <package name="com.google.inject.spi">
   7880   <!-- start interface com.google.inject.spi.BindingScopingVisitor -->
   7881   <interface name="BindingScopingVisitor"    abstract="true"
   7882     static="false" final="false" visibility="public"
   7883     deprecated="not deprecated">
   7884     <method name="visitEagerSingleton" return="V"
   7885       abstract="true" native="false" synchronized="false"
   7886       static="false" final="false" visibility="public"
   7887       deprecated="not deprecated">
   7888       <doc>
   7889       <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and
   7890  injector bindings.]]>
   7891       </doc>
   7892     </method>
   7893     <method name="visitScope" return="V"
   7894       abstract="true" native="false" synchronized="false"
   7895       static="false" final="false" visibility="public"
   7896       deprecated="not deprecated">
   7897       <param name="scope" type="com.google.inject.Scope"/>
   7898       <doc>
   7899       <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]>
   7900       </doc>
   7901     </method>
   7902     <method name="visitScopeAnnotation" return="V"
   7903       abstract="true" native="false" synchronized="false"
   7904       static="false" final="false" visibility="public"
   7905       deprecated="not deprecated">
   7906       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   7907       <doc>
   7908       <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance
   7909  that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class,
   7910  Scope) Binder.bindScope()}.]]>
   7911       </doc>
   7912     </method>
   7913     <method name="visitNoScoping" return="V"
   7914       abstract="true" native="false" synchronized="false"
   7915       static="false" final="false" visibility="public"
   7916       deprecated="not deprecated">
   7917       <doc>
   7918       <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the
   7919  injector should use scoping annotations to find a scope. On an injector, it indicates that
   7920  no scope is applied to the binding. An unscoped binding will behave like a scoped one when it
   7921  is linked to a scoped binding.]]>
   7922       </doc>
   7923     </method>
   7924     <doc>
   7925     <![CDATA[Visits each of the strategies used to scope an injection.
   7926 
   7927  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7928      {@code return null} if no return type is needed.
   7929  @since 2.0]]>
   7930     </doc>
   7931   </interface>
   7932   <!-- end interface com.google.inject.spi.BindingScopingVisitor -->
   7933   <!-- start interface com.google.inject.spi.BindingTargetVisitor -->
   7934   <interface name="BindingTargetVisitor"    abstract="true"
   7935     static="false" final="false" visibility="public"
   7936     deprecated="not deprecated">
   7937     <method name="visit" return="V"
   7938       abstract="true" native="false" synchronized="false"
   7939       static="false" final="false" visibility="public"
   7940       deprecated="not deprecated">
   7941       <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
   7942       <doc>
   7943       <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is
   7944  found in both module and injector bindings.]]>
   7945       </doc>
   7946     </method>
   7947     <method name="visit" return="V"
   7948       abstract="true" native="false" synchronized="false"
   7949       static="false" final="false" visibility="public"
   7950       deprecated="not deprecated">
   7951       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
   7952       <doc>
   7953       <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve
   7954  injections. This target is found in both module and injector bindings.]]>
   7955       </doc>
   7956     </method>
   7957     <method name="visit" return="V"
   7958       abstract="true" native="false" synchronized="false"
   7959       static="false" final="false" visibility="public"
   7960       deprecated="not deprecated">
   7961       <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
   7962       <doc>
   7963       <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then
   7964  that provider's {@code get} method is invoked. This target is found in both module and injector
   7965  bindings.]]>
   7966       </doc>
   7967     </method>
   7968     <method name="visit" return="V"
   7969       abstract="true" native="false" synchronized="false"
   7970       static="false" final="false" visibility="public"
   7971       deprecated="not deprecated">
   7972       <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
   7973       <doc>
   7974       <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This
   7975  target is found in both module and injector bindings.]]>
   7976       </doc>
   7977     </method>
   7978     <method name="visit" return="V"
   7979       abstract="true" native="false" synchronized="false"
   7980       static="false" final="false" visibility="public"
   7981       deprecated="not deprecated">
   7982       <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
   7983       <doc>
   7984       <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only
   7985  found in injector bindings.]]>
   7986       </doc>
   7987     </method>
   7988     <method name="visit" return="V"
   7989       abstract="true" native="false" synchronized="false"
   7990       static="false" final="false" visibility="public"
   7991       deprecated="not deprecated">
   7992       <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
   7993       <doc>
   7994       <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates
   7995  that the injector should use its implicit binding strategies to resolve injections.]]>
   7996       </doc>
   7997     </method>
   7998     <method name="visit" return="V"
   7999       abstract="true" native="false" synchronized="false"
   8000       static="false" final="false" visibility="public"
   8001       deprecated="not deprecated">
   8002       <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
   8003       <doc>
   8004       <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking
   8005  {@code constructor}. This target is found only on injector bindings.]]>
   8006       </doc>
   8007     </method>
   8008     <method name="visit" return="V"
   8009       abstract="true" native="false" synchronized="false"
   8010       static="false" final="false" visibility="public"
   8011       deprecated="not deprecated">
   8012       <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
   8013       <doc>
   8014       <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding
   8015  has the same binding annotation but a different type. This target is found only on injector
   8016  bindings.]]>
   8017       </doc>
   8018     </method>
   8019     <method name="visit" return="V"
   8020       abstract="true" native="false" synchronized="false"
   8021       static="false" final="false" visibility="public"
   8022       deprecated="not deprecated">
   8023       <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
   8024       <doc>
   8025       <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the
   8026  provided type. This target is found only on injector bindings.]]>
   8027       </doc>
   8028     </method>
   8029     <doc>
   8030     <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection.
   8031 
   8032  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8033      {@code return null} if no return type is needed.
   8034  @since 2.0]]>
   8035     </doc>
   8036   </interface>
   8037   <!-- end interface com.google.inject.spi.BindingTargetVisitor -->
   8038   <!-- start interface com.google.inject.spi.ConstructorBinding -->
   8039   <interface name="ConstructorBinding"    abstract="true"
   8040     static="false" final="false" visibility="public"
   8041     deprecated="not deprecated">
   8042     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8043     <implements name="com.google.inject.spi.HasDependencies"/>
   8044     <method name="getConstructor" return="com.google.inject.spi.InjectionPoint"
   8045       abstract="true" native="false" synchronized="false"
   8046       static="false" final="false" visibility="public"
   8047       deprecated="not deprecated">
   8048       <doc>
   8049       <![CDATA[Gets the constructor this binding injects.]]>
   8050       </doc>
   8051     </method>
   8052     <method name="getInjectableMembers" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8053       abstract="true" native="false" synchronized="false"
   8054       static="false" final="false" visibility="public"
   8055       deprecated="not deprecated">
   8056       <doc>
   8057       <![CDATA[Returns all instance method and field injection points on {@code type}.
   8058 
   8059  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8060       fields are returned and then all methods. Within the fields, supertype fields are returned
   8061       before subtype fields. Similarly, supertype methods are returned before subtype methods.]]>
   8062       </doc>
   8063     </method>
   8064     <method name="getMethodInterceptors" return="java.util.Map&lt;java.lang.reflect.Method, java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;&gt;"
   8065       abstract="true" native="false" synchronized="false"
   8066       static="false" final="false" visibility="public"
   8067       deprecated="not deprecated">
   8068       <doc>
   8069       <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied.
   8070 
   8071  @return a possibly empty map]]>
   8072       </doc>
   8073     </method>
   8074     <doc>
   8075     <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is
   8076  instantiated by invoking the constructor.
   8077 
   8078  @author jessewilson (a] google.com (Jesse Wilson)
   8079  @since 2.0]]>
   8080     </doc>
   8081   </interface>
   8082   <!-- end interface com.google.inject.spi.ConstructorBinding -->
   8083   <!-- start interface com.google.inject.spi.ConvertedConstantBinding -->
   8084   <interface name="ConvertedConstantBinding"    abstract="true"
   8085     static="false" final="false" visibility="public"
   8086     deprecated="not deprecated">
   8087     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8088     <implements name="com.google.inject.spi.HasDependencies"/>
   8089     <method name="getValue" return="T"
   8090       abstract="true" native="false" synchronized="false"
   8091       static="false" final="false" visibility="public"
   8092       deprecated="not deprecated">
   8093       <doc>
   8094       <![CDATA[Returns the converted value.]]>
   8095       </doc>
   8096     </method>
   8097     <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding"
   8098       abstract="true" native="false" synchronized="false"
   8099       static="false" final="false" visibility="public"
   8100       deprecated="not deprecated">
   8101       <doc>
   8102       <![CDATA[Returns the type converter binding used to convert the constant.
   8103  
   8104  @since 3.0]]>
   8105       </doc>
   8106     </method>
   8107     <method name="getSourceKey" return="com.google.inject.Key&lt;java.lang.String&gt;"
   8108       abstract="true" native="false" synchronized="false"
   8109       static="false" final="false" visibility="public"
   8110       deprecated="not deprecated">
   8111       <doc>
   8112       <![CDATA[Returns the key for the source binding. That binding can be retrieved from an injector using
   8113  {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
   8114       </doc>
   8115     </method>
   8116     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   8117       abstract="true" native="false" synchronized="false"
   8118       static="false" final="false" visibility="public"
   8119       deprecated="not deprecated">
   8120       <doc>
   8121       <![CDATA[Returns a singleton set containing only the converted key.]]>
   8122       </doc>
   8123     </method>
   8124     <doc>
   8125     <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same
   8126  binding annotation but a different type.
   8127 
   8128  @author jessewilson (a] google.com (Jesse Wilson)
   8129  @since 2.0]]>
   8130     </doc>
   8131   </interface>
   8132   <!-- end interface com.google.inject.spi.ConvertedConstantBinding -->
   8133   <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor -->
   8134   <class name="DefaultBindingScopingVisitor" extends="java.lang.Object"
   8135     abstract="false"
   8136     static="false" final="false" visibility="public"
   8137     deprecated="not deprecated">
   8138     <implements name="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
   8139     <constructor name="DefaultBindingScopingVisitor"
   8140       static="false" final="false" visibility="public"
   8141       deprecated="not deprecated">
   8142     </constructor>
   8143     <method name="visitOther" return="V"
   8144       abstract="false" native="false" synchronized="false"
   8145       static="false" final="false" visibility="protected"
   8146       deprecated="not deprecated">
   8147       <doc>
   8148       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   8149       </doc>
   8150     </method>
   8151     <method name="visitEagerSingleton" return="V"
   8152       abstract="false" native="false" synchronized="false"
   8153       static="false" final="false" visibility="public"
   8154       deprecated="not deprecated">
   8155     </method>
   8156     <method name="visitScope" return="V"
   8157       abstract="false" native="false" synchronized="false"
   8158       static="false" final="false" visibility="public"
   8159       deprecated="not deprecated">
   8160       <param name="scope" type="com.google.inject.Scope"/>
   8161     </method>
   8162     <method name="visitScopeAnnotation" return="V"
   8163       abstract="false" native="false" synchronized="false"
   8164       static="false" final="false" visibility="public"
   8165       deprecated="not deprecated">
   8166       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   8167     </method>
   8168     <method name="visitNoScoping" return="V"
   8169       abstract="false" native="false" synchronized="false"
   8170       static="false" final="false" visibility="public"
   8171       deprecated="not deprecated">
   8172     </method>
   8173     <doc>
   8174     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
   8175  {@link #visitOther()}, returning its result.
   8176 
   8177  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8178      {@code return null} if no return type is needed.
   8179  
   8180  @author jessewilson (a] google.com (Jesse Wilson)
   8181  @since 2.0]]>
   8182     </doc>
   8183   </class>
   8184   <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor -->
   8185   <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor -->
   8186   <class name="DefaultBindingTargetVisitor" extends="java.lang.Object"
   8187     abstract="true"
   8188     static="false" final="false" visibility="public"
   8189     deprecated="not deprecated">
   8190     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   8191     <constructor name="DefaultBindingTargetVisitor"
   8192       static="false" final="false" visibility="public"
   8193       deprecated="not deprecated">
   8194     </constructor>
   8195     <method name="visitOther" return="V"
   8196       abstract="false" native="false" synchronized="false"
   8197       static="false" final="false" visibility="protected"
   8198       deprecated="not deprecated">
   8199       <param name="binding" type="com.google.inject.Binding&lt;? extends T&gt;"/>
   8200       <doc>
   8201       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   8202       </doc>
   8203     </method>
   8204     <method name="visit" return="V"
   8205       abstract="false" native="false" synchronized="false"
   8206       static="false" final="false" visibility="public"
   8207       deprecated="not deprecated">
   8208       <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
   8209     </method>
   8210     <method name="visit" return="V"
   8211       abstract="false" native="false" synchronized="false"
   8212       static="false" final="false" visibility="public"
   8213       deprecated="not deprecated">
   8214       <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
   8215     </method>
   8216     <method name="visit" return="V"
   8217       abstract="false" native="false" synchronized="false"
   8218       static="false" final="false" visibility="public"
   8219       deprecated="not deprecated">
   8220       <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
   8221     </method>
   8222     <method name="visit" return="V"
   8223       abstract="false" native="false" synchronized="false"
   8224       static="false" final="false" visibility="public"
   8225       deprecated="not deprecated">
   8226       <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
   8227     </method>
   8228     <method name="visit" return="V"
   8229       abstract="false" native="false" synchronized="false"
   8230       static="false" final="false" visibility="public"
   8231       deprecated="not deprecated">
   8232       <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
   8233     </method>
   8234     <method name="visit" return="V"
   8235       abstract="false" native="false" synchronized="false"
   8236       static="false" final="false" visibility="public"
   8237       deprecated="not deprecated">
   8238       <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
   8239     </method>
   8240     <method name="visit" return="V"
   8241       abstract="false" native="false" synchronized="false"
   8242       static="false" final="false" visibility="public"
   8243       deprecated="not deprecated">
   8244       <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
   8245     </method>
   8246     <method name="visit" return="V"
   8247       abstract="false" native="false" synchronized="false"
   8248       static="false" final="false" visibility="public"
   8249       deprecated="not deprecated">
   8250       <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
   8251     </method>
   8252     <method name="visit" return="V"
   8253       abstract="false" native="false" synchronized="false"
   8254       static="false" final="false" visibility="public"
   8255       deprecated="not deprecated">
   8256       <param name="providerBinding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
   8257     </method>
   8258     <doc>
   8259     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link
   8260  #visitOther(Binding)}, returning its result.
   8261 
   8262  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8263      {@code return null} if no return type is needed.
   8264 
   8265  @author jessewilson (a] google.com (Jesse Wilson)
   8266  @since 2.0]]>
   8267     </doc>
   8268   </class>
   8269   <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor -->
   8270   <!-- start class com.google.inject.spi.DefaultElementVisitor -->
   8271   <class name="DefaultElementVisitor" extends="java.lang.Object"
   8272     abstract="true"
   8273     static="false" final="false" visibility="public"
   8274     deprecated="not deprecated">
   8275     <implements name="com.google.inject.spi.ElementVisitor&lt;V&gt;"/>
   8276     <constructor name="DefaultElementVisitor"
   8277       static="false" final="false" visibility="public"
   8278       deprecated="not deprecated">
   8279     </constructor>
   8280     <method name="visitOther" return="V"
   8281       abstract="false" native="false" synchronized="false"
   8282       static="false" final="false" visibility="protected"
   8283       deprecated="not deprecated">
   8284       <param name="element" type="com.google.inject.spi.Element"/>
   8285       <doc>
   8286       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   8287       </doc>
   8288     </method>
   8289     <method name="visit" return="V"
   8290       abstract="false" native="false" synchronized="false"
   8291       static="false" final="false" visibility="public"
   8292       deprecated="not deprecated">
   8293       <param name="message" type="com.google.inject.spi.Message"/>
   8294     </method>
   8295     <method name="visit" return="V"
   8296       abstract="false" native="false" synchronized="false"
   8297       static="false" final="false" visibility="public"
   8298       deprecated="not deprecated">
   8299       <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
   8300     </method>
   8301     <method name="visit" return="V"
   8302       abstract="false" native="false" synchronized="false"
   8303       static="false" final="false" visibility="public"
   8304       deprecated="not deprecated">
   8305       <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/>
   8306     </method>
   8307     <method name="visit" return="V"
   8308       abstract="false" native="false" synchronized="false"
   8309       static="false" final="false" visibility="public"
   8310       deprecated="not deprecated">
   8311       <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/>
   8312     </method>
   8313     <method name="visit" return="V"
   8314       abstract="false" native="false" synchronized="false"
   8315       static="false" final="false" visibility="public"
   8316       deprecated="not deprecated">
   8317       <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/>
   8318     </method>
   8319     <method name="visit" return="V"
   8320       abstract="false" native="false" synchronized="false"
   8321       static="false" final="false" visibility="public"
   8322       deprecated="not deprecated">
   8323       <param name="providerLookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
   8324     </method>
   8325     <method name="visit" return="V"
   8326       abstract="false" native="false" synchronized="false"
   8327       static="false" final="false" visibility="public"
   8328       deprecated="not deprecated">
   8329       <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
   8330     </method>
   8331     <method name="visit" return="V"
   8332       abstract="false" native="false" synchronized="false"
   8333       static="false" final="false" visibility="public"
   8334       deprecated="not deprecated">
   8335       <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/>
   8336     </method>
   8337     <method name="visit" return="V"
   8338       abstract="false" native="false" synchronized="false"
   8339       static="false" final="false" visibility="public"
   8340       deprecated="not deprecated">
   8341       <param name="privateElements" type="com.google.inject.spi.PrivateElements"/>
   8342     </method>
   8343     <method name="visit" return="V"
   8344       abstract="false" native="false" synchronized="false"
   8345       static="false" final="false" visibility="public"
   8346       deprecated="not deprecated">
   8347       <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
   8348     </method>
   8349     <method name="visit" return="V"
   8350       abstract="false" native="false" synchronized="false"
   8351       static="false" final="false" visibility="public"
   8352       deprecated="not deprecated">
   8353       <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
   8354     </method>
   8355     <method name="visit" return="V"
   8356       abstract="false" native="false" synchronized="false"
   8357       static="false" final="false" visibility="public"
   8358       deprecated="not deprecated">
   8359       <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/>
   8360     </method>
   8361     <method name="visit" return="V"
   8362       abstract="false" native="false" synchronized="false"
   8363       static="false" final="false" visibility="public"
   8364       deprecated="not deprecated">
   8365       <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
   8366     </method>
   8367     <method name="visit" return="V"
   8368       abstract="false" native="false" synchronized="false"
   8369       static="false" final="false" visibility="public"
   8370       deprecated="not deprecated">
   8371       <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
   8372     </method>
   8373     <method name="visit" return="V"
   8374       abstract="false" native="false" synchronized="false"
   8375       static="false" final="false" visibility="public"
   8376       deprecated="not deprecated">
   8377       <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/>
   8378     </method>
   8379     <method name="visit" return="V"
   8380       abstract="false" native="false" synchronized="false"
   8381       static="false" final="false" visibility="public"
   8382       deprecated="not deprecated">
   8383       <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/>
   8384     </method>
   8385     <method name="visit" return="V"
   8386       abstract="false" native="false" synchronized="false"
   8387       static="false" final="false" visibility="public"
   8388       deprecated="not deprecated">
   8389       <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/>
   8390     </method>
   8391     <doc>
   8392     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
   8393  {@link #visitOther(Element)}, returning its result.
   8394 
   8395  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8396      {@code return null} if no return type is needed.
   8397 
   8398  @author sberlin (a] gmail.com (Sam Berlin)
   8399  @since 2.0]]>
   8400     </doc>
   8401   </class>
   8402   <!-- end class com.google.inject.spi.DefaultElementVisitor -->
   8403   <!-- start class com.google.inject.spi.Dependency -->
   8404   <class name="Dependency" extends="java.lang.Object"
   8405     abstract="false"
   8406     static="false" final="true" visibility="public"
   8407     deprecated="not deprecated">
   8408     <method name="get" return="com.google.inject.spi.Dependency&lt;T&gt;"
   8409       abstract="false" native="false" synchronized="false"
   8410       static="true" final="false" visibility="public"
   8411       deprecated="not deprecated">
   8412       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   8413       <doc>
   8414       <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is
   8415  nullable.]]>
   8416       </doc>
   8417     </method>
   8418     <method name="forInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   8419       abstract="false" native="false" synchronized="false"
   8420       static="true" final="false" visibility="public"
   8421       deprecated="not deprecated">
   8422       <param name="injectionPoints" type="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"/>
   8423       <doc>
   8424       <![CDATA[Returns the dependencies from the given injection points.]]>
   8425       </doc>
   8426     </method>
   8427     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   8428       abstract="false" native="false" synchronized="false"
   8429       static="false" final="false" visibility="public"
   8430       deprecated="not deprecated">
   8431       <doc>
   8432       <![CDATA[Returns the key to the binding that satisfies this dependency.]]>
   8433       </doc>
   8434     </method>
   8435     <method name="isNullable" return="boolean"
   8436       abstract="false" native="false" synchronized="false"
   8437       static="false" final="false" visibility="public"
   8438       deprecated="not deprecated">
   8439       <doc>
   8440       <![CDATA[Returns true if null is a legal value for this dependency.]]>
   8441       </doc>
   8442     </method>
   8443     <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
   8444       abstract="false" native="false" synchronized="false"
   8445       static="false" final="false" visibility="public"
   8446       deprecated="not deprecated">
   8447       <doc>
   8448       <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't
   8449  attached to a particular injection point.]]>
   8450       </doc>
   8451     </method>
   8452     <method name="getParameterIndex" return="int"
   8453       abstract="false" native="false" synchronized="false"
   8454       static="false" final="false" visibility="public"
   8455       deprecated="not deprecated">
   8456       <doc>
   8457       <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if
   8458  this dependency does not belong to a parameter list. Only method and constuctor dependencies
   8459  are elements in a parameter list.]]>
   8460       </doc>
   8461     </method>
   8462     <method name="hashCode" return="int"
   8463       abstract="false" native="false" synchronized="false"
   8464       static="false" final="false" visibility="public"
   8465       deprecated="not deprecated">
   8466     </method>
   8467     <method name="equals" return="boolean"
   8468       abstract="false" native="false" synchronized="false"
   8469       static="false" final="false" visibility="public"
   8470       deprecated="not deprecated">
   8471       <param name="o" type="java.lang.Object"/>
   8472     </method>
   8473     <method name="toString" return="java.lang.String"
   8474       abstract="false" native="false" synchronized="false"
   8475       static="false" final="false" visibility="public"
   8476       deprecated="not deprecated">
   8477     </method>
   8478     <doc>
   8479     <![CDATA[A variable that can be resolved by an injector.
   8480 
   8481  <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one
   8482  that's attached to a constructor, method or field.
   8483 
   8484  @author crazybob (a] google.com (Bob Lee)
   8485  @author jessewilson (a] google.com (Jesse Wilson)
   8486  @since 2.0]]>
   8487     </doc>
   8488   </class>
   8489   <!-- end class com.google.inject.spi.Dependency -->
   8490   <!-- start class com.google.inject.spi.DependencyAndSource -->
   8491   <class name="DependencyAndSource" extends="java.lang.Object"
   8492     abstract="false"
   8493     static="false" final="true" visibility="public"
   8494     deprecated="not deprecated">
   8495     <constructor name="DependencyAndSource" type="com.google.inject.spi.Dependency&lt;?&gt;, java.lang.Object"
   8496       static="false" final="false" visibility="public"
   8497       deprecated="not deprecated">
   8498     </constructor>
   8499     <method name="getDependency" return="com.google.inject.spi.Dependency&lt;?&gt;"
   8500       abstract="false" native="false" synchronized="false"
   8501       static="false" final="false" visibility="public"
   8502       deprecated="not deprecated">
   8503       <doc>
   8504       <![CDATA[Returns the Dependency, if one exists. For anything that can be referenced
   8505  by {@link Injector#getBinding}, a dependency exists. A dependency will not
   8506  exist (and this will return null) for types initialized with
   8507  {@link Binder#requestInjection} or {@link Injector#injectMembers(Object)},
   8508  nor will it exist for objects injected into Providers bound with
   8509  LinkedBindingBuilder#toProvider(Provider).]]>
   8510       </doc>
   8511     </method>
   8512     <method name="getBindingSource" return="java.lang.String"
   8513       abstract="false" native="false" synchronized="false"
   8514       static="false" final="false" visibility="public"
   8515       deprecated="not deprecated">
   8516       <doc>
   8517       <![CDATA[Returns a string describing where this dependency was bound. If the binding
   8518  was just-in-time, there is no valid binding source, so this describes the
   8519  class in question.]]>
   8520       </doc>
   8521     </method>
   8522     <method name="toString" return="java.lang.String"
   8523       abstract="false" native="false" synchronized="false"
   8524       static="false" final="false" visibility="public"
   8525       deprecated="not deprecated">
   8526     </method>
   8527     <doc>
   8528     <![CDATA[A combination of a {@link Dependency} and the {@link Binding#getSource()
   8529  source} where the dependency was bound.
   8530  
   8531  @author sameb (a] google.com (Sam Berlin)
   8532  @since 4.0]]>
   8533     </doc>
   8534   </class>
   8535   <!-- end class com.google.inject.spi.DependencyAndSource -->
   8536   <!-- start class com.google.inject.spi.DisableCircularProxiesOption -->
   8537   <class name="DisableCircularProxiesOption" extends="java.lang.Object"
   8538     abstract="false"
   8539     static="false" final="true" visibility="public"
   8540     deprecated="not deprecated">
   8541     <implements name="com.google.inject.spi.Element"/>
   8542     <method name="getSource" return="java.lang.Object"
   8543       abstract="false" native="false" synchronized="false"
   8544       static="false" final="false" visibility="public"
   8545       deprecated="not deprecated">
   8546     </method>
   8547     <method name="applyTo"
   8548       abstract="false" native="false" synchronized="false"
   8549       static="false" final="false" visibility="public"
   8550       deprecated="not deprecated">
   8551       <param name="binder" type="com.google.inject.Binder"/>
   8552     </method>
   8553     <method name="acceptVisitor" return="T"
   8554       abstract="false" native="false" synchronized="false"
   8555       static="false" final="false" visibility="public"
   8556       deprecated="not deprecated">
   8557       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8558     </method>
   8559     <doc>
   8560     <![CDATA[A request to disable circular proxies.
   8561 
   8562  @author sameb (a] google.com (Sam Berlin)
   8563  @since 3.0]]>
   8564     </doc>
   8565   </class>
   8566   <!-- end class com.google.inject.spi.DisableCircularProxiesOption -->
   8567   <!-- start interface com.google.inject.spi.Element -->
   8568   <interface name="Element"    abstract="true"
   8569     static="false" final="false" visibility="public"
   8570     deprecated="not deprecated">
   8571     <method name="getSource" return="java.lang.Object"
   8572       abstract="true" native="false" synchronized="false"
   8573       static="false" final="false" visibility="public"
   8574       deprecated="not deprecated">
   8575       <doc>
   8576       <![CDATA[Returns an arbitrary object containing information about the "place" where this element was
   8577  configured. Used by Guice in the production of descriptive error messages.
   8578 
   8579  <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
   8580  example. Tools should simply call {@code toString()} on the source object if the type is
   8581  unfamiliar.]]>
   8582       </doc>
   8583     </method>
   8584     <method name="acceptVisitor" return="T"
   8585       abstract="true" native="false" synchronized="false"
   8586       static="false" final="false" visibility="public"
   8587       deprecated="not deprecated">
   8588       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8589       <doc>
   8590       <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type.
   8591 
   8592  @param visitor to call back on]]>
   8593       </doc>
   8594     </method>
   8595     <method name="applyTo"
   8596       abstract="true" native="false" synchronized="false"
   8597       static="false" final="false" visibility="public"
   8598       deprecated="not deprecated">
   8599       <param name="binder" type="com.google.inject.Binder"/>
   8600       <doc>
   8601       <![CDATA[Writes this module element to the given binder (optional operation).
   8602 
   8603  @param binder to apply configuration element to
   8604  @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this
   8605      element.]]>
   8606       </doc>
   8607     </method>
   8608     <doc>
   8609     <![CDATA[A core component of a module or injector.
   8610 
   8611  <p>The elements of a module can be inspected, validated and rewritten. Use {@link
   8612  Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements
   8613  from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them.
   8614  This can be used for static analysis and generation of Guice modules.
   8615 
   8616  <p>The elements of an injector can be inspected and exercised. Use {@link
   8617  com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors.
   8618 
   8619  @author jessewilson (a] google.com (Jesse Wilson)
   8620  @author crazybob (a] google.com (Bob Lee)
   8621  @since 2.0]]>
   8622     </doc>
   8623   </interface>
   8624   <!-- end interface com.google.inject.spi.Element -->
   8625   <!-- start class com.google.inject.spi.Elements -->
   8626   <class name="Elements" extends="java.lang.Object"
   8627     abstract="false"
   8628     static="false" final="true" visibility="public"
   8629     deprecated="not deprecated">
   8630     <constructor name="Elements"
   8631       static="false" final="false" visibility="public"
   8632       deprecated="not deprecated">
   8633     </constructor>
   8634     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8635       abstract="false" native="false" synchronized="false"
   8636       static="true" final="false" visibility="public"
   8637       deprecated="not deprecated">
   8638       <param name="modules" type="com.google.inject.Module[]"/>
   8639       <doc>
   8640       <![CDATA[Records the elements executed by {@code modules}.]]>
   8641       </doc>
   8642     </method>
   8643     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8644       abstract="false" native="false" synchronized="false"
   8645       static="true" final="false" visibility="public"
   8646       deprecated="not deprecated">
   8647       <param name="stage" type="com.google.inject.Stage"/>
   8648       <param name="modules" type="com.google.inject.Module[]"/>
   8649       <doc>
   8650       <![CDATA[Records the elements executed by {@code modules}.]]>
   8651       </doc>
   8652     </method>
   8653     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8654       abstract="false" native="false" synchronized="false"
   8655       static="true" final="false" visibility="public"
   8656       deprecated="not deprecated">
   8657       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   8658       <doc>
   8659       <![CDATA[Records the elements executed by {@code modules}.]]>
   8660       </doc>
   8661     </method>
   8662     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8663       abstract="false" native="false" synchronized="false"
   8664       static="true" final="false" visibility="public"
   8665       deprecated="not deprecated">
   8666       <param name="stage" type="com.google.inject.Stage"/>
   8667       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   8668       <doc>
   8669       <![CDATA[Records the elements executed by {@code modules}.]]>
   8670       </doc>
   8671     </method>
   8672     <method name="getModule" return="com.google.inject.Module"
   8673       abstract="false" native="false" synchronized="false"
   8674       static="true" final="false" visibility="public"
   8675       deprecated="not deprecated">
   8676       <param name="elements" type="java.lang.Iterable&lt;? extends com.google.inject.spi.Element&gt;"/>
   8677       <doc>
   8678       <![CDATA[Returns the module composed of {@code elements}.]]>
   8679       </doc>
   8680     </method>
   8681     <doc>
   8682     <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link
   8683  Element#applyTo(Binder) rewritten}.
   8684 
   8685  @author jessewilson (a] google.com (Jesse Wilson)
   8686  @since 2.0]]>
   8687     </doc>
   8688   </class>
   8689   <!-- end class com.google.inject.spi.Elements -->
   8690   <!-- start class com.google.inject.spi.ElementSource -->
   8691   <class name="ElementSource" extends="java.lang.Object"
   8692     abstract="false"
   8693     static="false" final="true" visibility="public"
   8694     deprecated="not deprecated">
   8695     <method name="getOriginalElementSource" return="com.google.inject.spi.ElementSource"
   8696       abstract="false" native="false" synchronized="false"
   8697       static="false" final="false" visibility="public"
   8698       deprecated="not deprecated">
   8699       <doc>
   8700       <![CDATA[Returns the {@link ElementSource} of the element this was created or copied from. If this was
   8701  not created or copied from another element, returns {@code null}.]]>
   8702       </doc>
   8703     </method>
   8704     <method name="getDeclaringSource" return="java.lang.Object"
   8705       abstract="false" native="false" synchronized="false"
   8706       static="false" final="false" visibility="public"
   8707       deprecated="not deprecated">
   8708       <doc>
   8709       <![CDATA[Returns a single location in source code that defines the element. It can be any object
   8710  such as {@link java.lang.reflect.Constructor}, {@link java.lang.reflect.Method},
   8711  {@link java.lang.reflect.Field}, {@link StackTraceElement}, etc. For
   8712  example, if the element is created from a method annotated by {@literal @Provides}, the
   8713  declaring source of element would be the method itself.]]>
   8714       </doc>
   8715     </method>
   8716     <method name="getModuleClassNames" return="java.util.List&lt;java.lang.String&gt;"
   8717       abstract="false" native="false" synchronized="false"
   8718       static="false" final="false" visibility="public"
   8719       deprecated="not deprecated">
   8720       <doc>
   8721       <![CDATA[Returns the class names of modules involved in creating this {@link Element}. The first
   8722  element (index 0) is the class name of module that defined the element, and the last element
   8723  is the class name of root module.]]>
   8724       </doc>
   8725     </method>
   8726     <method name="getModuleConfigurePositionsInStackTrace" return="java.util.List&lt;java.lang.Integer&gt;"
   8727       abstract="false" native="false" synchronized="false"
   8728       static="false" final="false" visibility="public"
   8729       deprecated="not deprecated">
   8730       <doc>
   8731       <![CDATA[Returns the position of {@link com.google.inject.Module#configure configure(Binder)} method
   8732  call in the {@link #getStackTrace stack trace} for modules that their classes returned by
   8733  {@link #getModuleClassNames}. For example, if the stack trace looks like the following:
   8734  <p>
   8735  {@code
   8736   0 - Binder.bind(),
   8737   1 - ModuleTwo.configure(),
   8738   2 - Binder.install(),
   8739   3 - ModuleOne.configure(),
   8740   4 - theRest(). 
   8741  }
   8742  <p>
   8743  1 and 3 are returned.
   8744  <p>
   8745  In the cases where stack trace is not available (i.e., the stack trace was not collected),
   8746  it returns -1 for all module positions.]]>
   8747       </doc>
   8748     </method>
   8749     <method name="getStackTrace" return="java.lang.StackTraceElement[]"
   8750       abstract="false" native="false" synchronized="false"
   8751       static="false" final="false" visibility="public"
   8752       deprecated="not deprecated">
   8753       <doc>
   8754       <![CDATA[Returns the sequence of method calls that ends at one of {@link com.google.inject.Binder}
   8755  {@code bindXXX()} methods and eventually defines the element. Note that
   8756  {@link #getStackTrace} lists {@link StackTraceElement StackTraceElements} in reverse
   8757  chronological order. The first element (index zero) is the last method call and the last
   8758  element is the first method invocation. In the cases where stack trace is not available
   8759  (i.e.,the stack trace was not collected), it returns an empty array.]]>
   8760       </doc>
   8761     </method>
   8762     <method name="toString" return="java.lang.String"
   8763       abstract="false" native="false" synchronized="false"
   8764       static="false" final="false" visibility="public"
   8765       deprecated="not deprecated">
   8766       <doc>
   8767       <![CDATA[Returns {@code getDeclaringSource().toString()} value.]]>
   8768       </doc>
   8769     </method>
   8770     <doc>
   8771     <![CDATA[Contains information about where and how an {@link Element element} was
   8772  bound.
   8773  <p>
   8774  The {@link #getDeclaringSource() declaring source} refers to a location in
   8775  source code that defines the Guice {@link Element element}. For example, if
   8776  the element is created from a method annotated by {@literal @Provides}, the
   8777  declaring source of element would be the method itself.
   8778  <p>
   8779  The {@link #getStackTrace()} refers to the sequence of calls ends at one of
   8780  {@link com.google.inject.Binder} {@code bindXXX()} methods and eventually
   8781  defines the element. Note that {@link #getStackTrace()} lists
   8782  {@link StackTraceElement StackTraceElements} in reverse chronological order.
   8783  The first element (index zero) is the last method call and the last element
   8784  is the first method invocation. By default, the stack trace is not collected.
   8785  The default behavior can be changed by setting the
   8786  {@code guice_include_stack_traces} flag value. The value can be either
   8787  {@code OFF}, {@code ONLY_FOR_DECLARING_SOURCE} or {@code COMPLETE}. Note that
   8788  collecting stack traces for every binding can cause a performance hit when
   8789  the injector is created.
   8790  <p>
   8791  The sequence of class names of {@link com.google.inject.Module modules}
   8792  involved in the element creation can be retrieved by
   8793  {@link #getModuleClassNames()}. Similar to {@link #getStackTrace()}, the
   8794  order is reverse chronological. The first module (index 0) is the module that
   8795  installs the {@link Element element}. The last module is the root module.
   8796  <p>
   8797  In order to support the cases where a Guice {@link Element element} is
   8798  created from another Guice {@link Element element} (original) (e.g., by
   8799  {@link Element#applyTo}), it also provides a reference to the original
   8800  element source ({@link #getOriginalElementSource()}).
   8801 
   8802  @since 4.0]]>
   8803     </doc>
   8804   </class>
   8805   <!-- end class com.google.inject.spi.ElementSource -->
   8806   <!-- start interface com.google.inject.spi.ElementVisitor -->
   8807   <interface name="ElementVisitor"    abstract="true"
   8808     static="false" final="false" visibility="public"
   8809     deprecated="not deprecated">
   8810     <method name="visit" return="V"
   8811       abstract="true" native="false" synchronized="false"
   8812       static="false" final="false" visibility="public"
   8813       deprecated="not deprecated">
   8814       <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
   8815       <doc>
   8816       <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting
   8817  instances of the type.]]>
   8818       </doc>
   8819     </method>
   8820     <method name="visit" return="V"
   8821       abstract="true" native="false" synchronized="false"
   8822       static="false" final="false" visibility="public"
   8823       deprecated="not deprecated">
   8824       <param name="binding" type="com.google.inject.spi.InterceptorBinding"/>
   8825       <doc>
   8826       <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]>
   8827       </doc>
   8828     </method>
   8829     <method name="visit" return="V"
   8830       abstract="true" native="false" synchronized="false"
   8831       static="false" final="false" visibility="public"
   8832       deprecated="not deprecated">
   8833       <param name="binding" type="com.google.inject.spi.ScopeBinding"/>
   8834       <doc>
   8835       <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]>
   8836       </doc>
   8837     </method>
   8838     <method name="visit" return="V"
   8839       abstract="true" native="false" synchronized="false"
   8840       static="false" final="false" visibility="public"
   8841       deprecated="not deprecated">
   8842       <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/>
   8843       <doc>
   8844       <![CDATA[Visit a registration of type converters for matching target types.]]>
   8845       </doc>
   8846     </method>
   8847     <method name="visit" return="V"
   8848       abstract="true" native="false" synchronized="false"
   8849       static="false" final="false" visibility="public"
   8850       deprecated="not deprecated">
   8851       <param name="request" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
   8852       <doc>
   8853       <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]>
   8854       </doc>
   8855     </method>
   8856     <method name="visit" return="V"
   8857       abstract="true" native="false" synchronized="false"
   8858       static="false" final="false" visibility="public"
   8859       deprecated="not deprecated">
   8860       <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/>
   8861       <doc>
   8862       <![CDATA[Visit a request to inject the static fields and methods of type.]]>
   8863       </doc>
   8864     </method>
   8865     <method name="visit" return="V"
   8866       abstract="true" native="false" synchronized="false"
   8867       static="false" final="false" visibility="public"
   8868       deprecated="not deprecated">
   8869       <param name="lookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
   8870       <doc>
   8871       <![CDATA[Visit a lookup of the provider for a type.]]>
   8872       </doc>
   8873     </method>
   8874     <method name="visit" return="V"
   8875       abstract="true" native="false" synchronized="false"
   8876       static="false" final="false" visibility="public"
   8877       deprecated="not deprecated">
   8878       <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
   8879       <doc>
   8880       <![CDATA[Visit a lookup of the members injector.]]>
   8881       </doc>
   8882     </method>
   8883     <method name="visit" return="V"
   8884       abstract="true" native="false" synchronized="false"
   8885       static="false" final="false" visibility="public"
   8886       deprecated="not deprecated">
   8887       <param name="message" type="com.google.inject.spi.Message"/>
   8888       <doc>
   8889       <![CDATA[Visit an error message and the context in which it occured.]]>
   8890       </doc>
   8891     </method>
   8892     <method name="visit" return="V"
   8893       abstract="true" native="false" synchronized="false"
   8894       static="false" final="false" visibility="public"
   8895       deprecated="not deprecated">
   8896       <param name="elements" type="com.google.inject.spi.PrivateElements"/>
   8897       <doc>
   8898       <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder
   8899  private binder}.]]>
   8900       </doc>
   8901     </method>
   8902     <method name="visit" return="V"
   8903       abstract="true" native="false" synchronized="false"
   8904       static="false" final="false" visibility="public"
   8905       deprecated="not deprecated">
   8906       <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
   8907       <doc>
   8908       <![CDATA[Visit an injectable type listener binding.]]>
   8909       </doc>
   8910     </method>
   8911     <method name="visit" return="V"
   8912       abstract="true" native="false" synchronized="false"
   8913       static="false" final="false" visibility="public"
   8914       deprecated="not deprecated">
   8915       <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/>
   8916       <doc>
   8917       <![CDATA[Visit a provision listener binding.
   8918 
   8919  @since 4.0]]>
   8920       </doc>
   8921     </method>
   8922     <method name="visit" return="V"
   8923       abstract="true" native="false" synchronized="false"
   8924       static="false" final="false" visibility="public"
   8925       deprecated="not deprecated">
   8926       <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
   8927       <doc>
   8928       <![CDATA[Visit a require explicit bindings command.
   8929  
   8930  @since 3.0]]>
   8931       </doc>
   8932     </method>
   8933     <method name="visit" return="V"
   8934       abstract="true" native="false" synchronized="false"
   8935       static="false" final="false" visibility="public"
   8936       deprecated="not deprecated">
   8937       <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
   8938       <doc>
   8939       <![CDATA[Visit a disable circular proxies command.
   8940  
   8941  @since 3.0]]>
   8942       </doc>
   8943     </method>
   8944     <method name="visit" return="V"
   8945       abstract="true" native="false" synchronized="false"
   8946       static="false" final="false" visibility="public"
   8947       deprecated="not deprecated">
   8948       <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/>
   8949       <doc>
   8950       <![CDATA[Visit a require explicit {@literal @}{@link Inject} command.
   8951  
   8952  @since 4.0]]>
   8953       </doc>
   8954     </method>
   8955     <method name="visit" return="V"
   8956       abstract="true" native="false" synchronized="false"
   8957       static="false" final="false" visibility="public"
   8958       deprecated="not deprecated">
   8959       <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/>
   8960       <doc>
   8961       <![CDATA[Visit a require exact binding annotations command.
   8962 
   8963  @since 4.0]]>
   8964       </doc>
   8965     </method>
   8966     <method name="visit" return="V"
   8967       abstract="true" native="false" synchronized="false"
   8968       static="false" final="false" visibility="public"
   8969       deprecated="not deprecated">
   8970       <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/>
   8971       <doc>
   8972       <![CDATA[Visits a {@link Binder#scanModulesForAnnotatedMethods} command.
   8973 
   8974  @since 4.0]]>
   8975       </doc>
   8976     </method>
   8977     <doc>
   8978     <![CDATA[Visit elements.
   8979 
   8980  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8981      {@code return null} if no return type is needed.
   8982  
   8983  @since 2.0]]>
   8984     </doc>
   8985   </interface>
   8986   <!-- end interface com.google.inject.spi.ElementVisitor -->
   8987   <!-- start interface com.google.inject.spi.ExposedBinding -->
   8988   <interface name="ExposedBinding"    abstract="true"
   8989     static="false" final="false" visibility="public"
   8990     deprecated="not deprecated">
   8991     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8992     <implements name="com.google.inject.spi.HasDependencies"/>
   8993     <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements"
   8994       abstract="true" native="false" synchronized="false"
   8995       static="false" final="false" visibility="public"
   8996       deprecated="not deprecated">
   8997       <doc>
   8998       <![CDATA[Returns the enclosed environment that holds the original binding.]]>
   8999       </doc>
   9000     </method>
   9001     <method name="applyTo"
   9002       abstract="true" native="false" synchronized="false"
   9003       static="false" final="false" visibility="public"
   9004       deprecated="not deprecated">
   9005       <param name="binder" type="com.google.inject.Binder"/>
   9006       <doc>
   9007       <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]>
   9008       </doc>
   9009     </method>
   9010     <doc>
   9011     <![CDATA[A binding to a key exposed from an enclosed private environment.
   9012 
   9013  @author jessewilson (a] google.com (Jesse Wilson)
   9014  @since 2.0]]>
   9015     </doc>
   9016   </interface>
   9017   <!-- end interface com.google.inject.spi.ExposedBinding -->
   9018   <!-- start interface com.google.inject.spi.HasDependencies -->
   9019   <interface name="HasDependencies"    abstract="true"
   9020     static="false" final="false" visibility="public"
   9021     deprecated="not deprecated">
   9022     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   9023       abstract="true" native="false" synchronized="false"
   9024       static="false" final="false" visibility="public"
   9025       deprecated="not deprecated">
   9026       <doc>
   9027       <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not
   9028  known statically, a dependency for the {@link com.google.inject.Injector Injector} will be
   9029  included in the returned set.
   9030  
   9031  @return a possibly empty set]]>
   9032       </doc>
   9033     </method>
   9034     <doc>
   9035     <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider
   9036  providers} and instances that expose their dependencies explicitly.
   9037 
   9038  @author jessewilson (a] google.com (Jesse Wilson)
   9039  @since 2.0]]>
   9040     </doc>
   9041   </interface>
   9042   <!-- end interface com.google.inject.spi.HasDependencies -->
   9043   <!-- start interface com.google.inject.spi.InjectionListener -->
   9044   <interface name="InjectionListener"    abstract="true"
   9045     static="false" final="false" visibility="public"
   9046     deprecated="not deprecated">
   9047     <method name="afterInjection"
   9048       abstract="true" native="false" synchronized="false"
   9049       static="false" final="false" visibility="public"
   9050       deprecated="not deprecated">
   9051       <param name="injectee" type="I"/>
   9052       <doc>
   9053       <![CDATA[Invoked by Guice after it injects the fields and methods of instance.
   9054 
   9055  @param injectee instance that Guice injected dependencies into]]>
   9056       </doc>
   9057     </method>
   9058     <doc>
   9059     <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further
   9060  injections, post-injection initialization, and more.
   9061 
   9062  @author crazybob (a] google.com (Bob Lee)
   9063  @author jessewilson (a] google.com (Jesse Wilson)
   9064  @since 2.0]]>
   9065     </doc>
   9066   </interface>
   9067   <!-- end interface com.google.inject.spi.InjectionListener -->
   9068   <!-- start class com.google.inject.spi.InjectionPoint -->
   9069   <class name="InjectionPoint" extends="java.lang.Object"
   9070     abstract="false"
   9071     static="false" final="true" visibility="public"
   9072     deprecated="not deprecated">
   9073     <method name="getMember" return="java.lang.reflect.Member"
   9074       abstract="false" native="false" synchronized="false"
   9075       static="false" final="false" visibility="public"
   9076       deprecated="not deprecated">
   9077       <doc>
   9078       <![CDATA[Returns the injected constructor, field, or method.]]>
   9079       </doc>
   9080     </method>
   9081     <method name="getDependencies" return="java.util.List&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   9082       abstract="false" native="false" synchronized="false"
   9083       static="false" final="false" visibility="public"
   9084       deprecated="not deprecated">
   9085       <doc>
   9086       <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or
   9087  constructor, the dependencies will correspond to that member's parameters. Field injection
   9088  points always have a single dependency for the field itself.
   9089 
   9090  @return a possibly-empty list]]>
   9091       </doc>
   9092     </method>
   9093     <method name="isOptional" return="boolean"
   9094       abstract="false" native="false" synchronized="false"
   9095       static="false" final="false" visibility="public"
   9096       deprecated="not deprecated">
   9097       <doc>
   9098       <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings
   9099  for all required dependencies. Both explicit bindings (as specified in a module), and implicit
   9100  bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default
   9101  constructors etc.) may be used to satisfy optional injection points.]]>
   9102       </doc>
   9103     </method>
   9104     <method name="isToolable" return="boolean"
   9105       abstract="false" native="false" synchronized="false"
   9106       static="false" final="false" visibility="public"
   9107       deprecated="not deprecated">
   9108       <doc>
   9109       <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}.
   9110  
   9111  @since 3.0]]>
   9112       </doc>
   9113     </method>
   9114     <method name="getDeclaringType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   9115       abstract="false" native="false" synchronized="false"
   9116       static="false" final="false" visibility="public"
   9117       deprecated="not deprecated">
   9118       <doc>
   9119       <![CDATA[Returns the generic type that defines this injection point. If the member exists on a
   9120  parameterized type, the result will include more type information than the member's {@link
   9121  Member#getDeclaringClass() raw declaring class}.
   9122  
   9123  @since 3.0]]>
   9124       </doc>
   9125     </method>
   9126     <method name="equals" return="boolean"
   9127       abstract="false" native="false" synchronized="false"
   9128       static="false" final="false" visibility="public"
   9129       deprecated="not deprecated">
   9130       <param name="o" type="java.lang.Object"/>
   9131     </method>
   9132     <method name="hashCode" return="int"
   9133       abstract="false" native="false" synchronized="false"
   9134       static="false" final="false" visibility="public"
   9135       deprecated="not deprecated">
   9136     </method>
   9137     <method name="toString" return="java.lang.String"
   9138       abstract="false" native="false" synchronized="false"
   9139       static="false" final="false" visibility="public"
   9140       deprecated="not deprecated">
   9141     </method>
   9142     <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
   9143       abstract="false" native="false" synchronized="false"
   9144       static="true" final="false" visibility="public"
   9145       deprecated="not deprecated">
   9146       <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
   9147       <doc>
   9148       <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code
   9149  constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a
   9150  type literal.
   9151 
   9152  @param constructor any single constructor present on {@code type}.
   9153  
   9154  @since 3.0]]>
   9155       </doc>
   9156     </method>
   9157     <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
   9158       abstract="false" native="false" synchronized="false"
   9159       static="true" final="false" visibility="public"
   9160       deprecated="not deprecated">
   9161       <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
   9162       <param name="type" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   9163       <doc>
   9164       <![CDATA[Returns a new injection point for the specified constructor of {@code type}.
   9165 
   9166  @param constructor any single constructor present on {@code type}.
   9167  @param type the concrete type that defines {@code constructor}.
   9168  
   9169  @since 3.0]]>
   9170       </doc>
   9171     </method>
   9172     <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
   9173       abstract="false" native="false" synchronized="false"
   9174       static="true" final="false" visibility="public"
   9175       deprecated="not deprecated">
   9176       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   9177       <doc>
   9178       <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
   9179 
   9180  @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
   9181      or a no-arguments constructor that is not private.
   9182  @throws ConfigurationException if there is no injectable constructor, more than one injectable
   9183      constructor, or if parameters of the injectable constructor are malformed, such as a
   9184      parameter with multiple binding annotations.]]>
   9185       </doc>
   9186     </method>
   9187     <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
   9188       abstract="false" native="false" synchronized="false"
   9189       static="true" final="false" visibility="public"
   9190       deprecated="not deprecated">
   9191       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   9192       <doc>
   9193       <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
   9194 
   9195  @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
   9196      or a no-arguments constructor that is not private.
   9197  @throws ConfigurationException if there is no injectable constructor, more than one injectable
   9198      constructor, or if parameters of the injectable constructor are malformed, such as a
   9199      parameter with multiple binding annotations.]]>
   9200       </doc>
   9201     </method>
   9202     <method name="forMethod" return="com.google.inject.spi.InjectionPoint"
   9203       abstract="false" native="false" synchronized="false"
   9204       static="true" final="false" visibility="public"
   9205       deprecated="not deprecated">
   9206       <param name="method" type="java.lang.reflect.Method"/>
   9207       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   9208       <doc>
   9209       <![CDATA[Returns a new injection point for the specified method of {@code type}.
   9210  This is useful for extensions that need to build dependency graphs from
   9211  arbitrary methods.
   9212 
   9213  @param method any single method present on {@code type}.
   9214  @param type the concrete type that defines {@code method}.
   9215 
   9216  @since 4.0]]>
   9217       </doc>
   9218     </method>
   9219     <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9220       abstract="false" native="false" synchronized="false"
   9221       static="true" final="false" visibility="public"
   9222       deprecated="not deprecated">
   9223       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   9224       <doc>
   9225       <![CDATA[Returns all static method and field injection points on {@code type}.
   9226 
   9227  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9228       fields are returned and then all methods. Within the fields, supertype fields are returned
   9229       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9230  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9231       a field with multiple binding annotations. The exception's {@link
   9232       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9233       of the valid injection points.]]>
   9234       </doc>
   9235     </method>
   9236     <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9237       abstract="false" native="false" synchronized="false"
   9238       static="true" final="false" visibility="public"
   9239       deprecated="not deprecated">
   9240       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   9241       <doc>
   9242       <![CDATA[Returns all static method and field injection points on {@code type}.
   9243 
   9244  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9245       fields are returned and then all methods. Within the fields, supertype fields are returned
   9246       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9247  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9248       a field with multiple binding annotations. The exception's {@link
   9249       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9250       of the valid injection points.]]>
   9251       </doc>
   9252     </method>
   9253     <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9254       abstract="false" native="false" synchronized="false"
   9255       static="true" final="false" visibility="public"
   9256       deprecated="not deprecated">
   9257       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   9258       <doc>
   9259       <![CDATA[Returns all instance method and field injection points on {@code type}.
   9260 
   9261  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9262       fields are returned and then all methods. Within the fields, supertype fields are returned
   9263       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9264  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9265       a field with multiple binding annotations. The exception's {@link
   9266       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9267       of the valid injection points.]]>
   9268       </doc>
   9269     </method>
   9270     <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9271       abstract="false" native="false" synchronized="false"
   9272       static="true" final="false" visibility="public"
   9273       deprecated="not deprecated">
   9274       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   9275       <doc>
   9276       <![CDATA[Returns all instance method and field injection points on {@code type}.
   9277 
   9278  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9279       fields are returned and then all methods. Within the fields, supertype fields are returned
   9280       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9281  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9282       a field with multiple binding annotations. The exception's {@link
   9283       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9284       of the valid injection points.]]>
   9285       </doc>
   9286     </method>
   9287     <doc>
   9288     <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the
   9289  {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may
   9290  omit the annotation.
   9291 
   9292  @author crazybob (a] google.com (Bob Lee)
   9293  @since 2.0]]>
   9294     </doc>
   9295   </class>
   9296   <!-- end class com.google.inject.spi.InjectionPoint -->
   9297   <!-- start class com.google.inject.spi.InjectionRequest -->
   9298   <class name="InjectionRequest" extends="java.lang.Object"
   9299     abstract="false"
   9300     static="false" final="true" visibility="public"
   9301     deprecated="not deprecated">
   9302     <implements name="com.google.inject.spi.Element"/>
   9303     <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;, T"
   9304       static="false" final="false" visibility="public"
   9305       deprecated="not deprecated">
   9306     </constructor>
   9307     <method name="getSource" return="java.lang.Object"
   9308       abstract="false" native="false" synchronized="false"
   9309       static="false" final="false" visibility="public"
   9310       deprecated="not deprecated">
   9311     </method>
   9312     <method name="getInstance" return="T"
   9313       abstract="false" native="false" synchronized="false"
   9314       static="false" final="false" visibility="public"
   9315       deprecated="not deprecated">
   9316     </method>
   9317     <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
   9318       abstract="false" native="false" synchronized="false"
   9319       static="false" final="false" visibility="public"
   9320       deprecated="not deprecated">
   9321     </method>
   9322     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9323       abstract="false" native="false" synchronized="false"
   9324       static="false" final="false" visibility="public"
   9325       deprecated="not deprecated">
   9326       <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
   9327       <doc>
   9328       <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill
   9329  this request.
   9330 
   9331  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9332       fields are returned and then all methods. Within the fields, supertype fields are returned
   9333       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9334  @throws ConfigurationException if there is a malformed injection point on the class of {@code
   9335       instance}, such as a field with multiple binding annotations. The exception's {@link
   9336       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9337       of the valid injection points.]]>
   9338       </doc>
   9339     </method>
   9340     <method name="acceptVisitor" return="R"
   9341       abstract="false" native="false" synchronized="false"
   9342       static="false" final="false" visibility="public"
   9343       deprecated="not deprecated">
   9344       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
   9345     </method>
   9346     <method name="applyTo"
   9347       abstract="false" native="false" synchronized="false"
   9348       static="false" final="false" visibility="public"
   9349       deprecated="not deprecated">
   9350       <param name="binder" type="com.google.inject.Binder"/>
   9351     </method>
   9352     <doc>
   9353     <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created
   9354  explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object)
   9355  requestInjection()} statements:
   9356  <pre>
   9357      requestInjection(serviceInstance);</pre>
   9358 
   9359  @author mikeward (a] google.com (Mike Ward)
   9360  @since 2.0]]>
   9361     </doc>
   9362   </class>
   9363   <!-- end class com.google.inject.spi.InjectionRequest -->
   9364   <!-- start interface com.google.inject.spi.InstanceBinding -->
   9365   <interface name="InstanceBinding"    abstract="true"
   9366     static="false" final="false" visibility="public"
   9367     deprecated="not deprecated">
   9368     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9369     <implements name="com.google.inject.spi.HasDependencies"/>
   9370     <method name="getInstance" return="T"
   9371       abstract="true" native="false" synchronized="false"
   9372       static="false" final="false" visibility="public"
   9373       deprecated="not deprecated">
   9374       <doc>
   9375       <![CDATA[Returns the user-supplied instance.]]>
   9376       </doc>
   9377     </method>
   9378     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9379       abstract="true" native="false" synchronized="false"
   9380       static="false" final="false" visibility="public"
   9381       deprecated="not deprecated">
   9382       <doc>
   9383       <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation
   9384  time only.
   9385 
   9386  @return a possibly empty set]]>
   9387       </doc>
   9388     </method>
   9389     <doc>
   9390     <![CDATA[A binding to a single instance. The same instance is returned for every injection.
   9391 
   9392  @author jessewilson (a] google.com (Jesse Wilson)
   9393  @since 2.0]]>
   9394     </doc>
   9395   </interface>
   9396   <!-- end interface com.google.inject.spi.InstanceBinding -->
   9397   <!-- start class com.google.inject.spi.InterceptorBinding -->
   9398   <class name="InterceptorBinding" extends="java.lang.Object"
   9399     abstract="false"
   9400     static="false" final="true" visibility="public"
   9401     deprecated="not deprecated">
   9402     <implements name="com.google.inject.spi.Element"/>
   9403     <method name="getSource" return="java.lang.Object"
   9404       abstract="false" native="false" synchronized="false"
   9405       static="false" final="false" visibility="public"
   9406       deprecated="not deprecated">
   9407     </method>
   9408     <method name="getClassMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"
   9409       abstract="false" native="false" synchronized="false"
   9410       static="false" final="false" visibility="public"
   9411       deprecated="not deprecated">
   9412     </method>
   9413     <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"
   9414       abstract="false" native="false" synchronized="false"
   9415       static="false" final="false" visibility="public"
   9416       deprecated="not deprecated">
   9417     </method>
   9418     <method name="getInterceptors" return="java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;"
   9419       abstract="false" native="false" synchronized="false"
   9420       static="false" final="false" visibility="public"
   9421       deprecated="not deprecated">
   9422     </method>
   9423     <method name="acceptVisitor" return="T"
   9424       abstract="false" native="false" synchronized="false"
   9425       static="false" final="false" visibility="public"
   9426       deprecated="not deprecated">
   9427       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9428     </method>
   9429     <method name="applyTo"
   9430       abstract="false" native="false" synchronized="false"
   9431       static="false" final="false" visibility="public"
   9432       deprecated="not deprecated">
   9433       <param name="binder" type="com.google.inject.Binder"/>
   9434     </method>
   9435     <doc>
   9436     <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created
   9437  explicitly in a module using {@link com.google.inject.Binder#bindInterceptor(
   9438  Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements:
   9439  <pre>
   9440      bindInterceptor(Matchers.subclassesOf(MyAction.class),
   9441          Matchers.annotatedWith(Transactional.class),
   9442          new MyTransactionInterceptor());</pre>
   9443 
   9444  or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher,
   9445  org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}.
   9446 
   9447  @author jessewilson (a] google.com (Jesse Wilson)
   9448  @since 2.0]]>
   9449     </doc>
   9450   </class>
   9451   <!-- end class com.google.inject.spi.InterceptorBinding -->
   9452   <!-- start interface com.google.inject.spi.LinkedKeyBinding -->
   9453   <interface name="LinkedKeyBinding"    abstract="true"
   9454     static="false" final="false" visibility="public"
   9455     deprecated="not deprecated">
   9456     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9457     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends T&gt;"
   9458       abstract="true" native="false" synchronized="false"
   9459       static="false" final="false" visibility="public"
   9460       deprecated="not deprecated">
   9461       <doc>
   9462       <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an
   9463  injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
   9464       </doc>
   9465     </method>
   9466     <doc>
   9467     <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections.
   9468 
   9469  @author jessewilson (a] google.com (Jesse Wilson)
   9470  @since 2.0]]>
   9471     </doc>
   9472   </interface>
   9473   <!-- end interface com.google.inject.spi.LinkedKeyBinding -->
   9474   <!-- start class com.google.inject.spi.MembersInjectorLookup -->
   9475   <class name="MembersInjectorLookup" extends="java.lang.Object"
   9476     abstract="false"
   9477     static="false" final="true" visibility="public"
   9478     deprecated="not deprecated">
   9479     <implements name="com.google.inject.spi.Element"/>
   9480     <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;"
   9481       static="false" final="false" visibility="public"
   9482       deprecated="not deprecated">
   9483     </constructor>
   9484     <method name="getSource" return="java.lang.Object"
   9485       abstract="false" native="false" synchronized="false"
   9486       static="false" final="false" visibility="public"
   9487       deprecated="not deprecated">
   9488     </method>
   9489     <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
   9490       abstract="false" native="false" synchronized="false"
   9491       static="false" final="false" visibility="public"
   9492       deprecated="not deprecated">
   9493       <doc>
   9494       <![CDATA[Gets the type containing the members to be injected.]]>
   9495       </doc>
   9496     </method>
   9497     <method name="acceptVisitor" return="T"
   9498       abstract="false" native="false" synchronized="false"
   9499       static="false" final="false" visibility="public"
   9500       deprecated="not deprecated">
   9501       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9502     </method>
   9503     <method name="initializeDelegate"
   9504       abstract="false" native="false" synchronized="false"
   9505       static="false" final="false" visibility="public"
   9506       deprecated="not deprecated">
   9507       <param name="delegate" type="com.google.inject.MembersInjector&lt;T&gt;"/>
   9508       <doc>
   9509       <![CDATA[Sets the actual members injector.
   9510 
   9511  @throws IllegalStateException if the delegate is already set]]>
   9512       </doc>
   9513     </method>
   9514     <method name="applyTo"
   9515       abstract="false" native="false" synchronized="false"
   9516       static="false" final="false" visibility="public"
   9517       deprecated="not deprecated">
   9518       <param name="binder" type="com.google.inject.Binder"/>
   9519     </method>
   9520     <method name="getDelegate" return="com.google.inject.MembersInjector&lt;T&gt;"
   9521       abstract="false" native="false" synchronized="false"
   9522       static="false" final="false" visibility="public"
   9523       deprecated="not deprecated">
   9524       <doc>
   9525       <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized.
   9526  The delegate will be initialized when this element is processed, or otherwise used to create
   9527  an injector.]]>
   9528       </doc>
   9529     </method>
   9530     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   9531       abstract="false" native="false" synchronized="false"
   9532       static="false" final="false" visibility="public"
   9533       deprecated="not deprecated">
   9534       <doc>
   9535       <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been
   9536  initialized, which usually happens when the injector is created. The members injector will
   9537  throw an {@code IllegalStateException} if you try to use it beforehand.]]>
   9538       </doc>
   9539     </method>
   9540     <doc>
   9541     <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using
   9542  {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements:
   9543  <pre>
   9544      MembersInjector&lt;PaymentService&gt; membersInjector
   9545          = getMembersInjector(PaymentService.class);</pre>
   9546 
   9547  @author crazybob (a] google.com (Bob Lee)
   9548  @since 2.0]]>
   9549     </doc>
   9550   </class>
   9551   <!-- end class com.google.inject.spi.MembersInjectorLookup -->
   9552   <!-- start class com.google.inject.spi.Message -->
   9553   <class name="Message" extends="java.lang.Object"
   9554     abstract="false"
   9555     static="false" final="true" visibility="public"
   9556     deprecated="not deprecated">
   9557     <implements name="java.io.Serializable"/>
   9558     <implements name="com.google.inject.spi.Element"/>
   9559     <constructor name="Message" type="java.util.List&lt;java.lang.Object&gt;, java.lang.String, java.lang.Throwable"
   9560       static="false" final="false" visibility="public"
   9561       deprecated="not deprecated">
   9562       <doc>
   9563       <![CDATA[@since 2.0]]>
   9564       </doc>
   9565     </constructor>
   9566     <constructor name="Message" type="java.lang.String, java.lang.Throwable"
   9567       static="false" final="false" visibility="public"
   9568       deprecated="not deprecated">
   9569       <doc>
   9570       <![CDATA[@since 4.0]]>
   9571       </doc>
   9572     </constructor>
   9573     <constructor name="Message" type="java.lang.Object, java.lang.String"
   9574       static="false" final="false" visibility="public"
   9575       deprecated="not deprecated">
   9576     </constructor>
   9577     <constructor name="Message" type="java.lang.String"
   9578       static="false" final="false" visibility="public"
   9579       deprecated="not deprecated">
   9580     </constructor>
   9581     <method name="getSource" return="java.lang.String"
   9582       abstract="false" native="false" synchronized="false"
   9583       static="false" final="false" visibility="public"
   9584       deprecated="not deprecated">
   9585     </method>
   9586     <method name="getSources" return="java.util.List&lt;java.lang.Object&gt;"
   9587       abstract="false" native="false" synchronized="false"
   9588       static="false" final="false" visibility="public"
   9589       deprecated="not deprecated">
   9590       <doc>
   9591       <![CDATA[@since 2.0]]>
   9592       </doc>
   9593     </method>
   9594     <method name="getMessage" return="java.lang.String"
   9595       abstract="false" native="false" synchronized="false"
   9596       static="false" final="false" visibility="public"
   9597       deprecated="not deprecated">
   9598       <doc>
   9599       <![CDATA[Gets the error message text.]]>
   9600       </doc>
   9601     </method>
   9602     <method name="acceptVisitor" return="T"
   9603       abstract="false" native="false" synchronized="false"
   9604       static="false" final="false" visibility="public"
   9605       deprecated="not deprecated">
   9606       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9607       <doc>
   9608       <![CDATA[@since 2.0]]>
   9609       </doc>
   9610     </method>
   9611     <method name="getCause" return="java.lang.Throwable"
   9612       abstract="false" native="false" synchronized="false"
   9613       static="false" final="false" visibility="public"
   9614       deprecated="not deprecated">
   9615       <doc>
   9616       <![CDATA[Returns the throwable that caused this message, or {@code null} if this
   9617  message was not caused by a throwable.
   9618 
   9619  @since 2.0]]>
   9620       </doc>
   9621     </method>
   9622     <method name="toString" return="java.lang.String"
   9623       abstract="false" native="false" synchronized="false"
   9624       static="false" final="false" visibility="public"
   9625       deprecated="not deprecated">
   9626     </method>
   9627     <method name="hashCode" return="int"
   9628       abstract="false" native="false" synchronized="false"
   9629       static="false" final="false" visibility="public"
   9630       deprecated="not deprecated">
   9631     </method>
   9632     <method name="equals" return="boolean"
   9633       abstract="false" native="false" synchronized="false"
   9634       static="false" final="false" visibility="public"
   9635       deprecated="not deprecated">
   9636       <param name="o" type="java.lang.Object"/>
   9637     </method>
   9638     <method name="applyTo"
   9639       abstract="false" native="false" synchronized="false"
   9640       static="false" final="false" visibility="public"
   9641       deprecated="not deprecated">
   9642       <param name="binder" type="com.google.inject.Binder"/>
   9643       <doc>
   9644       <![CDATA[@since 2.0]]>
   9645       </doc>
   9646     </method>
   9647     <doc>
   9648     <![CDATA[An error message and the context in which it occured. Messages are usually created internally by
   9649  Guice and its extensions. Messages can be created explicitly in a module using {@link
   9650  com.google.inject.Binder#addError(Throwable) addError()} statements:
   9651  <pre>
   9652      try {
   9653        bindPropertiesFromFile();
   9654      } catch (IOException e) {
   9655        addError(e);
   9656      }</pre>
   9657 
   9658  @author crazybob (a] google.com (Bob Lee)]]>
   9659     </doc>
   9660   </class>
   9661   <!-- end class com.google.inject.spi.Message -->
   9662   <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScanner -->
   9663   <class name="ModuleAnnotatedMethodScanner" extends="java.lang.Object"
   9664     abstract="true"
   9665     static="false" final="false" visibility="public"
   9666     deprecated="not deprecated">
   9667     <constructor name="ModuleAnnotatedMethodScanner"
   9668       static="false" final="false" visibility="public"
   9669       deprecated="not deprecated">
   9670     </constructor>
   9671     <method name="annotationClasses" return="java.util.Set&lt;? extends java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;&gt;"
   9672       abstract="true" native="false" synchronized="false"
   9673       static="false" final="false" visibility="public"
   9674       deprecated="not deprecated">
   9675       <doc>
   9676       <![CDATA[Returns the annotations this should scan for. Every method in the module that has one of these
   9677  annotations will create a Provider binding, with the return value of the binding being what's
   9678  provided and the parameters of the method being dependencies of the provider.]]>
   9679       </doc>
   9680     </method>
   9681     <method name="prepareMethod" return="com.google.inject.Key&lt;T&gt;"
   9682       abstract="true" native="false" synchronized="false"
   9683       static="false" final="false" visibility="public"
   9684       deprecated="not deprecated">
   9685       <param name="binder" type="com.google.inject.Binder"/>
   9686       <param name="annotation" type="java.lang.annotation.Annotation"/>
   9687       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   9688       <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/>
   9689       <doc>
   9690       <![CDATA[Prepares a method for binding. This {@code key} parameter is the key discovered from looking at
   9691  the binding annotation and return value of the method. Implementations can modify the key to
   9692  instead bind to another key. For example, Multibinder may want to change
   9693  {@code @SetProvides String provideFoo()} to bind into a unique Key within the multibinder
   9694  instead of binding {@code String}.
   9695 
   9696  <p>The injection point and annotation are provided in case the implementation wants to set the
   9697  key based on the property of the annotation or if any additional preparation is needed for any
   9698  of the dependencies. The annotation is guaranteed to be an instance of one the classes returned
   9699  by {@link #annotationClasses}.]]>
   9700       </doc>
   9701     </method>
   9702     <doc>
   9703     <![CDATA[Allows extensions to scan modules for annotated methods and bind those methods
   9704  as providers, similar to {@code @Provides} methods.
   9705 
   9706  @since 4.0]]>
   9707     </doc>
   9708   </class>
   9709   <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScanner -->
   9710   <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding -->
   9711   <class name="ModuleAnnotatedMethodScannerBinding" extends="java.lang.Object"
   9712     abstract="false"
   9713     static="false" final="true" visibility="public"
   9714     deprecated="not deprecated">
   9715     <implements name="com.google.inject.spi.Element"/>
   9716     <constructor name="ModuleAnnotatedMethodScannerBinding" type="java.lang.Object, com.google.inject.spi.ModuleAnnotatedMethodScanner"
   9717       static="false" final="false" visibility="public"
   9718       deprecated="not deprecated">
   9719     </constructor>
   9720     <method name="getSource" return="java.lang.Object"
   9721       abstract="false" native="false" synchronized="false"
   9722       static="false" final="false" visibility="public"
   9723       deprecated="not deprecated">
   9724     </method>
   9725     <method name="getScanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner"
   9726       abstract="false" native="false" synchronized="false"
   9727       static="false" final="false" visibility="public"
   9728       deprecated="not deprecated">
   9729     </method>
   9730     <method name="acceptVisitor" return="T"
   9731       abstract="false" native="false" synchronized="false"
   9732       static="false" final="false" visibility="public"
   9733       deprecated="not deprecated">
   9734       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9735     </method>
   9736     <method name="applyTo"
   9737       abstract="false" native="false" synchronized="false"
   9738       static="false" final="false" visibility="public"
   9739       deprecated="not deprecated">
   9740       <param name="binder" type="com.google.inject.Binder"/>
   9741     </method>
   9742     <method name="toString" return="java.lang.String"
   9743       abstract="false" native="false" synchronized="false"
   9744       static="false" final="false" visibility="public"
   9745       deprecated="not deprecated">
   9746     </method>
   9747     <doc>
   9748     <![CDATA[Represents a call to {@link Binder#scanModulesForAnnotatedMethods} in a module.
   9749  
   9750  @author sameb (a] google.com (Sam Berlin)
   9751  @since 4.0]]>
   9752     </doc>
   9753   </class>
   9754   <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding -->
   9755   <!-- start interface com.google.inject.spi.PrivateElements -->
   9756   <interface name="PrivateElements"    abstract="true"
   9757     static="false" final="false" visibility="public"
   9758     deprecated="not deprecated">
   9759     <implements name="com.google.inject.spi.Element"/>
   9760     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   9761       abstract="true" native="false" synchronized="false"
   9762       static="false" final="false" visibility="public"
   9763       deprecated="not deprecated">
   9764       <doc>
   9765       <![CDATA[Returns the configuration information in this private environment.]]>
   9766       </doc>
   9767     </method>
   9768     <method name="getInjector" return="com.google.inject.Injector"
   9769       abstract="true" native="false" synchronized="false"
   9770       static="false" final="false" visibility="public"
   9771       deprecated="not deprecated">
   9772       <doc>
   9773       <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't
   9774  been used to create an injector.]]>
   9775       </doc>
   9776     </method>
   9777     <method name="getExposedKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   9778       abstract="true" native="false" synchronized="false"
   9779       static="false" final="false" visibility="public"
   9780       deprecated="not deprecated">
   9781       <doc>
   9782       <![CDATA[Returns the unique exposed keys for these private elements.]]>
   9783       </doc>
   9784     </method>
   9785     <method name="getExposedSource" return="java.lang.Object"
   9786       abstract="true" native="false" synchronized="false"
   9787       static="false" final="false" visibility="public"
   9788       deprecated="not deprecated">
   9789       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   9790       <doc>
   9791       <![CDATA[Returns an arbitrary object containing information about the "place" where this key was
   9792  exposed. Used by Guice in the production of descriptive error messages.
   9793 
   9794  <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
   9795  example. Tools should simply call {@code toString()} on the source object if the type is
   9796  unfamiliar.
   9797 
   9798  @param key one of the keys exposed by this module.]]>
   9799       </doc>
   9800     </method>
   9801     <doc>
   9802     <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by
   9803  default. See {@link com.google.inject.PrivateModule PrivateModule} for details.
   9804 
   9805  @author jessewilson (a] google.com (Jesse Wilson)
   9806  @since 2.0]]>
   9807     </doc>
   9808   </interface>
   9809   <!-- end interface com.google.inject.spi.PrivateElements -->
   9810   <!-- start interface com.google.inject.spi.ProviderBinding -->
   9811   <interface name="ProviderBinding"    abstract="true"
   9812     static="false" final="false" visibility="public"
   9813     deprecated="not deprecated">
   9814     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9815     <method name="getProvidedKey" return="com.google.inject.Key&lt;?&gt;"
   9816       abstract="true" native="false" synchronized="false"
   9817       static="false" final="false" visibility="public"
   9818       deprecated="not deprecated">
   9819       <doc>
   9820       <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding
   9821  can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key)
   9822  Injector.getBinding(providedKey)}]]>
   9823       </doc>
   9824     </method>
   9825     <doc>
   9826     <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding
   9827  is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly).
   9828 
   9829  @author jessewilson (a] google.com (Jesse Wilson)
   9830  @since 2.0]]>
   9831     </doc>
   9832   </interface>
   9833   <!-- end interface com.google.inject.spi.ProviderBinding -->
   9834   <!-- start interface com.google.inject.spi.ProviderInstanceBinding -->
   9835   <interface name="ProviderInstanceBinding"    abstract="true"
   9836     static="false" final="false" visibility="public"
   9837     deprecated="not deprecated">
   9838     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9839     <implements name="com.google.inject.spi.HasDependencies"/>
   9840     <method name="getProviderInstance" return="com.google.inject.Provider&lt;? extends T&gt;"
   9841       abstract="true" native="false" synchronized="false"
   9842       static="false" final="false" visibility="public"
   9843       deprecated="Use {@link #getUserSuppliedProvider} instead.">
   9844       <doc>
   9845       <![CDATA[If the user supplied a JSR330 binding, then this will wrap that one. To always return the
   9846  user-supplied provider, use {@link #getUserSuppliedProvider}.
   9847  
   9848  @deprecated Use {@link #getUserSuppliedProvider} instead.]]>
   9849       </doc>
   9850     </method>
   9851     <method name="getUserSuppliedProvider" return="javax.inject.Provider&lt;? extends T&gt;"
   9852       abstract="true" native="false" synchronized="false"
   9853       static="false" final="false" visibility="public"
   9854       deprecated="not deprecated">
   9855       <doc>
   9856       <![CDATA[Returns the user-supplied, unscoped provider.
   9857  @since 4.0]]>
   9858       </doc>
   9859     </method>
   9860     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9861       abstract="true" native="false" synchronized="false"
   9862       static="false" final="false" visibility="public"
   9863       deprecated="not deprecated">
   9864       <doc>
   9865       <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation
   9866  time only.
   9867 
   9868  @return a possibly empty set]]>
   9869       </doc>
   9870     </method>
   9871     <doc>
   9872     <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve
   9873  injections.
   9874 
   9875  @author jessewilson (a] google.com (Jesse Wilson)
   9876  @since 2.0]]>
   9877     </doc>
   9878   </interface>
   9879   <!-- end interface com.google.inject.spi.ProviderInstanceBinding -->
   9880   <!-- start interface com.google.inject.spi.ProviderKeyBinding -->
   9881   <interface name="ProviderKeyBinding"    abstract="true"
   9882     static="false" final="false" visibility="public"
   9883     deprecated="not deprecated">
   9884     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9885     <method name="getProviderKey" return="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"
   9886       abstract="true" native="false" synchronized="false"
   9887       static="false" final="false" visibility="public"
   9888       deprecated="not deprecated">
   9889       <doc>
   9890       <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an
   9891  injector using {@link com.google.inject.Injector#getBinding(Key)
   9892  Injector.getBinding(providerKey)}]]>
   9893       </doc>
   9894     </method>
   9895     <doc>
   9896     <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that
   9897  provider's {@code get} method is invoked.
   9898 
   9899  @author jessewilson (a] google.com (Jesse Wilson)
   9900  @since 2.0]]>
   9901     </doc>
   9902   </interface>
   9903   <!-- end interface com.google.inject.spi.ProviderKeyBinding -->
   9904   <!-- start class com.google.inject.spi.ProviderLookup -->
   9905   <class name="ProviderLookup" extends="java.lang.Object"
   9906     abstract="false"
   9907     static="false" final="true" visibility="public"
   9908     deprecated="not deprecated">
   9909     <implements name="com.google.inject.spi.Element"/>
   9910     <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key&lt;T&gt;"
   9911       static="false" final="false" visibility="public"
   9912       deprecated="not deprecated">
   9913     </constructor>
   9914     <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.spi.Dependency&lt;T&gt;"
   9915       static="false" final="false" visibility="public"
   9916       deprecated="not deprecated">
   9917       <doc>
   9918       <![CDATA[@since 4.0]]>
   9919       </doc>
   9920     </constructor>
   9921     <method name="getSource" return="java.lang.Object"
   9922       abstract="false" native="false" synchronized="false"
   9923       static="false" final="false" visibility="public"
   9924       deprecated="not deprecated">
   9925     </method>
   9926     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   9927       abstract="false" native="false" synchronized="false"
   9928       static="false" final="false" visibility="public"
   9929       deprecated="not deprecated">
   9930     </method>
   9931     <method name="getDependency" return="com.google.inject.spi.Dependency&lt;T&gt;"
   9932       abstract="false" native="false" synchronized="false"
   9933       static="false" final="false" visibility="public"
   9934       deprecated="not deprecated">
   9935       <doc>
   9936       <![CDATA[@since 4.0]]>
   9937       </doc>
   9938     </method>
   9939     <method name="acceptVisitor" return="T"
   9940       abstract="false" native="false" synchronized="false"
   9941       static="false" final="false" visibility="public"
   9942       deprecated="not deprecated">
   9943       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9944     </method>
   9945     <method name="initializeDelegate"
   9946       abstract="false" native="false" synchronized="false"
   9947       static="false" final="false" visibility="public"
   9948       deprecated="not deprecated">
   9949       <param name="delegate" type="com.google.inject.Provider&lt;T&gt;"/>
   9950       <doc>
   9951       <![CDATA[Sets the actual provider.
   9952 
   9953  @throws IllegalStateException if the delegate is already set]]>
   9954       </doc>
   9955     </method>
   9956     <method name="applyTo"
   9957       abstract="false" native="false" synchronized="false"
   9958       static="false" final="false" visibility="public"
   9959       deprecated="not deprecated">
   9960       <param name="binder" type="com.google.inject.Binder"/>
   9961     </method>
   9962     <method name="getDelegate" return="com.google.inject.Provider&lt;T&gt;"
   9963       abstract="false" native="false" synchronized="false"
   9964       static="false" final="false" visibility="public"
   9965       deprecated="not deprecated">
   9966       <doc>
   9967       <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate
   9968  will be initialized when this element is processed, or otherwise used to create an injector.]]>
   9969       </doc>
   9970     </method>
   9971     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   9972       abstract="false" native="false" synchronized="false"
   9973       static="false" final="false" visibility="public"
   9974       deprecated="not deprecated">
   9975       <doc>
   9976       <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized,
   9977  which usually happens when the injector is created. The provider will throw an {@code
   9978  IllegalStateException} if you try to use it beforehand.]]>
   9979       </doc>
   9980     </method>
   9981     <doc>
   9982     <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using
   9983  {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements:
   9984  <pre>
   9985      Provider&lt;PaymentService&gt; paymentServiceProvider
   9986          = getProvider(PaymentService.class);</pre>
   9987 
   9988  @author jessewilson (a] google.com (Jesse Wilson)
   9989  @since 2.0]]>
   9990     </doc>
   9991   </class>
   9992   <!-- end class com.google.inject.spi.ProviderLookup -->
   9993   <!-- start interface com.google.inject.spi.ProviderWithDependencies -->
   9994   <interface name="ProviderWithDependencies"    abstract="true"
   9995     static="false" final="false" visibility="public"
   9996     deprecated="not deprecated">
   9997     <implements name="com.google.inject.Provider&lt;T&gt;"/>
   9998     <implements name="com.google.inject.spi.HasDependencies"/>
   9999     <doc>
   10000     <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that
   10001  aren't specified in injections, this interface should be used to expose all dependencies.
   10002 
   10003  @since 2.0]]>
   10004     </doc>
   10005   </interface>
   10006   <!-- end interface com.google.inject.spi.ProviderWithDependencies -->
   10007   <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor -->
   10008   <interface name="ProviderWithExtensionVisitor"    abstract="true"
   10009     static="false" final="false" visibility="public"
   10010     deprecated="not deprecated">
   10011     <implements name="com.google.inject.Provider&lt;T&gt;"/>
   10012     <method name="acceptExtensionVisitor" return="V"
   10013       abstract="true" native="false" synchronized="false"
   10014       static="false" final="false" visibility="public"
   10015       deprecated="not deprecated">
   10016       <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;B, V&gt;"/>
   10017       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends B&gt;"/>
   10018       <doc>
   10019       <![CDATA[Instructs the extension determine if the visitor is an instance of a custom
   10020  extension visitor, and if so, visit it using that method. If the visitor is
   10021  not an instance of the custom extension visitor, this method <b>MUST</b>
   10022  call visitor.visit(binding).
   10023  <p> 
   10024  Due to issues with generics, the type parameters of this method do not
   10025  relate to the type of the provider. In practice, the 'B' type will always
   10026  be a supertype of 'T'.]]>
   10027       </doc>
   10028     </method>
   10029     <doc>
   10030     <![CDATA[A Provider that is part of an extension which supports a custom
   10031  BindingTargetVisitor.
   10032  <p> 
   10033  When an extension binds a provider instance, the provider can implement this
   10034  interface to allow users using the
   10035  {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a
   10036  custom visitor designed for that extension. A typical implementation within
   10037  the extension would look like
   10038  <pre> 
   10039  &lt;V, B> V acceptExtensionVisitor(BindingTargetVisitor&lt;B, V> visitor, ProviderInstanceBinding&lt;? extends B> binding) {
   10040    if(visitor instanceof MyCustomExtensionVisitor) {
   10041      return ((MyCustomExtensionVisitor&lt;B, V>)visitor).visitCustomExtension(customProperties, binding);
   10042    } else {
   10043      return visitor.visit(binding);
   10044    }
   10045  }</pre> 
   10046  'MyCustomExtensionVisitor' in the example above would be an interface the
   10047  extension provides that users can implement in order to be notified of custom
   10048  extension information. These visitor interfaces must extend from
   10049  BindingTargetVisitor.
   10050 
   10051  @since 3.0
   10052  @author sameb (a] google.com (Sam Berlin)]]>
   10053     </doc>
   10054   </interface>
   10055   <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor -->
   10056   <!-- start interface com.google.inject.spi.ProvidesMethodBinding -->
   10057   <interface name="ProvidesMethodBinding"    abstract="true"
   10058     static="false" final="false" visibility="public"
   10059     deprecated="not deprecated">
   10060     <implements name="com.google.inject.spi.HasDependencies"/>
   10061     <method name="getMethod" return="java.lang.reflect.Method"
   10062       abstract="true" native="false" synchronized="false"
   10063       static="false" final="false" visibility="public"
   10064       deprecated="not deprecated">
   10065       <doc>
   10066       <![CDATA[Returns the method this binding uses.]]>
   10067       </doc>
   10068     </method>
   10069     <method name="getEnclosingInstance" return="java.lang.Object"
   10070       abstract="true" native="false" synchronized="false"
   10071       static="false" final="false" visibility="public"
   10072       deprecated="not deprecated">
   10073       <doc>
   10074       <![CDATA[Returns the instance of the object the method is defined in.]]>
   10075       </doc>
   10076     </method>
   10077     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   10078       abstract="true" native="false" synchronized="false"
   10079       static="false" final="false" visibility="public"
   10080       deprecated="not deprecated">
   10081       <doc>
   10082       <![CDATA[Returns the key of the binding.]]>
   10083       </doc>
   10084     </method>
   10085     <method name="getAnnotation" return="java.lang.annotation.Annotation"
   10086       abstract="true" native="false" synchronized="false"
   10087       static="false" final="false" visibility="public"
   10088       deprecated="not deprecated">
   10089       <doc>
   10090       <![CDATA[Returns the annotation that caused this binding to be created. For {@code @Provides} methods,
   10091  this is an instance of the {@code @Provides} annotation. For bindings from
   10092  {@link ModuleAnnotatedMethodScanner}, this is the annotation that caused the scanner to produce
   10093  the binding.]]>
   10094       </doc>
   10095     </method>
   10096     <doc>
   10097     <![CDATA[An {@literal @}{@link Provides} binding or binding produced by a
   10098  {@link ModuleAnnotatedMethodScanner}.
   10099 
   10100  @since 4.0
   10101  @author sameb (a] google.com (Sam Berlin)]]>
   10102     </doc>
   10103   </interface>
   10104   <!-- end interface com.google.inject.spi.ProvidesMethodBinding -->
   10105   <!-- start interface com.google.inject.spi.ProvidesMethodTargetVisitor -->
   10106   <interface name="ProvidesMethodTargetVisitor"    abstract="true"
   10107     static="false" final="false" visibility="public"
   10108     deprecated="not deprecated">
   10109     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   10110     <method name="visit" return="V"
   10111       abstract="true" native="false" synchronized="false"
   10112       static="false" final="false" visibility="public"
   10113       deprecated="not deprecated">
   10114       <param name="providesMethodBinding" type="com.google.inject.spi.ProvidesMethodBinding&lt;? extends T&gt;"/>
   10115       <doc>
   10116       <![CDATA[Visits an {@link ProvidesMethodBinding} created with an {@literal @}{@link Provides} method.]]>
   10117       </doc>
   10118     </method>
   10119     <doc>
   10120     <![CDATA[A visitor for the {@literal @}{@link Provides} bindings.
   10121  <p>
   10122  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   10123  {@code @Provides} will be visited through this interface.
   10124 
   10125  @since 4.0
   10126  @author sameb (a] google.com (Sam Berlin)]]>
   10127     </doc>
   10128   </interface>
   10129   <!-- end interface com.google.inject.spi.ProvidesMethodTargetVisitor -->
   10130   <!-- start interface com.google.inject.spi.ProvisionListener -->
   10131   <interface name="ProvisionListener"    abstract="true"
   10132     static="false" final="false" visibility="public"
   10133     deprecated="not deprecated">
   10134     <method name="onProvision"
   10135       abstract="true" native="false" synchronized="false"
   10136       static="false" final="false" visibility="public"
   10137       deprecated="not deprecated">
   10138       <param name="provision" type="com.google.inject.spi.ProvisionListener.ProvisionInvocation&lt;T&gt;"/>
   10139       <doc>
   10140       <![CDATA[Invoked by Guice when an object requires provisioning. Provisioning occurs
   10141  when Guice locates and injects the dependencies for a binding. For types
   10142  bound to a Provider, provisioning encapsulates the {@link Provider#get}
   10143  method. For toInstance or constant bindings, provisioning encapsulates
   10144  the injecting of {@literal @}{@code Inject}ed fields or methods.
   10145  For other types, provisioning encapsulates the construction of the
   10146  object. If a type is bound within a {@link Scope}, provisioning depends on
   10147  the scope. Types bound in Singleton scope will only be provisioned once.
   10148  Types bound in no scope will be provisioned every time they are injected.
   10149  Other scopes define their own behavior for provisioning.
   10150  <p>
   10151  To perform the provision, call {@link ProvisionInvocation#provision()}.
   10152  If you do not explicitly call provision, it will be automatically done after
   10153  this method returns.  It is an error to call provision more than once.]]>
   10154       </doc>
   10155     </method>
   10156     <doc>
   10157     <![CDATA[Listens for provisioning of objects. Useful for gathering timing information
   10158  about provisioning, post-provision initialization, and more.
   10159  
   10160  @author sameb (a] google.com (Sam Berlin)
   10161  @since 4.0]]>
   10162     </doc>
   10163   </interface>
   10164   <!-- end interface com.google.inject.spi.ProvisionListener -->
   10165   <!-- start class com.google.inject.spi.ProvisionListener.ProvisionInvocation -->
   10166   <class name="ProvisionListener.ProvisionInvocation" extends="java.lang.Object"
   10167     abstract="true"
   10168     static="true" final="false" visibility="public"
   10169     deprecated="not deprecated">
   10170     <constructor name="ProvisionInvocation"
   10171       static="false" final="false" visibility="public"
   10172       deprecated="not deprecated">
   10173     </constructor>
   10174     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   10175       abstract="true" native="false" synchronized="false"
   10176       static="false" final="false" visibility="public"
   10177       deprecated="not deprecated">
   10178       <doc>
   10179       <![CDATA[Returns the Binding this is provisioning.
   10180  <p>
   10181  You must not call {@link Provider#get()} on the provider returned by
   10182  {@link Binding#getProvider}, otherwise you will get confusing error messages.]]>
   10183       </doc>
   10184     </method>
   10185     <method name="provision" return="T"
   10186       abstract="true" native="false" synchronized="false"
   10187       static="false" final="false" visibility="public"
   10188       deprecated="not deprecated">
   10189       <doc>
   10190       <![CDATA[Performs the provision, returning the object provisioned.]]>
   10191       </doc>
   10192     </method>
   10193     <method name="getDependencyChain" return="java.util.List&lt;com.google.inject.spi.DependencyAndSource&gt;"
   10194       abstract="true" native="false" synchronized="false"
   10195       static="false" final="false" visibility="public"
   10196       deprecated="not deprecated">
   10197       <doc>
   10198       <![CDATA[Returns the dependency chain that led to this object being provisioned.]]>
   10199       </doc>
   10200     </method>
   10201     <doc>
   10202     <![CDATA[Encapsulates a single act of provisioning.
   10203 
   10204  @since 4.0]]>
   10205     </doc>
   10206   </class>
   10207   <!-- end class com.google.inject.spi.ProvisionListener.ProvisionInvocation -->
   10208   <!-- start class com.google.inject.spi.ProvisionListenerBinding -->
   10209   <class name="ProvisionListenerBinding" extends="java.lang.Object"
   10210     abstract="false"
   10211     static="false" final="true" visibility="public"
   10212     deprecated="not deprecated">
   10213     <implements name="com.google.inject.spi.Element"/>
   10214     <method name="getListeners" return="java.util.List&lt;com.google.inject.spi.ProvisionListener&gt;"
   10215       abstract="false" native="false" synchronized="false"
   10216       static="false" final="false" visibility="public"
   10217       deprecated="not deprecated">
   10218       <doc>
   10219       <![CDATA[Returns the registered listeners.]]>
   10220       </doc>
   10221     </method>
   10222     <method name="getBindingMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"
   10223       abstract="false" native="false" synchronized="false"
   10224       static="false" final="false" visibility="public"
   10225       deprecated="not deprecated">
   10226       <doc>
   10227       <![CDATA[Returns the binding matcher which chooses which bindings the listener should be notified of.]]>
   10228       </doc>
   10229     </method>
   10230     <method name="getSource" return="java.lang.Object"
   10231       abstract="false" native="false" synchronized="false"
   10232       static="false" final="false" visibility="public"
   10233       deprecated="not deprecated">
   10234     </method>
   10235     <method name="acceptVisitor" return="R"
   10236       abstract="false" native="false" synchronized="false"
   10237       static="false" final="false" visibility="public"
   10238       deprecated="not deprecated">
   10239       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
   10240     </method>
   10241     <method name="applyTo"
   10242       abstract="false" native="false" synchronized="false"
   10243       static="false" final="false" visibility="public"
   10244       deprecated="not deprecated">
   10245       <param name="binder" type="com.google.inject.Binder"/>
   10246     </method>
   10247     <doc>
   10248     <![CDATA[Binds keys (picked using a Matcher) to a provision listener. Listeners are created explicitly in
   10249  a module using {@link Binder#bindListener(Matcher, ProvisionListener...)} statements:
   10250 
   10251  @author sameb (a] google.com (Sam Berlin)
   10252  @since 4.0]]>
   10253     </doc>
   10254   </class>
   10255   <!-- end class com.google.inject.spi.ProvisionListenerBinding -->
   10256   <!-- start class com.google.inject.spi.RequireAtInjectOnConstructorsOption -->
   10257   <class name="RequireAtInjectOnConstructorsOption" extends="java.lang.Object"
   10258     abstract="false"
   10259     static="false" final="true" visibility="public"
   10260     deprecated="not deprecated">
   10261     <implements name="com.google.inject.spi.Element"/>
   10262     <method name="getSource" return="java.lang.Object"
   10263       abstract="false" native="false" synchronized="false"
   10264       static="false" final="false" visibility="public"
   10265       deprecated="not deprecated">
   10266     </method>
   10267     <method name="applyTo"
   10268       abstract="false" native="false" synchronized="false"
   10269       static="false" final="false" visibility="public"
   10270       deprecated="not deprecated">
   10271       <param name="binder" type="com.google.inject.Binder"/>
   10272     </method>
   10273     <method name="acceptVisitor" return="T"
   10274       abstract="false" native="false" synchronized="false"
   10275       static="false" final="false" visibility="public"
   10276       deprecated="not deprecated">
   10277       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10278     </method>
   10279     <doc>
   10280     <![CDATA[A request to require explicit {@literal @}{@link Inject} annotations on constructors.
   10281 
   10282  @author sameb (a] google.com (Sam Berlin)
   10283  @since 4.0]]>
   10284     </doc>
   10285   </class>
   10286   <!-- end class com.google.inject.spi.RequireAtInjectOnConstructorsOption -->
   10287   <!-- start class com.google.inject.spi.RequireExactBindingAnnotationsOption -->
   10288   <class name="RequireExactBindingAnnotationsOption" extends="java.lang.Object"
   10289     abstract="false"
   10290     static="false" final="true" visibility="public"
   10291     deprecated="not deprecated">
   10292     <implements name="com.google.inject.spi.Element"/>
   10293     <method name="getSource" return="java.lang.Object"
   10294       abstract="false" native="false" synchronized="false"
   10295       static="false" final="false" visibility="public"
   10296       deprecated="not deprecated">
   10297     </method>
   10298     <method name="applyTo"
   10299       abstract="false" native="false" synchronized="false"
   10300       static="false" final="false" visibility="public"
   10301       deprecated="not deprecated">
   10302       <param name="binder" type="com.google.inject.Binder"/>
   10303     </method>
   10304     <method name="acceptVisitor" return="T"
   10305       abstract="false" native="false" synchronized="false"
   10306       static="false" final="false" visibility="public"
   10307       deprecated="not deprecated">
   10308       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10309     </method>
   10310     <doc>
   10311     <![CDATA[A request to require exact binding annotations.
   10312 
   10313  @author sameb (a] google.com (Sam Berlin)
   10314  @since 4.0]]>
   10315     </doc>
   10316   </class>
   10317   <!-- end class com.google.inject.spi.RequireExactBindingAnnotationsOption -->
   10318   <!-- start class com.google.inject.spi.RequireExplicitBindingsOption -->
   10319   <class name="RequireExplicitBindingsOption" extends="java.lang.Object"
   10320     abstract="false"
   10321     static="false" final="true" visibility="public"
   10322     deprecated="not deprecated">
   10323     <implements name="com.google.inject.spi.Element"/>
   10324     <method name="getSource" return="java.lang.Object"
   10325       abstract="false" native="false" synchronized="false"
   10326       static="false" final="false" visibility="public"
   10327       deprecated="not deprecated">
   10328     </method>
   10329     <method name="applyTo"
   10330       abstract="false" native="false" synchronized="false"
   10331       static="false" final="false" visibility="public"
   10332       deprecated="not deprecated">
   10333       <param name="binder" type="com.google.inject.Binder"/>
   10334     </method>
   10335     <method name="acceptVisitor" return="T"
   10336       abstract="false" native="false" synchronized="false"
   10337       static="false" final="false" visibility="public"
   10338       deprecated="not deprecated">
   10339       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10340     </method>
   10341     <doc>
   10342     <![CDATA[A request to require explicit bindings.
   10343 
   10344  @author sameb (a] google.com (Sam Berlin)
   10345  @since 3.0]]>
   10346     </doc>
   10347   </class>
   10348   <!-- end class com.google.inject.spi.RequireExplicitBindingsOption -->
   10349   <!-- start class com.google.inject.spi.ScopeBinding -->
   10350   <class name="ScopeBinding" extends="java.lang.Object"
   10351     abstract="false"
   10352     static="false" final="true" visibility="public"
   10353     deprecated="not deprecated">
   10354     <implements name="com.google.inject.spi.Element"/>
   10355     <method name="getSource" return="java.lang.Object"
   10356       abstract="false" native="false" synchronized="false"
   10357       static="false" final="false" visibility="public"
   10358       deprecated="not deprecated">
   10359     </method>
   10360     <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   10361       abstract="false" native="false" synchronized="false"
   10362       static="false" final="false" visibility="public"
   10363       deprecated="not deprecated">
   10364     </method>
   10365     <method name="getScope" return="com.google.inject.Scope"
   10366       abstract="false" native="false" synchronized="false"
   10367       static="false" final="false" visibility="public"
   10368       deprecated="not deprecated">
   10369     </method>
   10370     <method name="acceptVisitor" return="T"
   10371       abstract="false" native="false" synchronized="false"
   10372       static="false" final="false" visibility="public"
   10373       deprecated="not deprecated">
   10374       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10375     </method>
   10376     <method name="applyTo"
   10377       abstract="false" native="false" synchronized="false"
   10378       static="false" final="false" visibility="public"
   10379       deprecated="not deprecated">
   10380       <param name="binder" type="com.google.inject.Binder"/>
   10381     </method>
   10382     <doc>
   10383     <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created
   10384  explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()}
   10385  statements:
   10386  <pre>
   10387      Scope recordScope = new RecordScope();
   10388      bindScope(RecordScoped.class, new RecordScope());</pre>
   10389 
   10390  @author jessewilson (a] google.com (Jesse Wilson)
   10391  @since 2.0]]>
   10392     </doc>
   10393   </class>
   10394   <!-- end class com.google.inject.spi.ScopeBinding -->
   10395   <!-- start class com.google.inject.spi.StaticInjectionRequest -->
   10396   <class name="StaticInjectionRequest" extends="java.lang.Object"
   10397     abstract="false"
   10398     static="false" final="true" visibility="public"
   10399     deprecated="not deprecated">
   10400     <implements name="com.google.inject.spi.Element"/>
   10401     <method name="getSource" return="java.lang.Object"
   10402       abstract="false" native="false" synchronized="false"
   10403       static="false" final="false" visibility="public"
   10404       deprecated="not deprecated">
   10405     </method>
   10406     <method name="getType" return="java.lang.Class&lt;?&gt;"
   10407       abstract="false" native="false" synchronized="false"
   10408       static="false" final="false" visibility="public"
   10409       deprecated="not deprecated">
   10410     </method>
   10411     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   10412       abstract="false" native="false" synchronized="false"
   10413       static="false" final="false" visibility="public"
   10414       deprecated="not deprecated">
   10415       <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
   10416       <doc>
   10417       <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this
   10418  request.
   10419 
   10420  @return a possibly empty set of injection points. The set has a specified iteration order. All
   10421       fields are returned and then all methods. Within the fields, supertype fields are returned
   10422       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   10423  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   10424       a field with multiple binding annotations. The exception's {@link
   10425       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   10426       of the valid injection points.]]>
   10427       </doc>
   10428     </method>
   10429     <method name="applyTo"
   10430       abstract="false" native="false" synchronized="false"
   10431       static="false" final="false" visibility="public"
   10432       deprecated="not deprecated">
   10433       <param name="binder" type="com.google.inject.Binder"/>
   10434     </method>
   10435     <method name="acceptVisitor" return="T"
   10436       abstract="false" native="false" synchronized="false"
   10437       static="false" final="false" visibility="public"
   10438       deprecated="not deprecated">
   10439       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10440     </method>
   10441     <doc>
   10442     <![CDATA[A request to inject the static fields and methods of a type. Requests are created
   10443  explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[])
   10444  requestStaticInjection()} statements:
   10445  <pre>
   10446      requestStaticInjection(MyLegacyService.class);</pre>
   10447 
   10448  @author jessewilson (a] google.com (Jesse Wilson)
   10449  @since 2.0]]>
   10450     </doc>
   10451   </class>
   10452   <!-- end class com.google.inject.spi.StaticInjectionRequest -->
   10453   <!-- start class com.google.inject.spi.Toolable -->
   10454   <class name="Toolable"    abstract="true"
   10455     static="false" final="false" visibility="public"
   10456     deprecated="not deprecated">
   10457     <implements name="java.lang.annotation.Annotation"/>
   10458     <doc>
   10459     <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected.
   10460  This is typically useful for for extensions to Guice that perform additional validation in an
   10461  injected method or field.  This only applies to objects that are already constructed when
   10462  bindings are created (ie., something bound using {@link
   10463  com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link
   10464  com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link
   10465  com.google.inject.Binder#requestInjection requestInjection}.
   10466  
   10467  @author sberlin (a] gmail.com (Sam Berlin)
   10468  @since 3.0]]>
   10469     </doc>
   10470   </class>
   10471   <!-- end class com.google.inject.spi.Toolable -->
   10472   <!-- start interface com.google.inject.spi.TypeConverter -->
   10473   <interface name="TypeConverter"    abstract="true"
   10474     static="false" final="false" visibility="public"
   10475     deprecated="not deprecated">
   10476     <method name="convert" return="java.lang.Object"
   10477       abstract="true" native="false" synchronized="false"
   10478       static="false" final="false" visibility="public"
   10479       deprecated="not deprecated">
   10480       <param name="value" type="java.lang.String"/>
   10481       <param name="toType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   10482       <doc>
   10483       <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]>
   10484       </doc>
   10485     </method>
   10486     <doc>
   10487     <![CDATA[Converts constant string values to a different type.
   10488 
   10489  @author crazybob (a] google.com (Bob Lee)
   10490  @since 2.0]]>
   10491     </doc>
   10492   </interface>
   10493   <!-- end interface com.google.inject.spi.TypeConverter -->
   10494   <!-- start class com.google.inject.spi.TypeConverterBinding -->
   10495   <class name="TypeConverterBinding" extends="java.lang.Object"
   10496     abstract="false"
   10497     static="false" final="true" visibility="public"
   10498     deprecated="not deprecated">
   10499     <implements name="com.google.inject.spi.Element"/>
   10500     <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"
   10501       static="false" final="false" visibility="public"
   10502       deprecated="not deprecated">
   10503       <doc>
   10504       <![CDATA[@since 3.0]]>
   10505       </doc>
   10506     </constructor>
   10507     <method name="getSource" return="java.lang.Object"
   10508       abstract="false" native="false" synchronized="false"
   10509       static="false" final="false" visibility="public"
   10510       deprecated="not deprecated">
   10511     </method>
   10512     <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   10513       abstract="false" native="false" synchronized="false"
   10514       static="false" final="false" visibility="public"
   10515       deprecated="not deprecated">
   10516     </method>
   10517     <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter"
   10518       abstract="false" native="false" synchronized="false"
   10519       static="false" final="false" visibility="public"
   10520       deprecated="not deprecated">
   10521     </method>
   10522     <method name="acceptVisitor" return="T"
   10523       abstract="false" native="false" synchronized="false"
   10524       static="false" final="false" visibility="public"
   10525       deprecated="not deprecated">
   10526       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10527     </method>
   10528     <method name="applyTo"
   10529       abstract="false" native="false" synchronized="false"
   10530       static="false" final="false" visibility="public"
   10531       deprecated="not deprecated">
   10532       <param name="binder" type="com.google.inject.Binder"/>
   10533     </method>
   10534     <method name="toString" return="java.lang.String"
   10535       abstract="false" native="false" synchronized="false"
   10536       static="false" final="false" visibility="public"
   10537       deprecated="not deprecated">
   10538     </method>
   10539     <doc>
   10540     <![CDATA[Registration of type converters for matching target types. Instances are created
   10541  explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher,
   10542  TypeConverter) convertToTypes()} statements:
   10543  <pre>
   10544      convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre>
   10545 
   10546  @author jessewilson (a] google.com (Jesse Wilson)
   10547  @since 2.0]]>
   10548     </doc>
   10549   </class>
   10550   <!-- end class com.google.inject.spi.TypeConverterBinding -->
   10551   <!-- start interface com.google.inject.spi.TypeEncounter -->
   10552   <interface name="TypeEncounter"    abstract="true"
   10553     static="false" final="false" visibility="public"
   10554     deprecated="not deprecated">
   10555     <method name="addError"
   10556       abstract="true" native="false" synchronized="false"
   10557       static="false" final="false" visibility="public"
   10558       deprecated="not deprecated">
   10559       <param name="message" type="java.lang.String"/>
   10560       <param name="arguments" type="java.lang.Object[]"/>
   10561       <doc>
   10562       <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later
   10563  time. Unlike throwing an exception, this enable us to continue configuring the Injector and
   10564  discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments
   10565  into the message.]]>
   10566       </doc>
   10567     </method>
   10568     <method name="addError"
   10569       abstract="true" native="false" synchronized="false"
   10570       static="false" final="false" visibility="public"
   10571       deprecated="not deprecated">
   10572       <param name="t" type="java.lang.Throwable"/>
   10573       <doc>
   10574       <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the
   10575  message of which will be presented to the user at a later time. If your type listener calls
   10576  something that you worry may fail, you should catch the exception and pass it to this method.]]>
   10577       </doc>
   10578     </method>
   10579     <method name="addError"
   10580       abstract="true" native="false" synchronized="false"
   10581       static="false" final="false" visibility="public"
   10582       deprecated="not deprecated">
   10583       <param name="message" type="com.google.inject.spi.Message"/>
   10584       <doc>
   10585       <![CDATA[Records an error message to be presented to the user at a later time.]]>
   10586       </doc>
   10587     </method>
   10588     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   10589       abstract="true" native="false" synchronized="false"
   10590       static="false" final="false" visibility="public"
   10591       deprecated="not deprecated">
   10592       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   10593       <doc>
   10594       <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned
   10595  provider will not be valid until the injector has been created. The provider will throw an
   10596  {@code IllegalStateException} if you try to use it beforehand.]]>
   10597       </doc>
   10598     </method>
   10599     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   10600       abstract="true" native="false" synchronized="false"
   10601       static="false" final="false" visibility="public"
   10602       deprecated="not deprecated">
   10603       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   10604       <doc>
   10605       <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned
   10606  provider will not be valid until the injector has been created. The provider will throw an
   10607  {@code IllegalStateException} if you try to use it beforehand.]]>
   10608       </doc>
   10609     </method>
   10610     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   10611       abstract="true" native="false" synchronized="false"
   10612       static="false" final="false" visibility="public"
   10613       deprecated="not deprecated">
   10614       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   10615       <doc>
   10616       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   10617  of the given type {@code T}. The returned members injector will not be valid until the main
   10618  injector has been created. The members injector will throw an {@code IllegalStateException}
   10619  if you try to use it beforehand.
   10620 
   10621  @param typeLiteral type to get members injector for]]>
   10622       </doc>
   10623     </method>
   10624     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   10625       abstract="true" native="false" synchronized="false"
   10626       static="false" final="false" visibility="public"
   10627       deprecated="not deprecated">
   10628       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   10629       <doc>
   10630       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   10631  of the given type {@code T}. The returned members injector will not be valid until the main
   10632  injector has been created. The members injector will throw an {@code IllegalStateException}
   10633  if you try to use it beforehand.
   10634 
   10635  @param type type to get members injector for]]>
   10636       </doc>
   10637     </method>
   10638     <method name="register"
   10639       abstract="true" native="false" synchronized="false"
   10640       static="false" final="false" visibility="public"
   10641       deprecated="not deprecated">
   10642       <param name="membersInjector" type="com.google.inject.MembersInjector&lt;? super I&gt;"/>
   10643       <doc>
   10644       <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its
   10645  performed its own injections on an instance of {@code I}.]]>
   10646       </doc>
   10647     </method>
   10648     <method name="register"
   10649       abstract="true" native="false" synchronized="false"
   10650       static="false" final="false" visibility="public"
   10651       deprecated="not deprecated">
   10652       <param name="listener" type="com.google.inject.spi.InjectionListener&lt;? super I&gt;"/>
   10653       <doc>
   10654       <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all
   10655  injections have been performed on an instance of {@code I}.]]>
   10656       </doc>
   10657     </method>
   10658     <method name="bindInterceptor"
   10659       abstract="true" native="false" synchronized="false"
   10660       static="false" final="false" visibility="public"
   10661       deprecated="not deprecated">
   10662       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
   10663       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
   10664       <doc>
   10665       <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A
   10666  method is eligible for interception if:
   10667 
   10668  <ul>
   10669   <li>Guice created the instance the method is on</li>
   10670   <li>Neither the enclosing type nor the method is final</li>
   10671   <li>And the method is package-private or more accessible</li>
   10672  </ul>
   10673 
   10674  @param methodMatcher matches methods the interceptor should apply to. For
   10675      example: {@code annotatedWith(Transactional.class)}.
   10676  @param interceptors to bind]]>
   10677       </doc>
   10678     </method>
   10679     <doc>
   10680     <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection
   10681  listeners and binding method interceptors for injectable type {@code I}. It is an error to use
   10682  an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has
   10683  returned.
   10684 
   10685  @param <I> the injectable type encountered
   10686  @since 2.0]]>
   10687     </doc>
   10688   </interface>
   10689   <!-- end interface com.google.inject.spi.TypeEncounter -->
   10690   <!-- start interface com.google.inject.spi.TypeListener -->
   10691   <interface name="TypeListener"    abstract="true"
   10692     static="false" final="false" visibility="public"
   10693     deprecated="not deprecated">
   10694     <method name="hear"
   10695       abstract="true" native="false" synchronized="false"
   10696       static="false" final="false" visibility="public"
   10697       deprecated="not deprecated">
   10698       <param name="type" type="com.google.inject.TypeLiteral&lt;I&gt;"/>
   10699       <param name="encounter" type="com.google.inject.spi.TypeEncounter&lt;I&gt;"/>
   10700       <doc>
   10701       <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection.
   10702  Called during injector creation (or afterwords if Guice encounters a type at run time and
   10703  creates a JIT binding).
   10704 
   10705  @param type encountered by Guice
   10706  @param encounter context of this encounter, enables reporting errors, registering injection
   10707      listeners and binding method interceptors for {@code type}.
   10708 
   10709  @param <I> the injectable type]]>
   10710       </doc>
   10711     </method>
   10712     <doc>
   10713     <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in
   10714  one situation but only its methods and fields injected in another, Guice will notify this
   10715  listener once.
   10716 
   10717  <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener)
   10718  registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor(
   10719  com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])
   10720  binding method interceptors}.
   10721  
   10722  @since 2.0]]>
   10723     </doc>
   10724   </interface>
   10725   <!-- end interface com.google.inject.spi.TypeListener -->
   10726   <!-- start class com.google.inject.spi.TypeListenerBinding -->
   10727   <class name="TypeListenerBinding" extends="java.lang.Object"
   10728     abstract="false"
   10729     static="false" final="true" visibility="public"
   10730     deprecated="not deprecated">
   10731     <implements name="com.google.inject.spi.Element"/>
   10732     <method name="getListener" return="com.google.inject.spi.TypeListener"
   10733       abstract="false" native="false" synchronized="false"
   10734       static="false" final="false" visibility="public"
   10735       deprecated="not deprecated">
   10736       <doc>
   10737       <![CDATA[Returns the registered listener.]]>
   10738       </doc>
   10739     </method>
   10740     <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   10741       abstract="false" native="false" synchronized="false"
   10742       static="false" final="false" visibility="public"
   10743       deprecated="not deprecated">
   10744       <doc>
   10745       <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]>
   10746       </doc>
   10747     </method>
   10748     <method name="getSource" return="java.lang.Object"
   10749       abstract="false" native="false" synchronized="false"
   10750       static="false" final="false" visibility="public"
   10751       deprecated="not deprecated">
   10752     </method>
   10753     <method name="acceptVisitor" return="T"
   10754       abstract="false" native="false" synchronized="false"
   10755       static="false" final="false" visibility="public"
   10756       deprecated="not deprecated">
   10757       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10758     </method>
   10759     <method name="applyTo"
   10760       abstract="false" native="false" synchronized="false"
   10761       static="false" final="false" visibility="public"
   10762       deprecated="not deprecated">
   10763       <param name="binder" type="com.google.inject.Binder"/>
   10764     </method>
   10765     <doc>
   10766     <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in
   10767  a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements:
   10768 
   10769  <pre>
   10770      register(only(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {}), listener);</pre>
   10771 
   10772  @author jessewilson (a] google.com (Jesse Wilson)
   10773  @since 2.0]]>
   10774     </doc>
   10775   </class>
   10776   <!-- end class com.google.inject.spi.TypeListenerBinding -->
   10777   <!-- start interface com.google.inject.spi.UntargettedBinding -->
   10778   <interface name="UntargettedBinding"    abstract="true"
   10779     static="false" final="false" visibility="public"
   10780     deprecated="not deprecated">
   10781     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   10782     <doc>
   10783     <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding
   10784  strategies to resolve injections.
   10785 
   10786  @author jessewilson (a] google.com (Jesse Wilson)
   10787  @since 2.0]]>
   10788     </doc>
   10789   </interface>
   10790   <!-- end interface com.google.inject.spi.UntargettedBinding -->
   10791 </package>
   10792 <package name="com.google.inject.spring">
   10793   <!-- start class com.google.inject.spring.SpringIntegration -->
   10794   <class name="SpringIntegration" extends="java.lang.Object"
   10795     abstract="false"
   10796     static="false" final="false" visibility="public"
   10797     deprecated="not deprecated">
   10798     <method name="fromSpring" return="com.google.inject.Provider&lt;T&gt;"
   10799       abstract="false" native="false" synchronized="false"
   10800       static="true" final="false" visibility="public"
   10801       deprecated="not deprecated">
   10802       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   10803       <param name="name" type="java.lang.String"/>
   10804       <doc>
   10805       <![CDATA[Creates a provider which looks up objects from Spring using the given name.
   10806  Expects a binding to {@link
   10807  org.springframework.beans.factory.BeanFactory}. Example usage:
   10808 
   10809  <pre>
   10810  bind(DataSource.class)
   10811    .toProvider(fromSpring(DataSource.class, "dataSource"));
   10812  </pre>]]>
   10813       </doc>
   10814     </method>
   10815     <method name="bindAll"
   10816       abstract="false" native="false" synchronized="false"
   10817       static="true" final="false" visibility="public"
   10818       deprecated="not deprecated">
   10819       <param name="binder" type="com.google.inject.Binder"/>
   10820       <param name="beanFactory" type="org.springframework.beans.factory.ListableBeanFactory"/>
   10821       <doc>
   10822       <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean
   10823  named "foo", this method creates a binding to the bean's type and
   10824  {@code @Named("foo")}.
   10825 
   10826  @see com.google.inject.name.Named
   10827  @see com.google.inject.name.Names#named(String)]]>
   10828       </doc>
   10829     </method>
   10830     <doc>
   10831     <![CDATA[Integrates Guice with Spring.
   10832 
   10833  @author crazybob (a] google.com (Bob Lee)]]>
   10834     </doc>
   10835   </class>
   10836   <!-- end class com.google.inject.spring.SpringIntegration -->
   10837 </package>
   10838 <package name="com.google.inject.struts2">
   10839   <!-- start class com.google.inject.struts2.GuiceObjectFactory -->
   10840   <class name="GuiceObjectFactory" extends="com.opensymphony.xwork2.ObjectFactory"
   10841     abstract="false"
   10842     static="false" final="false" visibility="public"
   10843     deprecated="Use {@link com.google.inject.struts2.Struts2Factory} instead.">
   10844     <constructor name="GuiceObjectFactory"
   10845       static="false" final="false" visibility="public"
   10846       deprecated="not deprecated">
   10847     </constructor>
   10848     <method name="isNoArgConstructorRequired" return="boolean"
   10849       abstract="false" native="false" synchronized="false"
   10850       static="false" final="false" visibility="public"
   10851       deprecated="not deprecated">
   10852     </method>
   10853     <method name="getClassInstance" return="java.lang.Class"
   10854       abstract="false" native="false" synchronized="false"
   10855       static="false" final="false" visibility="public"
   10856       deprecated="not deprecated">
   10857       <param name="name" type="java.lang.String"/>
   10858       <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
   10859     </method>
   10860     <method name="buildBean" return="java.lang.Object"
   10861       abstract="false" native="false" synchronized="false"
   10862       static="false" final="false" visibility="public"
   10863       deprecated="not deprecated">
   10864       <param name="clazz" type="java.lang.Class"/>
   10865       <param name="extraContext" type="java.util.Map"/>
   10866     </method>
   10867     <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor"
   10868       abstract="false" native="false" synchronized="false"
   10869       static="false" final="false" visibility="public"
   10870       deprecated="not deprecated">
   10871       <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/>
   10872       <param name="interceptorRefParams" type="java.util.Map"/>
   10873       <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/>
   10874     </method>
   10875     <doc>
   10876     <![CDATA[@deprecated Use {@link com.google.inject.struts2.Struts2Factory} instead.]]>
   10877     </doc>
   10878   </class>
   10879   <!-- end class com.google.inject.struts2.GuiceObjectFactory -->
   10880   <!-- start class com.google.inject.struts2.Struts2Factory -->
   10881   <class name="Struts2Factory" extends="com.opensymphony.xwork2.ObjectFactory"
   10882     abstract="false"
   10883     static="false" final="false" visibility="public"
   10884     deprecated="not deprecated">
   10885     <constructor name="Struts2Factory"
   10886       static="false" final="false" visibility="public"
   10887       deprecated="not deprecated">
   10888     </constructor>
   10889     <method name="isNoArgConstructorRequired" return="boolean"
   10890       abstract="false" native="false" synchronized="false"
   10891       static="false" final="false" visibility="public"
   10892       deprecated="not deprecated">
   10893     </method>
   10894     <method name="getClassInstance" return="java.lang.Class&lt;?&gt;"
   10895       abstract="false" native="false" synchronized="false"
   10896       static="false" final="false" visibility="public"
   10897       deprecated="not deprecated">
   10898       <param name="name" type="java.lang.String"/>
   10899       <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
   10900     </method>
   10901     <method name="buildBean" return="java.lang.Object"
   10902       abstract="false" native="false" synchronized="false"
   10903       static="false" final="false" visibility="public"
   10904       deprecated="not deprecated">
   10905       <param name="clazz" type="java.lang.Class"/>
   10906       <param name="extraContext" type="java.util.Map&lt;java.lang.String, java.lang.Object&gt;"/>
   10907     </method>
   10908     <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor"
   10909       abstract="false" native="false" synchronized="false"
   10910       static="false" final="false" visibility="public"
   10911       deprecated="not deprecated">
   10912       <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/>
   10913       <param name="interceptorRefParams" type="java.util.Map"/>
   10914       <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/>
   10915     </method>
   10916     <doc>
   10917     <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with
   10918  GS2 and fixes several bugs.
   10919 
   10920  @author dhanji (a] gmail.com
   10921  @author benmccann.com]]>
   10922     </doc>
   10923   </class>
   10924   <!-- end class com.google.inject.struts2.Struts2Factory -->
   10925   <!-- start class com.google.inject.struts2.Struts2GuicePluginModule -->
   10926   <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule"
   10927     abstract="false"
   10928     static="false" final="false" visibility="public"
   10929     deprecated="not deprecated">
   10930     <constructor name="Struts2GuicePluginModule"
   10931       static="false" final="false" visibility="public"
   10932       deprecated="not deprecated">
   10933     </constructor>
   10934     <method name="configure"
   10935       abstract="false" native="false" synchronized="false"
   10936       static="false" final="false" visibility="protected"
   10937       deprecated="not deprecated">
   10938     </method>
   10939     <doc>
   10940     <![CDATA[Initializes the Struts 2 Guice Plugin. Must be added to the injector returned
   10941  by {@link com.google.inject.servlet.GuiceServletContextListener#getInjector}.
   10942 
   10943  @author benmccann.com]]>
   10944     </doc>
   10945   </class>
   10946   <!-- end class com.google.inject.struts2.Struts2GuicePluginModule -->
   10947 </package>
   10948 <package name="com.google.inject.testing.fieldbinder">
   10949   <!-- start class com.google.inject.testing.fieldbinder.Bind -->
   10950   <class name="Bind"    abstract="true"
   10951     static="false" final="false" visibility="public"
   10952     deprecated="not deprecated">
   10953     <implements name="java.lang.annotation.Annotation"/>
   10954     <doc>
   10955     <![CDATA[Annotation used by {@link BoundFieldModule} to indicate that a field should be bound to its
   10956  value using Guice.
   10957 
   10958  @see BoundFieldModule
   10959  @author eatnumber1 (a] google.com (Russ Harmon)]]>
   10960     </doc>
   10961   </class>
   10962   <!-- end class com.google.inject.testing.fieldbinder.Bind -->
   10963   <!-- start class com.google.inject.testing.fieldbinder.BoundFieldModule -->
   10964   <class name="BoundFieldModule" extends="java.lang.Object"
   10965     abstract="false"
   10966     static="false" final="true" visibility="public"
   10967     deprecated="not deprecated">
   10968     <implements name="com.google.inject.Module"/>
   10969     <method name="of" return="com.google.inject.testing.fieldbinder.BoundFieldModule"
   10970       abstract="false" native="false" synchronized="false"
   10971       static="true" final="false" visibility="public"
   10972       deprecated="not deprecated">
   10973       <param name="instance" type="java.lang.Object"/>
   10974       <doc>
   10975       <![CDATA[Create a BoundFieldModule which binds the {@link Bind} annotated fields of {@code instance}.
   10976 
   10977  @param instance the instance whose fields will be bound.
   10978  @return a module which will bind the {@link Bind} annotated fields of {@code instance}.]]>
   10979       </doc>
   10980     </method>
   10981     <method name="configure"
   10982       abstract="false" native="false" synchronized="false"
   10983       static="false" final="false" visibility="public"
   10984       deprecated="not deprecated">
   10985       <param name="binder" type="com.google.inject.Binder"/>
   10986     </method>
   10987     <doc>
   10988     <![CDATA[Automatically creates Guice bindings for fields in an object annotated with {@link Bind}.
   10989 
   10990  <p>This module is intended for use in tests to reduce the code needed to bind local fields
   10991  (usually mocks) for injection.
   10992 
   10993  <p>The following rules are followed in determining how fields are bound using this module:
   10994 
   10995  <ul>
   10996  <li>
   10997  For each {@link Bind} annotated field of an object and its superclasses, this module will bind
   10998  that field's type to that field's value at injector creation time. This includes both instance
   10999  and static fields.
   11000  </li>
   11001  <li>
   11002  If {@link Bind#to} is specified, the field's value will be bound to the class specified by
   11003  {@link Bind#to} instead of the field's actual type.
   11004  </li>
   11005  <li>
   11006  If a {@link BindingAnnotation} or {@link javax.inject.Qualifier} is present on the field,
   11007  that field will be bound using that annotation via {@link AnnotatedBindingBuilder#annotatedWith}.
   11008  For example, {@code bind(Foo.class).annotatedWith(BarAnnotation.class).toInstance(theValue)}.
   11009  It is an error to supply more than one {@link BindingAnnotation} or
   11010  {@link javax.inject.Qualifier}.
   11011  </li>
   11012  <li>
   11013  If the field is of type {@link Provider}, the field's value will be bound as a {@link Provider}
   11014  using {@link LinkedBindingBuilder#toProvider} to the provider's parameterized type. For example,
   11015  {@code Provider<Integer>} binds to {@link Integer}. Attempting to bind a non-parameterized
   11016  {@link Provider} without a {@link Bind#to} clause is an error.
   11017  </li>
   11018  </ul>
   11019 
   11020  <p>Example use:
   11021  <pre><code>
   11022  public class TestFoo {
   11023    // bind(new TypeLiteral{@code <List<Object>>}() {}).toInstance(listOfObjects);
   11024    {@literal @}Bind private List{@code <Object>} listOfObjects = Lists.of();
   11025    
   11026    // bind(String.class).toProvider(new Provider() { public String get() { return userName; }});
   11027    {@literal @}Bind(lazy = true) private String userName;
   11028 
   11029    // bind(SuperClass.class).toInstance(aSubClass);
   11030    {@literal @}Bind(to = SuperClass.class) private SubClass aSubClass = new SubClass();
   11031 
   11032    // bind(Object.class).annotatedWith(MyBindingAnnotation.class).toInstance(object2);
   11033    {@literal @}Bind
   11034    {@literal @}MyBindingAnnotation
   11035    private String myString = "hello";
   11036 
   11037    // bind(Object.class).toProvider(myProvider);
   11038    {@literal @}Bind private Provider{@code <Object>} myProvider = getProvider();
   11039 
   11040    {@literal @}Before public void setUp() {
   11041      Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this);
   11042    }
   11043  }
   11044  </code></pre>
   11045 
   11046  @see Bind
   11047  @author eatnumber1 (a] google.com (Russ Harmon)]]>
   11048     </doc>
   11049   </class>
   11050   <!-- end class com.google.inject.testing.fieldbinder.BoundFieldModule -->
   11051 </package>
   11052 <package name="com.google.inject.throwingproviders">
   11053   <!-- start interface com.google.inject.throwingproviders.CheckedProvider -->
   11054   <interface name="CheckedProvider"    abstract="true"
   11055     static="false" final="false" visibility="public"
   11056     deprecated="not deprecated">
   11057     <method name="get" return="T"
   11058       abstract="true" native="false" synchronized="false"
   11059       static="false" final="false" visibility="public"
   11060       deprecated="not deprecated">
   11061       <exception name="Exception" type="java.lang.Exception"/>
   11062     </method>
   11063     <doc>
   11064     <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
   11065  a checked Exception. Users may not inject {@code T} directly.
   11066 
   11067  <p>This interface must be extended to use application-specific exception types.
   11068  Such subinterfaces may not define new methods, but may narrow the exception type.
   11069  <pre>
   11070  public interface RemoteProvider&lt;T&gt; extends CheckedProvider&lt;T&gt; { 
   11071    T get() throws CustomExceptionOne, CustomExceptionTwo;
   11072  }
   11073  </pre>
   11074 
   11075  <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
   11076  or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
   11077  will invoked at most once within each scope.
   11078  
   11079  @since 3.0]]>
   11080     </doc>
   11081   </interface>
   11082   <!-- end interface com.google.inject.throwingproviders.CheckedProvider -->
   11083   <!-- start class com.google.inject.throwingproviders.CheckedProvides -->
   11084   <class name="CheckedProvides"    abstract="true"
   11085     static="false" final="false" visibility="public"
   11086     deprecated="not deprecated">
   11087     <implements name="java.lang.annotation.Annotation"/>
   11088     <doc>
   11089     <![CDATA[Annotates methods of a {@link com.google.inject.Module} to create a
   11090  {@link CheckedProvider} method binding that can throw exceptions. The
   11091  method's return type is bound to a {@link CheckedProvider} that can be
   11092  injected. Guice will pass dependencies to the method as parameters. Install
   11093  {@literal @}CheckedProvides methods by using
   11094  {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the
   11095  module where the methods are declared.
   11096  
   11097  @author sameb (a] google.com (Sam Berlin)
   11098  @since 3.0]]>
   11099     </doc>
   11100   </class>
   11101   <!-- end class com.google.inject.throwingproviders.CheckedProvides -->
   11102   <!-- start class com.google.inject.throwingproviders.ThrowingInject -->
   11103   <class name="ThrowingInject"    abstract="true"
   11104     static="false" final="false" visibility="public"
   11105     deprecated="not deprecated">
   11106     <implements name="java.lang.annotation.Annotation"/>
   11107     <doc>
   11108     <![CDATA[A version of {@literal @}{@link Inject} designed for ThrowingProviders.  Use by:
   11109  <pre><code>ThrowingProviderBinder.create(binder())
   11110     .bind(RemoteProvider.class, Customer.class)
   11111     .providing(CustomerImpl.class);
   11112  </code></pre>
   11113  where CustomerImpl has a constructor annotated with ThrowingInject.
   11114 
   11115  @author sameb (a] google.com (Sam Berlin)
   11116  @since 4.0]]>
   11117     </doc>
   11118   </class>
   11119   <!-- end class com.google.inject.throwingproviders.ThrowingInject -->
   11120   <!-- start interface com.google.inject.throwingproviders.ThrowingProvider -->
   11121   <interface name="ThrowingProvider"    abstract="true"
   11122     static="false" final="false" visibility="public"
   11123     deprecated="use {@link CheckedProvider} instead.">
   11124     <implements name="com.google.inject.throwingproviders.CheckedProvider&lt;T&gt;"/>
   11125     <method name="get" return="T"
   11126       abstract="true" native="false" synchronized="false"
   11127       static="false" final="false" visibility="public"
   11128       deprecated="not deprecated">
   11129       <exception name="Exception" type="java.lang.Exception"/>
   11130     </method>
   11131     <doc>
   11132     <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
   11133  a checked Exception. Users may not inject {@code T} directly.
   11134 
   11135  <p>This interface must be extended to use application-specific exception types.
   11136  Such subinterfaces may not define new methods:
   11137  <pre>
   11138  public interface RemoteProvider&lt;T&gt; extends ThrowingProvider&lt;T, RemoteException&gt; { }
   11139  </pre>
   11140 
   11141  <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
   11142  or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
   11143  will invoked at most once within each scope.
   11144 
   11145  @author jmourits (a] google.com (Jerome Mourits)
   11146  @author jessewilson (a] google.com (Jesse Wilson)
   11147  @deprecated use {@link CheckedProvider} instead.]]>
   11148     </doc>
   11149   </interface>
   11150   <!-- end interface com.google.inject.throwingproviders.ThrowingProvider -->
   11151   <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder -->
   11152   <class name="ThrowingProviderBinder" extends="java.lang.Object"
   11153     abstract="false"
   11154     static="false" final="false" visibility="public"
   11155     deprecated="not deprecated">
   11156     <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder"
   11157       abstract="false" native="false" synchronized="false"
   11158       static="true" final="false" visibility="public"
   11159       deprecated="not deprecated">
   11160       <param name="binder" type="com.google.inject.Binder"/>
   11161     </method>
   11162     <method name="forModule" return="com.google.inject.Module"
   11163       abstract="false" native="false" synchronized="false"
   11164       static="true" final="false" visibility="public"
   11165       deprecated="not deprecated">
   11166       <param name="module" type="com.google.inject.Module"/>
   11167       <doc>
   11168       <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods.
   11169  
   11170  @since 3.0]]>
   11171       </doc>
   11172     </method>
   11173     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, ?&gt;"
   11174       abstract="false" native="false" synchronized="false"
   11175       static="false" final="false" visibility="public"
   11176       deprecated="Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.">
   11177       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   11178       <param name="clazz" type="java.lang.reflect.Type"/>
   11179       <doc>
   11180       <![CDATA[@deprecated Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.]]>
   11181       </doc>
   11182     </method>
   11183     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11184       abstract="false" native="false" synchronized="false"
   11185       static="false" final="false" visibility="public"
   11186       deprecated="not deprecated">
   11187       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   11188       <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
   11189       <doc>
   11190       <![CDATA[@since 4.0]]>
   11191       </doc>
   11192     </method>
   11193     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11194       abstract="false" native="false" synchronized="false"
   11195       static="false" final="false" visibility="public"
   11196       deprecated="not deprecated">
   11197       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   11198       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   11199       <doc>
   11200       <![CDATA[@since 4.0]]>
   11201       </doc>
   11202     </method>
   11203     <doc>
   11204     <![CDATA[<p>Builds a binding for a {@link CheckedProvider}.
   11205  
   11206  <p>You can use a fluent API and custom providers:
   11207  <pre><code>ThrowingProviderBinder.create(binder())
   11208     .bind(RemoteProvider.class, Customer.class)
   11209     .to(RemoteCustomerProvider.class)
   11210     .in(RequestScope.class);
   11211  </code></pre>
   11212  or, you can use throwing provider methods:
   11213  <pre><code>class MyModule extends AbstractModule {
   11214    configure() {
   11215      ThrowingProviderBinder.install(this, binder());
   11216    }
   11217    
   11218    {@literal @}CheckedProvides(RemoteProvider.class)
   11219    {@literal @}RequestScope
   11220    Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException {
   11221      return creator.getCustomerOrThrow();
   11222    }
   11223  }
   11224  </code></pre>
   11225  You also can declare that a CheckedProvider construct
   11226  a particular class whose constructor throws an exception:
   11227  <pre><code>ThrowingProviderBinder.create(binder())
   11228     .bind(RemoteProvider.class, Customer.class)
   11229     .providing(CustomerImpl.class)
   11230     .in(RequestScope.class);
   11231  </code></pre>
   11232  
   11233  @author jmourits (a] google.com (Jerome Mourits)
   11234  @author jessewilson (a] google.com (Jesse Wilson)
   11235  @author sameb (a] google.com (Sam Berlin)]]>
   11236     </doc>
   11237   </class>
   11238   <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder -->
   11239   <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
   11240   <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object"
   11241     abstract="false"
   11242     static="false" final="false" visibility="public"
   11243     deprecated="not deprecated">
   11244     <constructor name="SecondaryBinder" type="java.lang.Class&lt;P&gt;, java.lang.reflect.Type"
   11245       static="false" final="false" visibility="public"
   11246       deprecated="not deprecated">
   11247     </constructor>
   11248     <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11249       abstract="false" native="false" synchronized="false"
   11250       static="false" final="false" visibility="public"
   11251       deprecated="not deprecated">
   11252       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   11253     </method>
   11254     <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11255       abstract="false" native="false" synchronized="false"
   11256       static="false" final="false" visibility="public"
   11257       deprecated="not deprecated">
   11258       <param name="annotation" type="java.lang.annotation.Annotation"/>
   11259     </method>
   11260     <method name="scopeExceptions" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11261       abstract="false" native="false" synchronized="false"
   11262       static="false" final="false" visibility="public"
   11263       deprecated="not deprecated">
   11264       <param name="scopeExceptions" type="boolean"/>
   11265       <doc>
   11266       <![CDATA[Determines if exceptions should be scoped. By default exceptions are scoped.
   11267 
   11268  @param scopeExceptions whether exceptions should be scoped.
   11269  @since 4.0]]>
   11270       </doc>
   11271     </method>
   11272     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   11273       abstract="false" native="false" synchronized="false"
   11274       static="false" final="false" visibility="public"
   11275       deprecated="not deprecated">
   11276       <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/>
   11277     </method>
   11278     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   11279       abstract="false" native="false" synchronized="false"
   11280       static="false" final="false" visibility="public"
   11281       deprecated="not deprecated">
   11282       <param name="targetType" type="java.lang.Class&lt;? extends P&gt;"/>
   11283     </method>
   11284     <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder"
   11285       abstract="false" native="false" synchronized="false"
   11286       static="false" final="false" visibility="public"
   11287       deprecated="not deprecated">
   11288       <param name="cxtorClass" type="java.lang.Class&lt;? extends T&gt;"/>
   11289       <doc>
   11290       <![CDATA[@since 4.0]]>
   11291       </doc>
   11292     </method>
   11293     <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder"
   11294       abstract="false" native="false" synchronized="false"
   11295       static="false" final="false" visibility="public"
   11296       deprecated="not deprecated">
   11297       <param name="cxtorLiteral" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   11298       <doc>
   11299       <![CDATA[@since 4.0]]>
   11300       </doc>
   11301     </method>
   11302     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   11303       abstract="false" native="false" synchronized="false"
   11304       static="false" final="false" visibility="public"
   11305       deprecated="not deprecated">
   11306       <param name="targetKey" type="com.google.inject.Key&lt;? extends P&gt;"/>
   11307     </method>
   11308   </class>
   11309   <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
   11310 </package>
   11311 <package name="com.google.inject.tools.jmx">
   11312   <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean -->
   11313   <interface name="ManagedBindingMBean"    abstract="true"
   11314     static="false" final="false" visibility="public"
   11315     deprecated="not deprecated">
   11316     <method name="getSource" return="java.lang.String"
   11317       abstract="true" native="false" synchronized="false"
   11318       static="false" final="false" visibility="public"
   11319       deprecated="not deprecated">
   11320       <doc>
   11321       <![CDATA[Gets the source of this binding.]]>
   11322       </doc>
   11323     </method>
   11324     <method name="getProvider" return="java.lang.String"
   11325       abstract="true" native="false" synchronized="false"
   11326       static="false" final="false" visibility="public"
   11327       deprecated="not deprecated">
   11328       <doc>
   11329       <![CDATA[Gets the provider to which this binding is bound.]]>
   11330       </doc>
   11331     </method>
   11332     <method name="getKey" return="java.lang.String"
   11333       abstract="true" native="false" synchronized="false"
   11334       static="false" final="false" visibility="public"
   11335       deprecated="not deprecated">
   11336       <doc>
   11337       <![CDATA[Gets the binding key.]]>
   11338       </doc>
   11339     </method>
   11340     <doc>
   11341     <![CDATA[JMX interface to bindings.
   11342 
   11343  @author crazybob (a] google.com (Bob Lee)]]>
   11344     </doc>
   11345   </interface>
   11346   <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean -->
   11347   <!-- start class com.google.inject.tools.jmx.Manager -->
   11348   <class name="Manager" extends="java.lang.Object"
   11349     abstract="false"
   11350     static="false" final="false" visibility="public"
   11351     deprecated="not deprecated">
   11352     <constructor name="Manager"
   11353       static="false" final="false" visibility="public"
   11354       deprecated="not deprecated">
   11355     </constructor>
   11356     <method name="manage"
   11357       abstract="false" native="false" synchronized="false"
   11358       static="true" final="false" visibility="public"
   11359       deprecated="not deprecated">
   11360       <param name="domain" type="java.lang.String"/>
   11361       <param name="injector" type="com.google.inject.Injector"/>
   11362       <doc>
   11363       <![CDATA[Registers all the bindings of an Injector with the platform MBean server.
   11364  Consider using the name of your root {@link Module} class as the domain.]]>
   11365       </doc>
   11366     </method>
   11367     <method name="manage"
   11368       abstract="false" native="false" synchronized="false"
   11369       static="true" final="false" visibility="public"
   11370       deprecated="not deprecated">
   11371       <param name="server" type="javax.management.MBeanServer"/>
   11372       <param name="domain" type="java.lang.String"/>
   11373       <param name="injector" type="com.google.inject.Injector"/>
   11374       <doc>
   11375       <![CDATA[Registers all the bindings of an Injector with the given MBean server.
   11376  Consider using the name of your root {@link Module} class as the domain.]]>
   11377       </doc>
   11378     </method>
   11379     <method name="main"
   11380       abstract="false" native="false" synchronized="false"
   11381       static="true" final="false" visibility="public"
   11382       deprecated="not deprecated">
   11383       <param name="args" type="java.lang.String[]"/>
   11384       <exception name="Exception" type="java.lang.Exception"/>
   11385       <doc>
   11386       <![CDATA[Run with no arguments for usage instructions.]]>
   11387       </doc>
   11388     </method>
   11389     <doc>
   11390     <![CDATA[Provides a JMX interface to Guice.
   11391 
   11392  @author crazybob (a] google.com (Bob Lee)]]>
   11393     </doc>
   11394   </class>
   11395   <!-- end class com.google.inject.tools.jmx.Manager -->
   11396 </package>
   11397 <package name="com.google.inject.util">
   11398   <!-- start class com.google.inject.util.Modules -->
   11399   <class name="Modules" extends="java.lang.Object"
   11400     abstract="false"
   11401     static="false" final="true" visibility="public"
   11402     deprecated="not deprecated">
   11403     <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
   11404       abstract="false" native="false" synchronized="false"
   11405       static="true" final="false" visibility="public"
   11406       deprecated="not deprecated">
   11407       <param name="modules" type="com.google.inject.Module[]"/>
   11408       <doc>
   11409       <![CDATA[Returns a builder that creates a module that overlays override modules over the given
   11410  modules. If a key is bound in both sets of modules, only the binding from the override modules
   11411  is kept. If a single {@link PrivateModule} is supplied or all elements are from
   11412  a single {@link PrivateBinder}, then this will overwrite the private bindings.
   11413  Otherwise, private bindings will not be overwritten unless they are exposed. 
   11414  This can be used to replace the bindings of a production module with test bindings:
   11415  <pre>
   11416  Module functionalTestModule
   11417      = Modules.override(new ProductionModule()).with(new TestModule());
   11418  </pre>
   11419 
   11420  <p>Prefer to write smaller modules that can be reused and tested without overrides.
   11421 
   11422  @param modules the modules whose bindings are open to be overridden]]>
   11423       </doc>
   11424     </method>
   11425     <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
   11426       abstract="false" native="false" synchronized="false"
   11427       static="true" final="false" visibility="public"
   11428       deprecated="not deprecated">
   11429       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   11430       <doc>
   11431       <![CDATA[Returns a builder that creates a module that overlays override modules over the given
   11432  modules. If a key is bound in both sets of modules, only the binding from the override modules
   11433  is kept. If a single {@link PrivateModule} is supplied or all elements are from
   11434  a single {@link PrivateBinder}, then this will overwrite the private bindings.
   11435  Otherwise, private bindings will not be overwritten unless they are exposed. 
   11436  This can be used to replace the bindings of a production module with test bindings:
   11437  <pre>
   11438  Module functionalTestModule
   11439      = Modules.override(getProductionModules()).with(getTestModules());
   11440  </pre>
   11441 
   11442  <p>Prefer to write smaller modules that can be reused and tested without overrides.
   11443 
   11444  @param modules the modules whose bindings are open to be overridden]]>
   11445       </doc>
   11446     </method>
   11447     <method name="combine" return="com.google.inject.Module"
   11448       abstract="false" native="false" synchronized="false"
   11449       static="true" final="false" visibility="public"
   11450       deprecated="not deprecated">
   11451       <param name="modules" type="com.google.inject.Module[]"/>
   11452       <doc>
   11453       <![CDATA[Returns a new module that installs all of {@code modules}.]]>
   11454       </doc>
   11455     </method>
   11456     <method name="combine" return="com.google.inject.Module"
   11457       abstract="false" native="false" synchronized="false"
   11458       static="true" final="false" visibility="public"
   11459       deprecated="not deprecated">
   11460       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   11461       <doc>
   11462       <![CDATA[Returns a new module that installs all of {@code modules}.]]>
   11463       </doc>
   11464     </method>
   11465     <field name="EMPTY_MODULE" type="com.google.inject.Module"
   11466       transient="false" volatile="false"
   11467       static="true" final="true" visibility="public"
   11468       deprecated="not deprecated">
   11469     </field>
   11470     <doc>
   11471     <![CDATA[Static utility methods for creating and working with instances of {@link Module}.
   11472 
   11473  @author jessewilson (a] google.com (Jesse Wilson)
   11474  @since 2.0]]>
   11475     </doc>
   11476   </class>
   11477   <!-- end class com.google.inject.util.Modules -->
   11478   <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
   11479   <interface name="Modules.OverriddenModuleBuilder"    abstract="true"
   11480     static="true" final="false" visibility="public"
   11481     deprecated="not deprecated">
   11482     <method name="with" return="com.google.inject.Module"
   11483       abstract="true" native="false" synchronized="false"
   11484       static="false" final="false" visibility="public"
   11485       deprecated="not deprecated">
   11486       <param name="overrides" type="com.google.inject.Module[]"/>
   11487       <doc>
   11488       <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   11489       </doc>
   11490     </method>
   11491     <method name="with" return="com.google.inject.Module"
   11492       abstract="true" native="false" synchronized="false"
   11493       static="false" final="false" visibility="public"
   11494       deprecated="not deprecated">
   11495       <param name="overrides" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   11496       <doc>
   11497       <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   11498       </doc>
   11499     </method>
   11500     <doc>
   11501     <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   11502     </doc>
   11503   </interface>
   11504   <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
   11505   <!-- start class com.google.inject.util.Providers -->
   11506   <class name="Providers" extends="java.lang.Object"
   11507     abstract="false"
   11508     static="false" final="true" visibility="public"
   11509     deprecated="not deprecated">
   11510     <method name="of" return="com.google.inject.Provider&lt;T&gt;"
   11511       abstract="false" native="false" synchronized="false"
   11512       static="true" final="false" visibility="public"
   11513       deprecated="not deprecated">
   11514       <param name="instance" type="T"/>
   11515       <doc>
   11516       <![CDATA[Returns a provider which always provides {@code instance}.  This should not
   11517  be necessary to use in your application, but is helpful for several types
   11518  of unit tests.
   11519 
   11520  @param instance the instance that should always be provided.  This is also
   11521      permitted to be null, to enable aggressive testing, although in real
   11522      life a Guice-supplied Provider will never return null.]]>
   11523       </doc>
   11524     </method>
   11525     <method name="guicify" return="com.google.inject.Provider&lt;T&gt;"
   11526       abstract="false" native="false" synchronized="false"
   11527       static="true" final="false" visibility="public"
   11528       deprecated="not deprecated">
   11529       <param name="provider" type="javax.inject.Provider&lt;T&gt;"/>
   11530       <doc>
   11531       <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given
   11532  JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary,
   11533  since Guice providers directly implement the JSR-330 interface.
   11534  
   11535  @since 3.0]]>
   11536       </doc>
   11537     </method>
   11538     <doc>
   11539     <![CDATA[Static utility methods for creating and working with instances of
   11540  {@link Provider}.
   11541 
   11542  @author Kevin Bourrillion (kevinb9n (a] gmail.com)
   11543  @since 2.0]]>
   11544     </doc>
   11545   </class>
   11546   <!-- end class com.google.inject.util.Providers -->
   11547   <!-- start class com.google.inject.util.Types -->
   11548   <class name="Types" extends="java.lang.Object"
   11549     abstract="false"
   11550     static="false" final="true" visibility="public"
   11551     deprecated="not deprecated">
   11552     <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType"
   11553       abstract="false" native="false" synchronized="false"
   11554       static="true" final="false" visibility="public"
   11555       deprecated="not deprecated">
   11556       <param name="rawType" type="java.lang.reflect.Type"/>
   11557       <param name="typeArguments" type="java.lang.reflect.Type[]"/>
   11558       <doc>
   11559       <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
   11560  {@code rawType}. The returned type does not have an owner type.
   11561 
   11562  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11563       </doc>
   11564     </method>
   11565     <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType"
   11566       abstract="false" native="false" synchronized="false"
   11567       static="true" final="false" visibility="public"
   11568       deprecated="not deprecated">
   11569       <param name="ownerType" type="java.lang.reflect.Type"/>
   11570       <param name="rawType" type="java.lang.reflect.Type"/>
   11571       <param name="typeArguments" type="java.lang.reflect.Type[]"/>
   11572       <doc>
   11573       <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
   11574  {@code rawType} and enclosed by {@code ownerType}.
   11575 
   11576  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11577       </doc>
   11578     </method>
   11579     <method name="arrayOf" return="java.lang.reflect.GenericArrayType"
   11580       abstract="false" native="false" synchronized="false"
   11581       static="true" final="false" visibility="public"
   11582       deprecated="not deprecated">
   11583       <param name="componentType" type="java.lang.reflect.Type"/>
   11584       <doc>
   11585       <![CDATA[Returns an array type whose elements are all instances of
   11586  {@code componentType}.
   11587 
   11588  @return a {@link java.io.Serializable serializable} generic array type.]]>
   11589       </doc>
   11590     </method>
   11591     <method name="subtypeOf" return="java.lang.reflect.WildcardType"
   11592       abstract="false" native="false" synchronized="false"
   11593       static="true" final="false" visibility="public"
   11594       deprecated="not deprecated">
   11595       <param name="bound" type="java.lang.reflect.Type"/>
   11596       <doc>
   11597       <![CDATA[Returns a type that represents an unknown type that extends {@code bound}.
   11598  For example, if {@code bound} is {@code CharSequence.class}, this returns
   11599  {@code ? extends CharSequence}. If {@code bound} is {@code Object.class},
   11600  this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]>
   11601       </doc>
   11602     </method>
   11603     <method name="supertypeOf" return="java.lang.reflect.WildcardType"
   11604       abstract="false" native="false" synchronized="false"
   11605       static="true" final="false" visibility="public"
   11606       deprecated="not deprecated">
   11607       <param name="bound" type="java.lang.reflect.Type"/>
   11608       <doc>
   11609       <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For
   11610  example, if {@code bound} is {@code String.class}, this returns {@code ?
   11611  super String}.]]>
   11612       </doc>
   11613     </method>
   11614     <method name="listOf" return="java.lang.reflect.ParameterizedType"
   11615       abstract="false" native="false" synchronized="false"
   11616       static="true" final="false" visibility="public"
   11617       deprecated="not deprecated">
   11618       <param name="elementType" type="java.lang.reflect.Type"/>
   11619       <doc>
   11620       <![CDATA[Returns a type modelling a {@link List} whose elements are of type
   11621  {@code elementType}.
   11622 
   11623  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11624       </doc>
   11625     </method>
   11626     <method name="setOf" return="java.lang.reflect.ParameterizedType"
   11627       abstract="false" native="false" synchronized="false"
   11628       static="true" final="false" visibility="public"
   11629       deprecated="not deprecated">
   11630       <param name="elementType" type="java.lang.reflect.Type"/>
   11631       <doc>
   11632       <![CDATA[Returns a type modelling a {@link Set} whose elements are of type
   11633  {@code elementType}.
   11634 
   11635  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11636       </doc>
   11637     </method>
   11638     <method name="mapOf" return="java.lang.reflect.ParameterizedType"
   11639       abstract="false" native="false" synchronized="false"
   11640       static="true" final="false" visibility="public"
   11641       deprecated="not deprecated">
   11642       <param name="keyType" type="java.lang.reflect.Type"/>
   11643       <param name="valueType" type="java.lang.reflect.Type"/>
   11644       <doc>
   11645       <![CDATA[Returns a type modelling a {@link Map} whose keys are of type
   11646  {@code keyType} and whose values are of type {@code valueType}.
   11647 
   11648  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11649       </doc>
   11650     </method>
   11651     <method name="providerOf" return="java.lang.reflect.ParameterizedType"
   11652       abstract="false" native="false" synchronized="false"
   11653       static="true" final="false" visibility="public"
   11654       deprecated="not deprecated">
   11655       <param name="providedType" type="java.lang.reflect.Type"/>
   11656       <doc>
   11657       <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type
   11658  {@code elementType}.
   11659 
   11660  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11661       </doc>
   11662     </method>
   11663     <doc>
   11664     <![CDATA[Static methods for working with types.
   11665 
   11666  @author crazybob (a] google.com (Bob Lee)
   11667  @since 2.0]]>
   11668     </doc>
   11669   </class>
   11670   <!-- end class com.google.inject.util.Types -->
   11671 </package>
   11672 
   11673 </api>
   11674