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 Fri Jun 17 16:00:51 EDT 2016 -->
      5 
      6 <api
      7   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
      8   xsi:noNamespaceSchemaLocation='api.xsd'
      9   name="4.1"
     10   jdversion="1.1.1">
     11 
     12 <!--  Command line arguments =  -doclet jdiff.JDiff -docletpath /tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jdiff/jdiff.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jdiff/xerces.jar -classpath /tmp/moe_git_clone_googlecode_6763913321787039468/lib/aopalliance.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/guava-19.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/javax.inject.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/asm-5.0.3.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/bnd-0.0.384.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/cglib-3.2.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/commons-logging-1.0.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/easymock.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/felix-2.0.5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/guava-testlib-19.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jarjar-1.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/javax.inject-tck.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jsr305.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/junit.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/munge.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/safesax.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/spring-beans.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/spring-core.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/dagger-adapter/lib/dagger-2.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/antlr-2.7.5h3.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/aopalliance.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/cglib-nodep-3.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/commons-collections.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/commons-io.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/commons-logging-1.0.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/db4o-6.4.14.8131-java5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/dom4j-1.6.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/easymock.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/ejb3-persistence.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hibernate-annotations.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hibernate-entitymanager.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hibernate-search.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hibernate3.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/hsqldb.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/javassist.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/jaxen-1.1-beta-7.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/jboss-archive-browsing.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/jta.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/log4j-1.2.14.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/ognl-2.6.7.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/oro-2.0.8.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/servlet-api-2.5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/persist/lib/xwork-2.0.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/ant-1.6.5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/commons-fileupload-1.2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/commons-io-1.3.2.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/commons-logging-1.0.4.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/core-3.1.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/freemarker-2.3.16.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/javassist.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/jetty-6.1.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/jetty-util-6.1.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/jsp-2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/jsp-api-2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/ognl-3.0.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/servlet-api-2.5.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/struts2-core-2.2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/extensions/struts2/lib/xwork-core-2.2.1.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/build/classes -doclet jdiff.JDiff -docletpath /tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jdiff/jdiff.jar:/tmp/moe_git_clone_googlecode_6763913321787039468/lib/build/jdiff/xerces.jar -apidir build/docs/latest-api-diffs -apiname 4.1 -->
     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 injecting dependencies that form a cycle, unless broken by a
    671  {@link Provider}. By default, circular dependencies are not disabled.
    672  <p>
    673  If a parent injector disables circular dependencies, then all child injectors (and private
    674  modules within that injector) also disable circular dependencies. If a parent does not disable
    675  circular dependencies, a child injector or private module may optionally declare itself as
    676  disabling circular dependencies. If it does, the behavior is limited only to that child or any
    677  grandchildren. No siblings of the child will disable circular dependencies.
    678 
    679  @since 3.0]]>
    680       </doc>
    681     </method>
    682     <method name="requireAtInjectOnConstructors"
    683       abstract="true" native="false" synchronized="false"
    684       static="false" final="false" visibility="public"
    685       deprecated="not deprecated">
    686       <doc>
    687       <![CDATA[Requires that a {@literal @}{@link Inject} annotation exists on a constructor in order for
    688  Guice to consider it an eligible injectable class. By default, Guice will inject classes that
    689  have a no-args constructor if no {@literal @}{@link Inject} annotation exists on any
    690  constructor.
    691  <p>
    692  If the class is bound using {@link LinkedBindingBuilder#toConstructor}, Guice will still inject
    693  that constructor regardless of annotations.
    694 
    695  @since 4.0]]>
    696       </doc>
    697     </method>
    698     <method name="requireExactBindingAnnotations"
    699       abstract="true" native="false" synchronized="false"
    700       static="false" final="false" visibility="public"
    701       deprecated="not deprecated">
    702       <doc>
    703       <![CDATA[Requires that Guice finds an exactly matching binding annotation.  This disables the
    704  error-prone feature in Guice where it can substitute a binding for
    705  <code>{@literal @}Named Foo</code> when attempting to inject
    706  <code>{@literal @}Named("foo") Foo</code>.
    707 
    708  @since 4.0]]>
    709       </doc>
    710     </method>
    711     <method name="scanModulesForAnnotatedMethods"
    712       abstract="true" native="false" synchronized="false"
    713       static="false" final="false" visibility="public"
    714       deprecated="not deprecated">
    715       <param name="scanner" type="com.google.inject.spi.ModuleAnnotatedMethodScanner"/>
    716       <doc>
    717       <![CDATA[Adds a scanner that will look in all installed modules for annotations the scanner can parse,
    718  and binds them like {@literal @}Provides methods. Scanners apply to all modules installed in
    719  the injector. Scanners installed in child injectors or private modules do not impact modules in
    720  siblings or parents, however scanners installed in parents do apply to all child injectors and
    721  private modules.
    722 
    723  @since 4.0]]>
    724       </doc>
    725     </method>
    726     <doc>
    727     <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be
    728  used to create an {@link Injector}. Guice provides this object to your
    729  application's {@link Module} implementors so they may each contribute
    730  their own bindings and other registrations.
    731 
    732  <h3>The Guice Binding EDSL</h3>
    733 
    734  Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you
    735  create bindings simply and readably.  This approach is great for overall
    736  usability, but it does come with a small cost: <b>it is difficult to
    737  learn how to use the Binding EDSL by reading
    738  method-level javadocs</b>.  Instead, you should consult the series of
    739  examples below.  To save space, these examples omit the opening
    740  {@code binder}, just as you will if your module extends
    741  {@link AbstractModule}.
    742 
    743  <pre>
    744      bind(ServiceImpl.class);</pre>
    745 
    746  This statement does essentially nothing; it "binds the {@code ServiceImpl}
    747  class to itself" and does not change Guice's default behavior.  You may still
    748  want to use this if you prefer your {@link Module} class to serve as an
    749  explicit <i>manifest</i> for the services it provides.  Also, in rare cases,
    750  Guice may be unable to validate a binding at injector creation time unless it
    751  is given explicitly.
    752 
    753  <pre>
    754      bind(Service.class).to(ServiceImpl.class);</pre>
    755 
    756  Specifies that a request for a {@code Service} instance with no binding
    757  annotations should be treated as if it were a request for a
    758  {@code ServiceImpl} instance. This <i>overrides</i> the function of any
    759  {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy}
    760  annotations found on {@code Service}, since Guice will have already
    761  "moved on" to {@code ServiceImpl} before it reaches the point when it starts
    762  looking for these annotations.
    763 
    764  <pre>
    765      bind(Service.class).toProvider(ServiceProvider.class);</pre>
    766 
    767  In this example, {@code ServiceProvider} must extend or implement
    768  {@code Provider<Service>}. This binding specifies that Guice should resolve
    769  an unannotated injection request for {@code Service} by first resolving an
    770  instance of {@code ServiceProvider} in the regular way, then calling
    771  {@link Provider#get get()} on the resulting Provider instance to obtain the
    772  {@code Service} instance.
    773 
    774  <p>The {@link Provider} you use here does not have to be a "factory"; that
    775  is, a provider which always <i>creates</i> each instance it provides.
    776  However, this is generally a good practice to follow.  You can then use
    777  Guice's concept of {@link Scope scopes} to guide when creation should happen
    778  -- "letting Guice work for you".
    779 
    780  <pre>
    781      bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre>
    782 
    783  Like the previous example, but only applies to injection requests that use
    784  the binding annotation {@code @Red}.  If your module also includes bindings
    785  for particular <i>values</i> of the {@code @Red} annotation (see below),
    786  then this binding will serve as a "catch-all" for any values of {@code @Red}
    787  that have no exact match in the bindings.
    788  
    789  <pre>
    790      bind(ServiceImpl.class).in(Singleton.class);
    791      // or, alternatively
    792      bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre>
    793 
    794  Either of these statements places the {@code ServiceImpl} class into
    795  singleton scope.  Guice will create only one instance of {@code ServiceImpl}
    796  and will reuse it for all injection requests of this type.  Note that it is
    797  still possible to bind another instance of {@code ServiceImpl} if the second
    798  binding is qualified by an annotation as in the previous example.  Guice is
    799  not overly concerned with <i>preventing</i> you from creating multiple
    800  instances of your "singletons", only with <i>enabling</i> your application to
    801  share only one instance if that's all you tell Guice you need.
    802 
    803  <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that
    804  was specified with an annotation on the {@code ServiceImpl} class.
    805  
    806  <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are
    807  servlet-specific scopes available in
    808  {@code com.google.inject.servlet.ServletScopes}, and your Modules can
    809  contribute their own custom scopes for use here as well.
    810 
    811  <pre>
    812      bind(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {})
    813          .to(CreditCardPaymentService.class);</pre>
    814 
    815  This admittedly odd construct is the way to bind a parameterized type. It
    816  tells Guice how to honor an injection request for an element of type
    817  {@code PaymentService<CreditCard>}. The class
    818  {@code CreditCardPaymentService} must implement the
    819  {@code PaymentService<CreditCard>} interface.  Guice cannot currently bind or
    820  inject a generic type, such as {@code Set<E>}; all type parameters must be
    821  fully specified.
    822 
    823  <pre>
    824      bind(Service.class).toInstance(new ServiceImpl());
    825      // or, alternatively
    826      bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre>
    827 
    828  In this example, your module itself, <i>not Guice</i>, takes responsibility
    829  for obtaining a {@code ServiceImpl} instance, then asks Guice to always use
    830  this single instance to fulfill all {@code Service} injection requests.  When
    831  the {@link Injector} is created, it will automatically perform field
    832  and method injection for this instance, but any injectable constructor on
    833  {@code ServiceImpl} is simply ignored.  Note that using this approach results
    834  in "eager loading" behavior that you can't control.
    835 
    836  <pre>
    837      bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre>
    838 
    839  Sets up a constant binding. Constant injections must always be annotated.
    840  When a constant binding's value is a string, it is eligile for conversion to
    841  all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to
    842  {@link Class#forName class literals}. Conversions for other types can be
    843  configured using {@link #convertToTypes(Matcher, TypeConverter)
    844  convertToTypes()}.
    845 
    846  <pre>
    847    {@literal @}Color("red") Color red; // A member variable (field)
    848     . . .
    849      red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class);
    850      bind(Service.class).annotatedWith(red).to(RedService.class);</pre>
    851 
    852  If your binding annotation has parameters you can apply different bindings to
    853  different specific values of your annotation.  Getting your hands on the
    854  right instance of the annotation is a bit of a pain -- one approach, shown
    855  above, is to apply a prototype annotation to a field in your module class, so
    856  that you can read this annotation instance and give it to Guice.
    857 
    858  <pre>
    859      bind(Service.class)
    860          .annotatedWith(Names.named("blue"))
    861          .to(BlueService.class);</pre>
    862 
    863  Differentiating by names is a common enough use case that we provided a
    864  standard annotation, {@link com.google.inject.name.Named @Named}.  Because of
    865  Guice's library support, binding by name is quite easier than in the
    866  arbitrary binding annotation case we just saw.  However, remember that these
    867  names will live in a single flat namespace with all the other names used in
    868  your application.
    869 
    870  <pre>
    871      Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection();
    872      bind(ServiceImpl.class)
    873          .toConstructor(loneCtor);</pre>
    874 
    875  In this example, we directly tell Guice which constructor to use in a concrete
    876  class implementation. It means that we do not need to place {@literal @}Inject
    877  on any of the constructors and that Guice treats the provided constructor as though
    878  it were annotated so. It is useful for cases where you cannot modify existing
    879  classes and is a bit simpler than using a {@link Provider}.
    880 
    881  <p>The above list of examples is far from exhaustive.  If you can think of
    882  how the concepts of one example might coexist with the concepts from another,
    883  you can most likely weave the two together.  If the two concepts make no
    884  sense with each other, you most likely won't be able to do it.  In a few
    885  cases Guice will let something bogus slip by, and will then inform you of
    886  the problems at runtime, as soon as you try to create your Injector.
    887 
    888  <p>The other methods of Binder such as {@link #bindScope},
    889  {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection},
    890  {@link #addError} and {@link #currentStage} are not part of the Binding EDSL;
    891  you can learn how to use these in the usual way, from the method
    892  documentation.
    893 
    894  @author crazybob (a] google.com (Bob Lee)
    895  @author jessewilson (a] google.com (Jesse Wilson)
    896  @author kevinb (a] google.com (Kevin Bourrillion)]]>
    897     </doc>
    898   </interface>
    899   <!-- end interface com.google.inject.Binder -->
    900   <!-- start interface com.google.inject.Binding -->
    901   <interface name="Binding"    abstract="true"
    902     static="false" final="false" visibility="public"
    903     deprecated="not deprecated">
    904     <implements name="com.google.inject.spi.Element"/>
    905     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
    906       abstract="true" native="false" synchronized="false"
    907       static="false" final="false" visibility="public"
    908       deprecated="not deprecated">
    909       <doc>
    910       <![CDATA[Returns the key for this binding.]]>
    911       </doc>
    912     </method>
    913     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    914       abstract="true" native="false" synchronized="false"
    915       static="false" final="false" visibility="public"
    916       deprecated="not deprecated">
    917       <doc>
    918       <![CDATA[Returns the scoped provider guice uses to fulfill requests for this
    919  binding.
    920 
    921  @throws UnsupportedOperationException when invoked on a {@link Binding}
    922       created via {@link com.google.inject.spi.Elements#getElements}. This
    923       method is only supported on {@link Binding}s returned from an injector.]]>
    924       </doc>
    925     </method>
    926     <method name="acceptTargetVisitor" return="V"
    927       abstract="true" native="false" synchronized="false"
    928       static="false" final="false" visibility="public"
    929       deprecated="not deprecated">
    930       <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;? super T, V&gt;"/>
    931       <doc>
    932       <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target.
    933 
    934  @param visitor to call back on
    935  @since 2.0]]>
    936       </doc>
    937     </method>
    938     <method name="acceptScopingVisitor" return="V"
    939       abstract="true" native="false" synchronized="false"
    940       static="false" final="false" visibility="public"
    941       deprecated="not deprecated">
    942       <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
    943       <doc>
    944       <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping.
    945 
    946  @param visitor to call back on
    947  @since 2.0]]>
    948       </doc>
    949     </method>
    950     <doc>
    951     <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the
    952  type. This interface is part of the introspection API and is intended primarily for use by 
    953  tools.
    954 
    955  <p>Bindings are created in several ways:
    956  <ul>
    957      <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()}
    958          statements:
    959  <pre>
    960      bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);
    961      bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li>
    962      <li>Implicitly by the Injector by following a type's {@link ImplementedBy
    963          pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or
    964          default constructor.</li>
    965      <li>By converting a bound instance to a different type.</li>
    966      <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li>
    967  </ul>
    968 
    969 
    970  <p>They exist on both modules and on injectors, and their behaviour is different for each:
    971  <ul>
    972      <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances.
    973          This is because the applicable scopes and interceptors may not be known until an injector
    974          is created. From a tool's perspective, module bindings are like the injector's source
    975          code. They can be inspected or rewritten, but this analysis must be done statically.</li>
    976      <li><strong>Injector bindings</strong> are complete and valid and can be used to provide
    977          instances. From a tools' perspective, injector bindings are like reflection for an
    978          injector. They have full runtime information, including the complete graph of injections
    979          necessary to satisfy a binding.</li>
    980  </ul>
    981 
    982  @param <T> the bound type. The injected is always assignable to this type.
    983 
    984  @author crazybob (a] google.com (Bob Lee)
    985  @author jessewilson (a] google.com (Jesse Wilson)]]>
    986     </doc>
    987   </interface>
    988   <!-- end interface com.google.inject.Binding -->
    989   <!-- start class com.google.inject.BindingAnnotation -->
    990   <class name="BindingAnnotation"    abstract="true"
    991     static="false" final="false" visibility="public"
    992     deprecated="not deprecated">
    993     <implements name="java.lang.annotation.Annotation"/>
    994     <doc>
    995     <![CDATA[Annotates annotations which are used for binding. Only one such annotation
    996  may apply to a single injection point. You must also annotate binder
    997  annotations with {@code @Retention(RUNTIME)}. For example:
    998 
    999  <pre>
   1000    {@code @}Retention(RUNTIME)
   1001    {@code @}Target({ FIELD, PARAMETER, METHOD })
   1002    {@code @}BindingAnnotation
   1003    public {@code @}interface Transactional {}
   1004  </pre>
   1005 
   1006  @author crazybob (a] google.com (Bob Lee)]]>
   1007     </doc>
   1008   </class>
   1009   <!-- end class com.google.inject.BindingAnnotation -->
   1010   <!-- start class com.google.inject.ConfigurationException -->
   1011   <class name="ConfigurationException" extends="java.lang.RuntimeException"
   1012     abstract="false"
   1013     static="false" final="true" visibility="public"
   1014     deprecated="not deprecated">
   1015     <constructor name="ConfigurationException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
   1016       static="false" final="false" visibility="public"
   1017       deprecated="not deprecated">
   1018       <doc>
   1019       <![CDATA[Creates a ConfigurationException containing {@code messages}.]]>
   1020       </doc>
   1021     </constructor>
   1022     <method name="withPartialValue" return="com.google.inject.ConfigurationException"
   1023       abstract="false" native="false" synchronized="false"
   1024       static="false" final="false" visibility="public"
   1025       deprecated="not deprecated">
   1026       <param name="partialValue" type="java.lang.Object"/>
   1027       <doc>
   1028       <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]>
   1029       </doc>
   1030     </method>
   1031     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   1032       abstract="false" native="false" synchronized="false"
   1033       static="false" final="false" visibility="public"
   1034       deprecated="not deprecated">
   1035       <doc>
   1036       <![CDATA[Returns messages for the errors that caused this exception.]]>
   1037       </doc>
   1038     </method>
   1039     <method name="getPartialValue" return="E"
   1040       abstract="false" native="false" synchronized="false"
   1041       static="false" final="false" visibility="public"
   1042       deprecated="not deprecated">
   1043       <doc>
   1044       <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use
   1045  this while collecting additional configuration problems.
   1046 
   1047  @return the partial value, or {@code null} if none was set. The type of the partial value is
   1048       specified by the throwing method.]]>
   1049       </doc>
   1050     </method>
   1051     <method name="getMessage" return="java.lang.String"
   1052       abstract="false" native="false" synchronized="false"
   1053       static="false" final="false" visibility="public"
   1054       deprecated="not deprecated">
   1055     </method>
   1056     <doc>
   1057     <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported
   1058  scope is found. Clients should catch this exception, log it, and stop execution.
   1059 
   1060  @author jessewilson (a] google.com (Jesse Wilson)
   1061  @since 2.0]]>
   1062     </doc>
   1063   </class>
   1064   <!-- end class com.google.inject.ConfigurationException -->
   1065   <!-- start class com.google.inject.CreationException -->
   1066   <class name="CreationException" extends="java.lang.RuntimeException"
   1067     abstract="false"
   1068     static="false" final="false" visibility="public"
   1069     deprecated="not deprecated">
   1070     <constructor name="CreationException" type="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   1071       static="false" final="false" visibility="public"
   1072       deprecated="not deprecated">
   1073       <doc>
   1074       <![CDATA[Creates a CreationException containing {@code messages}.]]>
   1075       </doc>
   1076     </constructor>
   1077     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   1078       abstract="false" native="false" synchronized="false"
   1079       static="false" final="false" visibility="public"
   1080       deprecated="not deprecated">
   1081       <doc>
   1082       <![CDATA[Returns messages for the errors that caused this exception.]]>
   1083       </doc>
   1084     </method>
   1085     <method name="getMessage" return="java.lang.String"
   1086       abstract="false" native="false" synchronized="false"
   1087       static="false" final="false" visibility="public"
   1088       deprecated="not deprecated">
   1089     </method>
   1090     <doc>
   1091     <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered
   1092  errors. Clients should catch this exception, log it, and stop execution.
   1093 
   1094  @author crazybob (a] google.com (Bob Lee)]]>
   1095     </doc>
   1096   </class>
   1097   <!-- end class com.google.inject.CreationException -->
   1098   <!-- start class com.google.inject.Exposed -->
   1099   <class name="Exposed"    abstract="true"
   1100     static="false" final="false" visibility="public"
   1101     deprecated="not deprecated">
   1102     <implements name="java.lang.annotation.Annotation"/>
   1103     <doc>
   1104     <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a
   1105  private module to indicate that the provided binding is exposed.
   1106 
   1107  @author jessewilson (a] google.com (Jesse Wilson)
   1108  @since 2.0]]>
   1109     </doc>
   1110   </class>
   1111   <!-- end class com.google.inject.Exposed -->
   1112   <!-- start class com.google.inject.Guice -->
   1113   <class name="Guice" extends="java.lang.Object"
   1114     abstract="false"
   1115     static="false" final="true" visibility="public"
   1116     deprecated="not deprecated">
   1117     <method name="createInjector" return="com.google.inject.Injector"
   1118       abstract="false" native="false" synchronized="false"
   1119       static="true" final="false" visibility="public"
   1120       deprecated="not deprecated">
   1121       <param name="modules" type="com.google.inject.Module[]"/>
   1122       <doc>
   1123       <![CDATA[Creates an injector for the given set of modules. This is equivalent to
   1124  calling {@link #createInjector(Stage, Module...)} with Stage.DEVELOPMENT.
   1125 
   1126  @throws CreationException if one or more errors occur during injector
   1127      construction]]>
   1128       </doc>
   1129     </method>
   1130     <method name="createInjector" return="com.google.inject.Injector"
   1131       abstract="false" native="false" synchronized="false"
   1132       static="true" final="false" visibility="public"
   1133       deprecated="not deprecated">
   1134       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1135       <doc>
   1136       <![CDATA[Creates an injector for the given set of modules. This is equivalent to
   1137  calling {@link #createInjector(Stage, Iterable)} with Stage.DEVELOPMENT.
   1138 
   1139  @throws CreationException if one or more errors occur during injector
   1140      creation]]>
   1141       </doc>
   1142     </method>
   1143     <method name="createInjector" return="com.google.inject.Injector"
   1144       abstract="false" native="false" synchronized="false"
   1145       static="true" final="false" visibility="public"
   1146       deprecated="not deprecated">
   1147       <param name="stage" type="com.google.inject.Stage"/>
   1148       <param name="modules" type="com.google.inject.Module[]"/>
   1149       <doc>
   1150       <![CDATA[Creates an injector for the given set of modules, in a given development
   1151  stage.
   1152 
   1153  @throws CreationException if one or more errors occur during injector
   1154      creation.]]>
   1155       </doc>
   1156     </method>
   1157     <method name="createInjector" return="com.google.inject.Injector"
   1158       abstract="false" native="false" synchronized="false"
   1159       static="true" final="false" visibility="public"
   1160       deprecated="not deprecated">
   1161       <param name="stage" type="com.google.inject.Stage"/>
   1162       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1163       <doc>
   1164       <![CDATA[Creates an injector for the given set of modules, in a given development
   1165  stage.
   1166 
   1167  @throws CreationException if one or more errors occur during injector
   1168      construction]]>
   1169       </doc>
   1170     </method>
   1171     <doc>
   1172     <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from
   1173  {@link Module}s.
   1174 
   1175  <p>Guice supports a model of development that draws clear boundaries between
   1176  APIs, Implementations of these APIs, Modules which configure these
   1177  implementations, and finally Applications which consist of a collection of
   1178  Modules. It is the Application, which typically defines your {@code main()}
   1179  method, that bootstraps the Guice Injector using the {@code Guice} class, as
   1180  in this example:
   1181  <pre>
   1182      public class FooApplication {
   1183        public static void main(String[] args) {
   1184          Injector injector = Guice.createInjector(
   1185              new ModuleA(),
   1186              new ModuleB(),
   1187              . . .
   1188              new FooApplicationFlagsModule(args)
   1189          );
   1190 
   1191          // Now just bootstrap the application and you're done
   1192          FooStarter starter = injector.getInstance(FooStarter.class);
   1193          starter.runApplication();
   1194        }
   1195      }
   1196  </pre>]]>
   1197     </doc>
   1198   </class>
   1199   <!-- end class com.google.inject.Guice -->
   1200   <!-- start class com.google.inject.ImplementedBy -->
   1201   <class name="ImplementedBy"    abstract="true"
   1202     static="false" final="false" visibility="public"
   1203     deprecated="not deprecated">
   1204     <implements name="java.lang.annotation.Annotation"/>
   1205     <doc>
   1206     <![CDATA[A pointer to the default implementation of a type.
   1207 
   1208  @author crazybob (a] google.com (Bob Lee)]]>
   1209     </doc>
   1210   </class>
   1211   <!-- end class com.google.inject.ImplementedBy -->
   1212   <!-- start class com.google.inject.Inject -->
   1213   <class name="Inject"    abstract="true"
   1214     static="false" final="false" visibility="public"
   1215     deprecated="not deprecated">
   1216     <implements name="java.lang.annotation.Annotation"/>
   1217     <doc>
   1218     <![CDATA[Annotates members of your implementation class (constructors, methods
   1219  and fields) into which the {@link Injector} should inject values.
   1220  The Injector fulfills injection requests for:
   1221 
   1222  <ul>
   1223  <li>Every instance it constructs. The class being constructed must have
   1224  exactly one of its constructors marked with {@code @Inject} or must have a
   1225  constructor taking no parameters. The Injector then proceeds to perform
   1226  field and method injections.
   1227  
   1228  <li>Pre-constructed instances passed to {@link Injector#injectMembers},
   1229  {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and
   1230  {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(javax.inject.Provider)}.
   1231  In this case all constructors are, of course, ignored.
   1232 
   1233  <li>Static fields and methods of classes which any {@link Module} has
   1234  specifically requested static injection for, using
   1235  {@link Binder#requestStaticInjection}.
   1236  </ul>
   1237 
   1238  In all cases, a member can be injected regardless of its Java access
   1239  specifier (private, default, protected, public).
   1240 
   1241  @author crazybob (a] google.com (Bob Lee)]]>
   1242     </doc>
   1243   </class>
   1244   <!-- end class com.google.inject.Inject -->
   1245   <!-- start interface com.google.inject.Injector -->
   1246   <interface name="Injector"    abstract="true"
   1247     static="false" final="false" visibility="public"
   1248     deprecated="not deprecated">
   1249     <method name="injectMembers"
   1250       abstract="true" native="false" synchronized="false"
   1251       static="false" final="false" visibility="public"
   1252       deprecated="not deprecated">
   1253       <param name="instance" type="java.lang.Object"/>
   1254       <doc>
   1255       <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
   1256  absence of an injectable constructor.
   1257 
   1258  <p>Whenever Guice creates an instance, it performs this injection automatically (after first
   1259  performing constructor injection), so if you're able to let Guice create all your objects for
   1260  you, you'll never need to use this method.
   1261 
   1262  @param instance to inject members on
   1263 
   1264  @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before
   1265   run time]]>
   1266       </doc>
   1267     </method>
   1268     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   1269       abstract="true" native="false" synchronized="false"
   1270       static="false" final="false" visibility="public"
   1271       deprecated="not deprecated">
   1272       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1273       <doc>
   1274       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   1275  of the given type {@code T}.
   1276 
   1277  @param typeLiteral type to get members injector for
   1278  @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error
   1279   detection
   1280  @since 2.0]]>
   1281       </doc>
   1282     </method>
   1283     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   1284       abstract="true" native="false" synchronized="false"
   1285       static="false" final="false" visibility="public"
   1286       deprecated="not deprecated">
   1287       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1288       <doc>
   1289       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   1290  of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)}
   1291  instead to get increased up front error detection.
   1292 
   1293  @param type type to get members injector for
   1294  @see Binder#getMembersInjector(Class) for an alternative that offers up front error
   1295   detection
   1296  @since 2.0]]>
   1297       </doc>
   1298     </method>
   1299     <method name="getBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
   1300       abstract="true" native="false" synchronized="false"
   1301       static="false" final="false" visibility="public"
   1302       deprecated="not deprecated">
   1303       <doc>
   1304       <![CDATA[Returns this injector's <strong>explicit</strong> bindings.
   1305 
   1306  <p>The returned map does not include bindings inherited from a {@link #getParent() parent
   1307  injector}, should one exist. The returned map is guaranteed to iterate (for example, with
   1308  its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in
   1309  which bindings appear in user Modules.
   1310 
   1311  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
   1312       </doc>
   1313     </method>
   1314     <method name="getAllBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
   1315       abstract="true" native="false" synchronized="false"
   1316       static="false" final="false" visibility="public"
   1317       deprecated="not deprecated">
   1318       <doc>
   1319       <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and
   1320  just-in-time</strong>. The returned map is immutable; it contains only the bindings that were
   1321  present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with
   1322  additional just-in-time bindings.
   1323 
   1324  <p>The returned map does not include bindings inherited from a {@link #getParent() parent
   1325  injector}, should one exist.
   1326 
   1327  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1328  
   1329  @since 3.0]]>
   1330       </doc>
   1331     </method>
   1332     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   1333       abstract="true" native="false" synchronized="false"
   1334       static="false" final="false" visibility="public"
   1335       deprecated="not deprecated">
   1336       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1337       <doc>
   1338       <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key
   1339  was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
   1340  be created if necessary.
   1341 
   1342  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1343 
   1344  @throws ConfigurationException if this injector cannot find or create the binding.]]>
   1345       </doc>
   1346     </method>
   1347     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   1348       abstract="true" native="false" synchronized="false"
   1349       static="false" final="false" visibility="public"
   1350       deprecated="not deprecated">
   1351       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1352       <doc>
   1353       <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key
   1354  was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
   1355  be created if necessary.
   1356 
   1357  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1358 
   1359  @throws ConfigurationException if this injector cannot find or create the binding.
   1360  @since 2.0]]>
   1361       </doc>
   1362     </method>
   1363     <method name="getExistingBinding" return="com.google.inject.Binding&lt;T&gt;"
   1364       abstract="true" native="false" synchronized="false"
   1365       static="false" final="false" visibility="public"
   1366       deprecated="not deprecated">
   1367       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1368       <doc>
   1369       <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike
   1370  {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings
   1371  for keys that aren't bound.
   1372  
   1373  <p> This method is part of the Guice SPI and is intended for use by tools and extensions.
   1374  
   1375  @since 3.0]]>
   1376       </doc>
   1377     </method>
   1378     <method name="findBindingsByType" return="java.util.List&lt;com.google.inject.Binding&lt;T&gt;&gt;"
   1379       abstract="true" native="false" synchronized="false"
   1380       static="false" final="false" visibility="public"
   1381       deprecated="not deprecated">
   1382       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1383       <doc>
   1384       <![CDATA[Returns all explicit bindings for {@code type}.
   1385 
   1386  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
   1387       </doc>
   1388     </method>
   1389     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   1390       abstract="true" native="false" synchronized="false"
   1391       static="false" final="false" visibility="public"
   1392       deprecated="not deprecated">
   1393       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1394       <doc>
   1395       <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid
   1396  using this method, in favor of having Guice inject your dependencies ahead of time.
   1397 
   1398  @throws ConfigurationException if this injector cannot find or create the provider.
   1399  @see Binder#getProvider(Key) for an alternative that offers up front error detection]]>
   1400       </doc>
   1401     </method>
   1402     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   1403       abstract="true" native="false" synchronized="false"
   1404       static="false" final="false" visibility="public"
   1405       deprecated="not deprecated">
   1406       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1407       <doc>
   1408       <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid
   1409  using this method, in favor of having Guice inject your dependencies ahead of time.
   1410 
   1411  @throws ConfigurationException if this injector cannot find or create the provider.
   1412  @see Binder#getProvider(Class) for an alternative that offers up front error detection]]>
   1413       </doc>
   1414     </method>
   1415     <method name="getInstance" return="T"
   1416       abstract="true" native="false" synchronized="false"
   1417       static="false" final="false" visibility="public"
   1418       deprecated="not deprecated">
   1419       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1420       <doc>
   1421       <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code
   1422  getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice
   1423  inject your dependencies ahead of time.
   1424 
   1425  @throws ConfigurationException if this injector cannot find or create the provider.
   1426  @throws ProvisionException if there was a runtime failure while providing an instance.]]>
   1427       </doc>
   1428     </method>
   1429     <method name="getInstance" return="T"
   1430       abstract="true" native="false" synchronized="false"
   1431       static="false" final="false" visibility="public"
   1432       deprecated="not deprecated">
   1433       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1434       <doc>
   1435       <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code
   1436  getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice
   1437  inject your dependencies ahead of time.
   1438 
   1439  @throws ConfigurationException if this injector cannot find or create the provider.
   1440  @throws ProvisionException if there was a runtime failure while providing an instance.]]>
   1441       </doc>
   1442     </method>
   1443     <method name="getParent" return="com.google.inject.Injector"
   1444       abstract="true" native="false" synchronized="false"
   1445       static="false" final="false" visibility="public"
   1446       deprecated="not deprecated">
   1447       <doc>
   1448       <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector.
   1449 
   1450  @since 2.0]]>
   1451       </doc>
   1452     </method>
   1453     <method name="createChildInjector" return="com.google.inject.Injector"
   1454       abstract="true" native="false" synchronized="false"
   1455       static="false" final="false" visibility="public"
   1456       deprecated="not deprecated">
   1457       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1458       <doc>
   1459       <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
   1460  interceptors and type converters are inherited -- they are visible to the child injector.
   1461  Elements of the child injector are not visible to its parent.
   1462 
   1463  <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
   1464  whenever possible. This allows for scoped instances to be shared between injectors. Use
   1465  explicit bindings to prevent bindings from being shared with the parent injector.  Optional
   1466  injections in just-in-time bindings (created in the parent injector) may be silently
   1467  ignored if the optional dependencies are from the child injector.
   1468 
   1469  <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
   1470  bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
   1471  injector to itself.
   1472 
   1473  @since 2.0]]>
   1474       </doc>
   1475     </method>
   1476     <method name="createChildInjector" return="com.google.inject.Injector"
   1477       abstract="true" native="false" synchronized="false"
   1478       static="false" final="false" visibility="public"
   1479       deprecated="not deprecated">
   1480       <param name="modules" type="com.google.inject.Module[]"/>
   1481       <doc>
   1482       <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
   1483  interceptors and type converters are inherited -- they are visible to the child injector.
   1484  Elements of the child injector are not visible to its parent.
   1485 
   1486  <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
   1487  whenever possible. This allows for scoped instances to be shared between injectors. Use
   1488  explicit bindings to prevent bindings from being shared with the parent injector.
   1489 
   1490  <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
   1491  bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
   1492  injector to itself.
   1493 
   1494  @since 2.0]]>
   1495       </doc>
   1496     </method>
   1497     <method name="getScopeBindings" return="java.util.Map&lt;java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;, com.google.inject.Scope&gt;"
   1498       abstract="true" native="false" synchronized="false"
   1499       static="false" final="false" visibility="public"
   1500       deprecated="not deprecated">
   1501       <doc>
   1502       <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations
   1503  like {@code Singleton.class}, and the values are scope instances, such as {@code
   1504  Scopes.SINGLETON}. The returned map is immutable.
   1505 
   1506  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1507  
   1508  @since 3.0]]>
   1509       </doc>
   1510     </method>
   1511     <method name="getTypeConverterBindings" return="java.util.Set&lt;com.google.inject.spi.TypeConverterBinding&gt;"
   1512       abstract="true" native="false" synchronized="false"
   1513       static="false" final="false" visibility="public"
   1514       deprecated="not deprecated">
   1515       <doc>
   1516       <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is
   1517  immutable.
   1518 
   1519  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1520  
   1521  @since 3.0]]>
   1522       </doc>
   1523     </method>
   1524     <doc>
   1525     <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies
   1526  for each type and uses bindings to inject them. This is the core of Guice, although you rarely
   1527  interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency
   1528  injection from its cousin, the service locator pattern.
   1529 
   1530  <p>Contains several default bindings:
   1531 
   1532  <ul>
   1533  <li>This {@link Injector} instance itself
   1534  <li>A {@code Provider<T>} for each binding of type {@code T}
   1535  <li>The {@link java.util.logging.Logger} for the class being injected
   1536  <li>The {@link Stage} in which the Injector was created
   1537  </ul>
   1538 
   1539  Injectors are created using the facade class {@link Guice}.
   1540 
   1541  <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of
   1542  already-constructed instances. This can be used to interoperate with objects created by other
   1543  frameworks or services.
   1544 
   1545  <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit
   1546  the configuration of their parent injectors, but the converse does not hold.
   1547 
   1548  <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This
   1549  enables tools and extensions to operate on an injector reflectively.
   1550 
   1551  @author crazybob (a] google.com (Bob Lee)
   1552  @author jessewilson (a] google.com (Jesse Wilson)]]>
   1553     </doc>
   1554   </interface>
   1555   <!-- end interface com.google.inject.Injector -->
   1556   <!-- start class com.google.inject.Key -->
   1557   <class name="Key" extends="java.lang.Object"
   1558     abstract="false"
   1559     static="false" final="false" visibility="public"
   1560     deprecated="not deprecated">
   1561     <constructor name="Key" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   1562       static="false" final="false" visibility="protected"
   1563       deprecated="not deprecated">
   1564       <doc>
   1565       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1566 
   1567  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1568  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1569  at runtime despite erasure.
   1570 
   1571  <p>Example usage for a binding of type {@code Foo} annotated with
   1572  {@code @Bar}:
   1573 
   1574  <p>{@code new Key<Foo>(Bar.class) {}}.]]>
   1575       </doc>
   1576     </constructor>
   1577     <constructor name="Key" type="java.lang.annotation.Annotation"
   1578       static="false" final="false" visibility="protected"
   1579       deprecated="not deprecated">
   1580       <doc>
   1581       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1582 
   1583  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1584  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1585  at runtime despite erasure.
   1586 
   1587  <p>Example usage for a binding of type {@code Foo} annotated with
   1588  {@code @Bar}:
   1589 
   1590  <p>{@code new Key<Foo>(new Bar()) {}}.]]>
   1591       </doc>
   1592     </constructor>
   1593     <constructor name="Key"
   1594       static="false" final="false" visibility="protected"
   1595       deprecated="not deprecated">
   1596       <doc>
   1597       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1598 
   1599  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1600  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1601  at runtime despite erasure.
   1602 
   1603  <p>Example usage for a binding of type {@code Foo}:
   1604 
   1605  <p>{@code new Key<Foo>() {}}.]]>
   1606       </doc>
   1607     </constructor>
   1608     <method name="getTypeLiteral" return="com.google.inject.TypeLiteral&lt;T&gt;"
   1609       abstract="false" native="false" synchronized="false"
   1610       static="false" final="true" visibility="public"
   1611       deprecated="not deprecated">
   1612       <doc>
   1613       <![CDATA[Gets the key type.]]>
   1614       </doc>
   1615     </method>
   1616     <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   1617       abstract="false" native="false" synchronized="false"
   1618       static="false" final="true" visibility="public"
   1619       deprecated="not deprecated">
   1620       <doc>
   1621       <![CDATA[Gets the annotation type.]]>
   1622       </doc>
   1623     </method>
   1624     <method name="getAnnotation" return="java.lang.annotation.Annotation"
   1625       abstract="false" native="false" synchronized="false"
   1626       static="false" final="true" visibility="public"
   1627       deprecated="not deprecated">
   1628       <doc>
   1629       <![CDATA[Gets the annotation.]]>
   1630       </doc>
   1631     </method>
   1632     <method name="equals" return="boolean"
   1633       abstract="false" native="false" synchronized="false"
   1634       static="false" final="true" visibility="public"
   1635       deprecated="not deprecated">
   1636       <param name="o" type="java.lang.Object"/>
   1637     </method>
   1638     <method name="hashCode" return="int"
   1639       abstract="false" native="false" synchronized="false"
   1640       static="false" final="true" visibility="public"
   1641       deprecated="not deprecated">
   1642     </method>
   1643     <method name="toString" return="java.lang.String"
   1644       abstract="false" native="false" synchronized="false"
   1645       static="false" final="true" visibility="public"
   1646       deprecated="not deprecated">
   1647     </method>
   1648     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1649       abstract="false" native="false" synchronized="false"
   1650       static="true" final="false" visibility="public"
   1651       deprecated="not deprecated">
   1652       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1653       <doc>
   1654       <![CDATA[Gets a key for an injection type.]]>
   1655       </doc>
   1656     </method>
   1657     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1658       abstract="false" native="false" synchronized="false"
   1659       static="true" final="false" visibility="public"
   1660       deprecated="not deprecated">
   1661       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1662       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1663       <doc>
   1664       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1665       </doc>
   1666     </method>
   1667     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1668       abstract="false" native="false" synchronized="false"
   1669       static="true" final="false" visibility="public"
   1670       deprecated="not deprecated">
   1671       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1672       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1673       <doc>
   1674       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1675       </doc>
   1676     </method>
   1677     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1678       abstract="false" native="false" synchronized="false"
   1679       static="true" final="false" visibility="public"
   1680       deprecated="not deprecated">
   1681       <param name="type" type="java.lang.reflect.Type"/>
   1682       <doc>
   1683       <![CDATA[Gets a key for an injection type.]]>
   1684       </doc>
   1685     </method>
   1686     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1687       abstract="false" native="false" synchronized="false"
   1688       static="true" final="false" visibility="public"
   1689       deprecated="not deprecated">
   1690       <param name="type" type="java.lang.reflect.Type"/>
   1691       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1692       <doc>
   1693       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1694       </doc>
   1695     </method>
   1696     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1697       abstract="false" native="false" synchronized="false"
   1698       static="true" final="false" visibility="public"
   1699       deprecated="not deprecated">
   1700       <param name="type" type="java.lang.reflect.Type"/>
   1701       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1702       <doc>
   1703       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1704       </doc>
   1705     </method>
   1706     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1707       abstract="false" native="false" synchronized="false"
   1708       static="true" final="false" visibility="public"
   1709       deprecated="not deprecated">
   1710       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1711       <doc>
   1712       <![CDATA[Gets a key for an injection type.]]>
   1713       </doc>
   1714     </method>
   1715     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1716       abstract="false" native="false" synchronized="false"
   1717       static="true" final="false" visibility="public"
   1718       deprecated="not deprecated">
   1719       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1720       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1721       <doc>
   1722       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1723       </doc>
   1724     </method>
   1725     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1726       abstract="false" native="false" synchronized="false"
   1727       static="true" final="false" visibility="public"
   1728       deprecated="not deprecated">
   1729       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1730       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1731       <doc>
   1732       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1733       </doc>
   1734     </method>
   1735     <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
   1736       abstract="false" native="false" synchronized="false"
   1737       static="false" final="false" visibility="public"
   1738       deprecated="not deprecated">
   1739       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1740       <doc>
   1741       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1742  key.
   1743 
   1744  @since 3.0]]>
   1745       </doc>
   1746     </method>
   1747     <method name="ofType" return="com.google.inject.Key&lt;?&gt;"
   1748       abstract="false" native="false" synchronized="false"
   1749       static="false" final="false" visibility="public"
   1750       deprecated="not deprecated">
   1751       <param name="type" type="java.lang.reflect.Type"/>
   1752       <doc>
   1753       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1754  key.
   1755 
   1756  @since 3.0]]>
   1757       </doc>
   1758     </method>
   1759     <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
   1760       abstract="false" native="false" synchronized="false"
   1761       static="false" final="false" visibility="public"
   1762       deprecated="not deprecated">
   1763       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1764       <doc>
   1765       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1766  key.
   1767 
   1768  @since 3.0]]>
   1769       </doc>
   1770     </method>
   1771     <method name="hasAttributes" return="boolean"
   1772       abstract="false" native="false" synchronized="false"
   1773       static="false" final="false" visibility="public"
   1774       deprecated="not deprecated">
   1775       <doc>
   1776       <![CDATA[Returns true if this key has annotation attributes.
   1777 
   1778  @since 3.0]]>
   1779       </doc>
   1780     </method>
   1781     <method name="withoutAttributes" return="com.google.inject.Key&lt;T&gt;"
   1782       abstract="false" native="false" synchronized="false"
   1783       static="false" final="false" visibility="public"
   1784       deprecated="not deprecated">
   1785       <doc>
   1786       <![CDATA[Returns this key without annotation attributes, i.e. with only the
   1787  annotation type.
   1788 
   1789  @since 3.0]]>
   1790       </doc>
   1791     </method>
   1792     <doc>
   1793     <![CDATA[Binding key consisting of an injection type and an optional annotation.
   1794  Matches the type and annotation at a point of injection.
   1795 
   1796  <p>For example, {@code Key.get(Service.class, Transactional.class)} will
   1797  match:
   1798 
   1799  <pre>
   1800    {@literal @}Inject
   1801    public void setService({@literal @}Transactional Service service) {
   1802      ...
   1803    }
   1804  </pre>
   1805 
   1806  <p>{@code Key} supports generic types via subclassing just like {@link
   1807  TypeLiteral}.
   1808 
   1809  <p>Keys do not differentiate between primitive types (int, char, etc.) and
   1810  their corresponding wrapper types (Integer, Character, etc.). Primitive
   1811  types will be replaced with their wrapper types when keys are created.
   1812 
   1813  @author crazybob (a] google.com (Bob Lee)]]>
   1814     </doc>
   1815   </class>
   1816   <!-- end class com.google.inject.Key -->
   1817   <!-- start interface com.google.inject.MembersInjector -->
   1818   <interface name="MembersInjector"    abstract="true"
   1819     static="false" final="false" visibility="public"
   1820     deprecated="not deprecated">
   1821     <method name="injectMembers"
   1822       abstract="true" native="false" synchronized="false"
   1823       static="false" final="false" visibility="public"
   1824       deprecated="not deprecated">
   1825       <param name="instance" type="T"/>
   1826       <doc>
   1827       <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
   1828  absence of an injectable constructor.
   1829 
   1830  <p>Whenever Guice creates an instance, it performs this injection automatically (after first
   1831  performing constructor injection), so if you're able to let Guice create all your objects for
   1832  you, you'll never need to use this method.
   1833 
   1834  @param instance to inject members on. May be {@code null}.]]>
   1835       </doc>
   1836     </method>
   1837     <doc>
   1838     <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the
   1839  presence or absence of an injectable constructor.
   1840 
   1841  @param <T> type to inject members of
   1842 
   1843  @author crazybob (a] google.com (Bob Lee)
   1844  @author jessewilson (a] google.com (Jesse Wilson)
   1845  @since 2.0]]>
   1846     </doc>
   1847   </interface>
   1848   <!-- end interface com.google.inject.MembersInjector -->
   1849   <!-- start interface com.google.inject.Module -->
   1850   <interface name="Module"    abstract="true"
   1851     static="false" final="false" visibility="public"
   1852     deprecated="not deprecated">
   1853     <method name="configure"
   1854       abstract="true" native="false" synchronized="false"
   1855       static="false" final="false" visibility="public"
   1856       deprecated="not deprecated">
   1857       <param name="binder" type="com.google.inject.Binder"/>
   1858       <doc>
   1859       <![CDATA[Contributes bindings and other configurations for this module to {@code binder}.
   1860 
   1861  <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use
   1862  {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are
   1863  discovered.]]>
   1864       </doc>
   1865     </method>
   1866     <doc>
   1867     <![CDATA[A module contributes configuration information, typically interface
   1868  bindings, which will be used to create an {@link Injector}. A Guice-based
   1869  application is ultimately composed of little more than a set of
   1870  {@code Module}s and some bootstrapping code.
   1871 
   1872  <p>Your Module classes can use a more streamlined syntax by extending
   1873  {@link AbstractModule} rather than implementing this interface directly.
   1874 
   1875  <p>In addition to the bindings configured via {@link #configure}, bindings
   1876  will be created for all methods annotated with {@literal @}{@link Provides}.
   1877  Use scope and binding annotations on these methods to configure the
   1878  bindings.]]>
   1879     </doc>
   1880   </interface>
   1881   <!-- end interface com.google.inject.Module -->
   1882   <!-- start class com.google.inject.OutOfScopeException -->
   1883   <class name="OutOfScopeException" extends="java.lang.RuntimeException"
   1884     abstract="false"
   1885     static="false" final="true" visibility="public"
   1886     deprecated="not deprecated">
   1887     <constructor name="OutOfScopeException" type="java.lang.String"
   1888       static="false" final="false" visibility="public"
   1889       deprecated="not deprecated">
   1890     </constructor>
   1891     <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable"
   1892       static="false" final="false" visibility="public"
   1893       deprecated="not deprecated">
   1894     </constructor>
   1895     <constructor name="OutOfScopeException" type="java.lang.Throwable"
   1896       static="false" final="false" visibility="public"
   1897       deprecated="not deprecated">
   1898     </constructor>
   1899     <doc>
   1900     <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped
   1901  object while the scope in question is not currently active.
   1902 
   1903  @author kevinb (a] google.com (Kevin Bourrillion)
   1904  @since 2.0]]>
   1905     </doc>
   1906   </class>
   1907   <!-- end class com.google.inject.OutOfScopeException -->
   1908   <!-- start interface com.google.inject.PrivateBinder -->
   1909   <interface name="PrivateBinder"    abstract="true"
   1910     static="false" final="false" visibility="public"
   1911     deprecated="not deprecated">
   1912     <implements name="com.google.inject.Binder"/>
   1913     <method name="expose"
   1914       abstract="true" native="false" synchronized="false"
   1915       static="false" final="false" visibility="public"
   1916       deprecated="not deprecated">
   1917       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   1918       <doc>
   1919       <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]>
   1920       </doc>
   1921     </method>
   1922     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1923       abstract="true" native="false" synchronized="false"
   1924       static="false" final="false" visibility="public"
   1925       deprecated="not deprecated">
   1926       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   1927       <doc>
   1928       <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
   1929  com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1930  binding annotation.]]>
   1931       </doc>
   1932     </method>
   1933     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1934       abstract="true" native="false" synchronized="false"
   1935       static="false" final="false" visibility="public"
   1936       deprecated="not deprecated">
   1937       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   1938       <doc>
   1939       <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
   1940  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1941  binding annotation.]]>
   1942       </doc>
   1943     </method>
   1944     <method name="withSource" return="com.google.inject.PrivateBinder"
   1945       abstract="true" native="false" synchronized="false"
   1946       static="false" final="false" visibility="public"
   1947       deprecated="not deprecated">
   1948       <param name="source" type="java.lang.Object"/>
   1949     </method>
   1950     <method name="skipSources" return="com.google.inject.PrivateBinder"
   1951       abstract="true" native="false" synchronized="false"
   1952       static="false" final="false" visibility="public"
   1953       deprecated="not deprecated">
   1954       <param name="classesToSkip" type="java.lang.Class[]"/>
   1955     </method>
   1956     <doc>
   1957     <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See
   1958  {@link com.google.inject.PrivateModule PrivateModule} for details.
   1959  
   1960  @author jessewilson (a] google.com (Jesse Wilson)
   1961  @since 2.0]]>
   1962     </doc>
   1963   </interface>
   1964   <!-- end interface com.google.inject.PrivateBinder -->
   1965   <!-- start class com.google.inject.PrivateModule -->
   1966   <class name="PrivateModule" extends="java.lang.Object"
   1967     abstract="true"
   1968     static="false" final="false" visibility="public"
   1969     deprecated="not deprecated">
   1970     <implements name="com.google.inject.Module"/>
   1971     <constructor name="PrivateModule"
   1972       static="false" final="false" visibility="public"
   1973       deprecated="not deprecated">
   1974     </constructor>
   1975     <method name="configure"
   1976       abstract="false" native="false" synchronized="true"
   1977       static="false" final="true" visibility="public"
   1978       deprecated="not deprecated">
   1979       <param name="binder" type="com.google.inject.Binder"/>
   1980     </method>
   1981     <method name="configure"
   1982       abstract="true" native="false" synchronized="false"
   1983       static="false" final="false" visibility="protected"
   1984       deprecated="not deprecated">
   1985       <doc>
   1986       <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class)
   1987  expose()} to make the bindings in this module available externally.]]>
   1988       </doc>
   1989     </method>
   1990     <method name="expose"
   1991       abstract="false" native="false" synchronized="false"
   1992       static="false" final="true" visibility="protected"
   1993       deprecated="not deprecated">
   1994       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1995       <doc>
   1996       <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]>
   1997       </doc>
   1998     </method>
   1999     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   2000       abstract="false" native="false" synchronized="false"
   2001       static="false" final="true" visibility="protected"
   2002       deprecated="not deprecated">
   2003       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   2004       <doc>
   2005       <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
   2006  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   2007  binding annotation.]]>
   2008       </doc>
   2009     </method>
   2010     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   2011       abstract="false" native="false" synchronized="false"
   2012       static="false" final="true" visibility="protected"
   2013       deprecated="not deprecated">
   2014       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   2015       <doc>
   2016       <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
   2017  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   2018  binding annotation.]]>
   2019       </doc>
   2020     </method>
   2021     <method name="binder" return="com.google.inject.PrivateBinder"
   2022       abstract="false" native="false" synchronized="false"
   2023       static="false" final="true" visibility="protected"
   2024       deprecated="not deprecated">
   2025       <doc>
   2026       <![CDATA[Returns the current binder.]]>
   2027       </doc>
   2028     </method>
   2029     <method name="bindScope"
   2030       abstract="false" native="false" synchronized="false"
   2031       static="false" final="true" visibility="protected"
   2032       deprecated="not deprecated">
   2033       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2034       <param name="scope" type="com.google.inject.Scope"/>
   2035       <doc>
   2036       <![CDATA[@see Binder#bindScope(Class, Scope)]]>
   2037       </doc>
   2038     </method>
   2039     <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   2040       abstract="false" native="false" synchronized="false"
   2041       static="false" final="true" visibility="protected"
   2042       deprecated="not deprecated">
   2043       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2044       <doc>
   2045       <![CDATA[@see Binder#bind(Key)]]>
   2046       </doc>
   2047     </method>
   2048     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
   2049       abstract="false" native="false" synchronized="false"
   2050       static="false" final="true" visibility="protected"
   2051       deprecated="not deprecated">
   2052       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2053       <doc>
   2054       <![CDATA[@see Binder#bind(TypeLiteral)]]>
   2055       </doc>
   2056     </method>
   2057     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
   2058       abstract="false" native="false" synchronized="false"
   2059       static="false" final="true" visibility="protected"
   2060       deprecated="not deprecated">
   2061       <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
   2062       <doc>
   2063       <![CDATA[@see Binder#bind(Class)]]>
   2064       </doc>
   2065     </method>
   2066     <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
   2067       abstract="false" native="false" synchronized="false"
   2068       static="false" final="true" visibility="protected"
   2069       deprecated="not deprecated">
   2070       <doc>
   2071       <![CDATA[@see Binder#bindConstant()]]>
   2072       </doc>
   2073     </method>
   2074     <method name="install"
   2075       abstract="false" native="false" synchronized="false"
   2076       static="false" final="true" visibility="protected"
   2077       deprecated="not deprecated">
   2078       <param name="module" type="com.google.inject.Module"/>
   2079       <doc>
   2080       <![CDATA[@see Binder#install(Module)]]>
   2081       </doc>
   2082     </method>
   2083     <method name="addError"
   2084       abstract="false" native="false" synchronized="false"
   2085       static="false" final="true" visibility="protected"
   2086       deprecated="not deprecated">
   2087       <param name="message" type="java.lang.String"/>
   2088       <param name="arguments" type="java.lang.Object[]"/>
   2089       <doc>
   2090       <![CDATA[@see Binder#addError(String, Object[])]]>
   2091       </doc>
   2092     </method>
   2093     <method name="addError"
   2094       abstract="false" native="false" synchronized="false"
   2095       static="false" final="true" visibility="protected"
   2096       deprecated="not deprecated">
   2097       <param name="t" type="java.lang.Throwable"/>
   2098       <doc>
   2099       <![CDATA[@see Binder#addError(Throwable)]]>
   2100       </doc>
   2101     </method>
   2102     <method name="addError"
   2103       abstract="false" native="false" synchronized="false"
   2104       static="false" final="true" visibility="protected"
   2105       deprecated="not deprecated">
   2106       <param name="message" type="com.google.inject.spi.Message"/>
   2107       <doc>
   2108       <![CDATA[@see Binder#addError(Message)]]>
   2109       </doc>
   2110     </method>
   2111     <method name="requestInjection"
   2112       abstract="false" native="false" synchronized="false"
   2113       static="false" final="true" visibility="protected"
   2114       deprecated="not deprecated">
   2115       <param name="instance" type="java.lang.Object"/>
   2116       <doc>
   2117       <![CDATA[@see Binder#requestInjection(Object)]]>
   2118       </doc>
   2119     </method>
   2120     <method name="requestStaticInjection"
   2121       abstract="false" native="false" synchronized="false"
   2122       static="false" final="true" visibility="protected"
   2123       deprecated="not deprecated">
   2124       <param name="types" type="java.lang.Class[]"/>
   2125       <doc>
   2126       <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
   2127       </doc>
   2128     </method>
   2129     <method name="bindInterceptor"
   2130       abstract="false" native="false" synchronized="false"
   2131       static="false" final="true" visibility="protected"
   2132       deprecated="not deprecated">
   2133       <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
   2134       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
   2135       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
   2136       <doc>
   2137       <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]>
   2138       </doc>
   2139     </method>
   2140     <method name="requireBinding"
   2141       abstract="false" native="false" synchronized="false"
   2142       static="false" final="true" visibility="protected"
   2143       deprecated="not deprecated">
   2144       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   2145       <doc>
   2146       <![CDATA[Instructs Guice to require a binding to the given key.]]>
   2147       </doc>
   2148     </method>
   2149     <method name="requireBinding"
   2150       abstract="false" native="false" synchronized="false"
   2151       static="false" final="true" visibility="protected"
   2152       deprecated="not deprecated">
   2153       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   2154       <doc>
   2155       <![CDATA[Instructs Guice to require a binding to the given type.]]>
   2156       </doc>
   2157     </method>
   2158     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   2159       abstract="false" native="false" synchronized="false"
   2160       static="false" final="true" visibility="protected"
   2161       deprecated="not deprecated">
   2162       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2163       <doc>
   2164       <![CDATA[@see Binder#getProvider(Key)]]>
   2165       </doc>
   2166     </method>
   2167     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   2168       abstract="false" native="false" synchronized="false"
   2169       static="false" final="true" visibility="protected"
   2170       deprecated="not deprecated">
   2171       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2172       <doc>
   2173       <![CDATA[@see Binder#getProvider(Class)]]>
   2174       </doc>
   2175     </method>
   2176     <method name="convertToTypes"
   2177       abstract="false" native="false" synchronized="false"
   2178       static="false" final="true" visibility="protected"
   2179       deprecated="not deprecated">
   2180       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
   2181       <param name="converter" type="com.google.inject.spi.TypeConverter"/>
   2182       <doc>
   2183       <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]>
   2184       </doc>
   2185     </method>
   2186     <method name="currentStage" return="com.google.inject.Stage"
   2187       abstract="false" native="false" synchronized="false"
   2188       static="false" final="true" visibility="protected"
   2189       deprecated="not deprecated">
   2190       <doc>
   2191       <![CDATA[@see Binder#currentStage()]]>
   2192       </doc>
   2193     </method>
   2194     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   2195       abstract="false" native="false" synchronized="false"
   2196       static="false" final="false" visibility="protected"
   2197       deprecated="not deprecated">
   2198       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2199       <doc>
   2200       <![CDATA[@see Binder#getMembersInjector(Class)]]>
   2201       </doc>
   2202     </method>
   2203     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   2204       abstract="false" native="false" synchronized="false"
   2205       static="false" final="false" visibility="protected"
   2206       deprecated="not deprecated">
   2207       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2208       <doc>
   2209       <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]>
   2210       </doc>
   2211     </method>
   2212     <method name="bindListener"
   2213       abstract="false" native="false" synchronized="false"
   2214       static="false" final="false" visibility="protected"
   2215       deprecated="not deprecated">
   2216       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
   2217       <param name="listener" type="com.google.inject.spi.TypeListener"/>
   2218       <doc>
   2219       <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]>
   2220       </doc>
   2221     </method>
   2222     <method name="bindListener"
   2223       abstract="false" native="false" synchronized="false"
   2224       static="false" final="false" visibility="protected"
   2225       deprecated="not deprecated">
   2226       <param name="bindingMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"/>
   2227       <param name="listeners" type="com.google.inject.spi.ProvisionListener[]"/>
   2228       <doc>
   2229       <![CDATA[@see Binder#bindListener(Matcher, ProvisionListener...)
   2230  @since 4.0]]>
   2231       </doc>
   2232     </method>
   2233     <doc>
   2234     <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings
   2235  that are explicitly exposed will be available to other modules and to the users of the injector.
   2236  This module may expose the bindings it creates and the bindings of the modules it installs.
   2237 
   2238  <p>A private module can be nested within a regular module or within another private module using
   2239  {@link Binder#install install()}.  Its bindings live in a new environment that inherits bindings,
   2240  type converters, scopes, and interceptors from the surrounding ("parent") environment.  When you
   2241  nest multiple private modules, the result is a tree of environments where the injector's
   2242  environment is the root.
   2243 
   2244  <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link
   2245  com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link
   2246  Exposed} annotation:
   2247 
   2248  <pre>
   2249  public class FooBarBazModule extends PrivateModule {
   2250    protected void configure() {
   2251      bind(Foo.class).to(RealFoo.class);
   2252      expose(Foo.class);
   2253 
   2254      install(new TransactionalBarModule());
   2255      expose(Bar.class).annotatedWith(Transactional.class);
   2256 
   2257      bind(SomeImplementationDetail.class);
   2258      install(new MoreImplementationDetailsModule());
   2259    }
   2260 
   2261    {@literal @}Provides {@literal @}Exposed
   2262    public Baz provideBaz() {
   2263      return new SuperBaz();
   2264    }
   2265  }
   2266  </pre>
   2267 
   2268  <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent
   2269  injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the
   2270  root environment. Such bindings are shared among all environments in the tree.
   2271  
   2272  <p>The scope of a binding is constrained to its environment. A singleton bound in a private
   2273  module will be unique to its environment. But a binding for the same type in a different private
   2274  module will yield a different instance.
   2275 
   2276  <p>A shared binding that injects the {@code Injector} gets the root injector, which only has
   2277  access to bindings in the root environment. An explicit binding that injects the {@code Injector}
   2278  gets access to all bindings in the child environment.
   2279 
   2280  <p>To promote a just-in-time binding to an explicit binding, bind it:
   2281  <pre>
   2282    bind(FooImpl.class);
   2283  </pre>
   2284 
   2285  @author jessewilson (a] google.com (Jesse Wilson)
   2286  @since 2.0]]>
   2287     </doc>
   2288   </class>
   2289   <!-- end class com.google.inject.PrivateModule -->
   2290   <!-- start class com.google.inject.ProvidedBy -->
   2291   <class name="ProvidedBy"    abstract="true"
   2292     static="false" final="false" visibility="public"
   2293     deprecated="not deprecated">
   2294     <implements name="java.lang.annotation.Annotation"/>
   2295     <doc>
   2296     <![CDATA[A pointer to the default provider type for a type.
   2297 
   2298  @author crazybob (a] google.com (Bob Lee)]]>
   2299     </doc>
   2300   </class>
   2301   <!-- end class com.google.inject.ProvidedBy -->
   2302   <!-- start interface com.google.inject.Provider -->
   2303   <interface name="Provider"    abstract="true"
   2304     static="false" final="false" visibility="public"
   2305     deprecated="not deprecated">
   2306     <implements name="javax.inject.Provider&lt;T&gt;"/>
   2307     <method name="get" return="T"
   2308       abstract="true" native="false" synchronized="false"
   2309       static="false" final="false" visibility="public"
   2310       deprecated="not deprecated">
   2311       <doc>
   2312       <![CDATA[Provides an instance of {@code T}. Must never return {@code null}.
   2313 
   2314  @throws OutOfScopeException when an attempt is made to access a scoped object while the scope
   2315      in question is not currently active
   2316  @throws ProvisionException if an instance cannot be provided. Such exceptions include messages
   2317      and throwables to describe why provision failed.]]>
   2318       </doc>
   2319     </method>
   2320     <doc>
   2321     <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways
   2322  by Guice:
   2323 
   2324  <ul>
   2325  <li>When the default means for obtaining instances (an injectable or parameterless constructor)
   2326  is insufficient for a particular binding, the module can specify a custom {@code Provider}
   2327  instead, to control exactly how Guice creates or obtains instances for the binding.
   2328 
   2329  <li>An implementation class may always choose to have a {@code Provider<T>} instance injected,
   2330  rather than having a {@code T} injected directly.  This may give you access to multiple
   2331  instances, instances you wish to safely mutate and discard, instances which are out of scope
   2332  (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or
   2333  instances that will be initialized lazily.
   2334 
   2335  <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides
   2336  when to delegate to the backing provider and when to provide the instance some other way.
   2337 
   2338  <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests
   2339  for a given key, via the {@link Injector#getProvider} methods.
   2340  </ul>
   2341 
   2342  @param <T> the type of object this provides
   2343 
   2344  @author crazybob (a] google.com (Bob Lee)]]>
   2345     </doc>
   2346   </interface>
   2347   <!-- end interface com.google.inject.Provider -->
   2348   <!-- start class com.google.inject.Provides -->
   2349   <class name="Provides"    abstract="true"
   2350     static="false" final="false" visibility="public"
   2351     deprecated="not deprecated">
   2352     <implements name="java.lang.annotation.Annotation"/>
   2353     <doc>
   2354     <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return
   2355  type is bound to its returned value. Guice will pass dependencies to the method as parameters.
   2356 
   2357  @author crazybob (a] google.com (Bob Lee)
   2358  @since 2.0]]>
   2359     </doc>
   2360   </class>
   2361   <!-- end class com.google.inject.Provides -->
   2362   <!-- start class com.google.inject.ProvisionException -->
   2363   <class name="ProvisionException" extends="java.lang.RuntimeException"
   2364     abstract="false"
   2365     static="false" final="true" visibility="public"
   2366     deprecated="not deprecated">
   2367     <constructor name="ProvisionException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
   2368       static="false" final="false" visibility="public"
   2369       deprecated="not deprecated">
   2370       <doc>
   2371       <![CDATA[Creates a ProvisionException containing {@code messages}.]]>
   2372       </doc>
   2373     </constructor>
   2374     <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable"
   2375       static="false" final="false" visibility="public"
   2376       deprecated="not deprecated">
   2377     </constructor>
   2378     <constructor name="ProvisionException" type="java.lang.String"
   2379       static="false" final="false" visibility="public"
   2380       deprecated="not deprecated">
   2381     </constructor>
   2382     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   2383       abstract="false" native="false" synchronized="false"
   2384       static="false" final="false" visibility="public"
   2385       deprecated="not deprecated">
   2386       <doc>
   2387       <![CDATA[Returns messages for the errors that caused this exception.]]>
   2388       </doc>
   2389     </method>
   2390     <method name="getMessage" return="java.lang.String"
   2391       abstract="false" native="false" synchronized="false"
   2392       static="false" final="false" visibility="public"
   2393       deprecated="not deprecated">
   2394     </method>
   2395     <doc>
   2396     <![CDATA[Indicates that there was a runtime failure while providing an instance.
   2397 
   2398  @author kevinb (a] google.com (Kevin Bourrillion)
   2399  @author jessewilson (a] google.com (Jesse Wilson)
   2400  @since 2.0]]>
   2401     </doc>
   2402   </class>
   2403   <!-- end class com.google.inject.ProvisionException -->
   2404   <!-- start interface com.google.inject.Scope -->
   2405   <interface name="Scope"    abstract="true"
   2406     static="false" final="false" visibility="public"
   2407     deprecated="not deprecated">
   2408     <method name="scope" return="com.google.inject.Provider&lt;T&gt;"
   2409       abstract="true" native="false" synchronized="false"
   2410       static="false" final="false" visibility="public"
   2411       deprecated="not deprecated">
   2412       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2413       <param name="unscoped" type="com.google.inject.Provider&lt;T&gt;"/>
   2414       <doc>
   2415       <![CDATA[Scopes a provider. The returned provider returns objects from this scope.
   2416  If an object does not exist in this scope, the provider can use the given
   2417  unscoped provider to retrieve one.
   2418 
   2419  <p>Scope implementations are strongly encouraged to override
   2420  {@link Object#toString} in the returned provider and include the backing
   2421  provider's {@code toString()} output.
   2422 
   2423  @param key binding key
   2424  @param unscoped locates an instance when one doesn't already exist in this
   2425   scope.
   2426  @return a new provider which only delegates to the given unscoped provider
   2427   when an instance of the requested object doesn't already exist in this
   2428   scope]]>
   2429       </doc>
   2430     </method>
   2431     <method name="toString" return="java.lang.String"
   2432       abstract="true" native="false" synchronized="false"
   2433       static="false" final="false" visibility="public"
   2434       deprecated="not deprecated">
   2435       <doc>
   2436       <![CDATA[A short but useful description of this scope.  For comparison, the standard
   2437  scopes that ship with guice use the descriptions
   2438  {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and
   2439  {@code "ServletScopes.REQUEST"}.]]>
   2440       </doc>
   2441     </method>
   2442     <doc>
   2443     <![CDATA[A scope is a level of visibility that instances provided by Guice may have.
   2444  By default, an instance created by the {@link Injector} has <i>no scope</i>,
   2445  meaning it has no state from the framework's perspective -- the
   2446  {@code Injector} creates it, injects it once into the class that required it,
   2447  and then immediately forgets it. Associating a scope with a particular
   2448  binding allows the created instance to be "remembered" and possibly used
   2449  again for other injections.
   2450 
   2451  <p>An example of a scope is {@link Scopes#SINGLETON}.
   2452 
   2453  @author crazybob (a] google.com (Bob Lee)]]>
   2454     </doc>
   2455   </interface>
   2456   <!-- end interface com.google.inject.Scope -->
   2457   <!-- start class com.google.inject.ScopeAnnotation -->
   2458   <class name="ScopeAnnotation"    abstract="true"
   2459     static="false" final="false" visibility="public"
   2460     deprecated="not deprecated">
   2461     <implements name="java.lang.annotation.Annotation"/>
   2462     <doc>
   2463     <![CDATA[Annotates annotations which are used for scoping. Only one such annotation
   2464  may apply to a single implementation class. You must also annotate scope
   2465  annotations with {@code @Retention(RUNTIME)}. For example:
   2466 
   2467  <pre>
   2468    {@code @}Retention(RUNTIME)
   2469    {@code @}Target(TYPE, METHOD)
   2470    {@code @}ScopeAnnotation
   2471    public {@code @}interface SessionScoped {}
   2472  </pre>
   2473 
   2474  @author crazybob (a] google.com (Bob Lee)]]>
   2475     </doc>
   2476   </class>
   2477   <!-- end class com.google.inject.ScopeAnnotation -->
   2478   <!-- start class com.google.inject.Scopes -->
   2479   <class name="Scopes" extends="java.lang.Object"
   2480     abstract="false"
   2481     static="false" final="false" visibility="public"
   2482     deprecated="not deprecated">
   2483     <method name="isSingleton" return="boolean"
   2484       abstract="false" native="false" synchronized="false"
   2485       static="true" final="false" visibility="public"
   2486       deprecated="not deprecated">
   2487       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   2488       <doc>
   2489       <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link
   2490  com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
   2491  was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
   2492  also true if the target binding is singleton-scoped.
   2493 
   2494  @since 3.0]]>
   2495       </doc>
   2496     </method>
   2497     <method name="isScoped" return="boolean"
   2498       abstract="false" native="false" synchronized="false"
   2499       static="true" final="false" visibility="public"
   2500       deprecated="not deprecated">
   2501       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   2502       <param name="scope" type="com.google.inject.Scope"/>
   2503       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2504       <doc>
   2505       <![CDATA[Returns true if {@code binding} has the given scope. If the binding is a {@link
   2506  com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
   2507  was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
   2508  also true if the target binding has the given scope.
   2509 
   2510  @param binding binding to check
   2511  @param scope scope implementation instance
   2512  @param scopeAnnotation scope annotation class
   2513  @since 4.0]]>
   2514       </doc>
   2515     </method>
   2516     <method name="isCircularProxy" return="boolean"
   2517       abstract="false" native="false" synchronized="false"
   2518       static="true" final="false" visibility="public"
   2519       deprecated="not deprecated">
   2520       <param name="object" type="java.lang.Object"/>
   2521       <doc>
   2522       <![CDATA[Returns true if the object is a proxy for a circular dependency,
   2523  constructed by Guice because it encountered a circular dependency. Scope
   2524  implementations should be careful to <b>not cache circular proxies</b>,
   2525  because the proxies are not intended for general purpose use. (They are
   2526  designed just to fulfill the immediate injection, not all injections.
   2527  Caching them can lead to IllegalArgumentExceptions or ClassCastExceptions.)
   2528 
   2529  @since 4.0]]>
   2530       </doc>
   2531     </method>
   2532     <field name="SINGLETON" type="com.google.inject.Scope"
   2533       transient="false" volatile="false"
   2534       static="true" final="true" visibility="public"
   2535       deprecated="not deprecated">
   2536       <doc>
   2537       <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]>
   2538       </doc>
   2539     </field>
   2540     <field name="NO_SCOPE" type="com.google.inject.Scope"
   2541       transient="false" volatile="false"
   2542       static="true" final="true" visibility="public"
   2543       deprecated="not deprecated">
   2544       <doc>
   2545       <![CDATA[No scope; the same as not applying any scope at all.  Each time the
   2546  Injector obtains an instance of an object with "no scope", it injects this
   2547  instance then immediately forgets it.  When the next request for the same
   2548  binding arrives it will need to obtain the instance over again.
   2549 
   2550  <p>This exists only in case a class has been annotated with a scope
   2551  annotation such as {@link Singleton @Singleton}, and you need to override
   2552  this to "no scope" in your binding.
   2553 
   2554  @since 2.0]]>
   2555       </doc>
   2556     </field>
   2557     <doc>
   2558     <![CDATA[Built-in scope implementations.
   2559 
   2560  @author crazybob (a] google.com (Bob Lee)]]>
   2561     </doc>
   2562   </class>
   2563   <!-- end class com.google.inject.Scopes -->
   2564   <!-- start class com.google.inject.Singleton -->
   2565   <class name="Singleton"    abstract="true"
   2566     static="false" final="false" visibility="public"
   2567     deprecated="not deprecated">
   2568     <implements name="java.lang.annotation.Annotation"/>
   2569     <doc>
   2570     <![CDATA[Apply this to implementation classes when you want only one instance
   2571  (per {@link Injector}) to be reused for all injections for that binding.
   2572 
   2573  @author crazybob (a] google.com (Bob Lee)]]>
   2574     </doc>
   2575   </class>
   2576   <!-- end class com.google.inject.Singleton -->
   2577   <!-- start class com.google.inject.Stage -->
   2578   <class name="Stage" extends="java.lang.Enum&lt;com.google.inject.Stage&gt;"
   2579     abstract="false"
   2580     static="false" final="true" visibility="public"
   2581     deprecated="not deprecated">
   2582     <method name="values" return="com.google.inject.Stage[]"
   2583       abstract="false" native="false" synchronized="false"
   2584       static="true" final="false" visibility="public"
   2585       deprecated="not deprecated">
   2586     </method>
   2587     <method name="valueOf" return="com.google.inject.Stage"
   2588       abstract="false" native="false" synchronized="false"
   2589       static="true" final="false" visibility="public"
   2590       deprecated="not deprecated">
   2591       <param name="name" type="java.lang.String"/>
   2592     </method>
   2593     <doc>
   2594     <![CDATA[The stage we're running in.
   2595 
   2596  @author crazybob (a] google.com (Bob Lee)]]>
   2597     </doc>
   2598   </class>
   2599   <!-- end class com.google.inject.Stage -->
   2600   <!-- start class com.google.inject.TypeLiteral -->
   2601   <class name="TypeLiteral" extends="java.lang.Object"
   2602     abstract="false"
   2603     static="false" final="false" visibility="public"
   2604     deprecated="not deprecated">
   2605     <constructor name="TypeLiteral"
   2606       static="false" final="false" visibility="protected"
   2607       deprecated="not deprecated">
   2608       <doc>
   2609       <![CDATA[Constructs a new type literal. Derives represented class from type
   2610  parameter.
   2611 
   2612  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   2613  parameter in the anonymous class's type hierarchy so we can reconstitute it
   2614  at runtime despite erasure.]]>
   2615       </doc>
   2616     </constructor>
   2617     <method name="getRawType" return="java.lang.Class&lt;? super T&gt;"
   2618       abstract="false" native="false" synchronized="false"
   2619       static="false" final="true" visibility="public"
   2620       deprecated="not deprecated">
   2621       <doc>
   2622       <![CDATA[Returns the raw (non-generic) type for this type.
   2623  
   2624  @since 2.0]]>
   2625       </doc>
   2626     </method>
   2627     <method name="getType" return="java.lang.reflect.Type"
   2628       abstract="false" native="false" synchronized="false"
   2629       static="false" final="true" visibility="public"
   2630       deprecated="not deprecated">
   2631       <doc>
   2632       <![CDATA[Gets underlying {@code Type} instance.]]>
   2633       </doc>
   2634     </method>
   2635     <method name="hashCode" return="int"
   2636       abstract="false" native="false" synchronized="false"
   2637       static="false" final="true" visibility="public"
   2638       deprecated="not deprecated">
   2639     </method>
   2640     <method name="equals" return="boolean"
   2641       abstract="false" native="false" synchronized="false"
   2642       static="false" final="true" visibility="public"
   2643       deprecated="not deprecated">
   2644       <param name="o" type="java.lang.Object"/>
   2645     </method>
   2646     <method name="toString" return="java.lang.String"
   2647       abstract="false" native="false" synchronized="false"
   2648       static="false" final="true" visibility="public"
   2649       deprecated="not deprecated">
   2650     </method>
   2651     <method name="get" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2652       abstract="false" native="false" synchronized="false"
   2653       static="true" final="false" visibility="public"
   2654       deprecated="not deprecated">
   2655       <param name="type" type="java.lang.reflect.Type"/>
   2656       <doc>
   2657       <![CDATA[Gets type literal for the given {@code Type} instance.]]>
   2658       </doc>
   2659     </method>
   2660     <method name="get" return="com.google.inject.TypeLiteral&lt;T&gt;"
   2661       abstract="false" native="false" synchronized="false"
   2662       static="true" final="false" visibility="public"
   2663       deprecated="not deprecated">
   2664       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2665       <doc>
   2666       <![CDATA[Gets type literal for the given {@code Class} instance.]]>
   2667       </doc>
   2668     </method>
   2669     <method name="getSupertype" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2670       abstract="false" native="false" synchronized="false"
   2671       static="false" final="false" visibility="public"
   2672       deprecated="not deprecated">
   2673       <param name="supertype" type="java.lang.Class&lt;?&gt;"/>
   2674       <doc>
   2675       <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code
   2676  ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code
   2677  Iterable.class}.
   2678 
   2679  @param supertype a superclass of, or interface implemented by, this.
   2680  @since 2.0]]>
   2681       </doc>
   2682     </method>
   2683     <method name="getFieldType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2684       abstract="false" native="false" synchronized="false"
   2685       static="false" final="false" visibility="public"
   2686       deprecated="not deprecated">
   2687       <param name="field" type="java.lang.reflect.Field"/>
   2688       <doc>
   2689       <![CDATA[Returns the resolved generic type of {@code field}.
   2690 
   2691  @param field a field defined by this or any superclass.
   2692  @since 2.0]]>
   2693       </doc>
   2694     </method>
   2695     <method name="getParameterTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   2696       abstract="false" native="false" synchronized="false"
   2697       static="false" final="false" visibility="public"
   2698       deprecated="not deprecated">
   2699       <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
   2700       <doc>
   2701       <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}.
   2702 
   2703  @param methodOrConstructor a method or constructor defined by this or any supertype.
   2704  @since 2.0]]>
   2705       </doc>
   2706     </method>
   2707     <method name="getExceptionTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   2708       abstract="false" native="false" synchronized="false"
   2709       static="false" final="false" visibility="public"
   2710       deprecated="not deprecated">
   2711       <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
   2712       <doc>
   2713       <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}.
   2714 
   2715  @param methodOrConstructor a method or constructor defined by this or any supertype.
   2716  @since 2.0]]>
   2717       </doc>
   2718     </method>
   2719     <method name="getReturnType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2720       abstract="false" native="false" synchronized="false"
   2721       static="false" final="false" visibility="public"
   2722       deprecated="not deprecated">
   2723       <param name="method" type="java.lang.reflect.Method"/>
   2724       <doc>
   2725       <![CDATA[Returns the resolved generic return type of {@code method}.
   2726 
   2727  @param method a method defined by this or any supertype.
   2728  @since 2.0]]>
   2729       </doc>
   2730     </method>
   2731     <doc>
   2732     <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to
   2733  represent generic types, so this class does. Forces clients to create a
   2734  subclass of this class which enables retrieval the type information even at
   2735  runtime.
   2736 
   2737  <p>For example, to create a type literal for {@code List<String>}, you can
   2738  create an empty anonymous inner class:
   2739 
   2740  <p>
   2741  {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};}
   2742 
   2743  <p>Along with modeling generic types, this class can resolve type parameters.
   2744  For example, to figure out what type {@code keySet()} returns on a {@code
   2745  Map<Integer, String>}, use this code:<pre>   {@code
   2746 
   2747    TypeLiteral<Map<Integer, String>> mapType
   2748        = new TypeLiteral<Map<Integer, String>>() {};
   2749    TypeLiteral<?> keySetType
   2750        = mapType.getReturnType(Map.class.getMethod("keySet"));
   2751    System.out.println(keySetType); // prints "Set<Integer>"}</pre>
   2752 
   2753  @author crazybob (a] google.com (Bob Lee)
   2754  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2755     </doc>
   2756   </class>
   2757   <!-- end class com.google.inject.TypeLiteral -->
   2758 </package>
   2759 <package name="com.google.inject.assistedinject">
   2760   <!-- start class com.google.inject.assistedinject.Assisted -->
   2761   <class name="Assisted"    abstract="true"
   2762     static="false" final="false" visibility="public"
   2763     deprecated="not deprecated">
   2764     <implements name="java.lang.annotation.Annotation"/>
   2765     <doc>
   2766     <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method.
   2767 
   2768  @author jmourits (a] google.com (Jerome Mourits)
   2769  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2770     </doc>
   2771   </class>
   2772   <!-- end class com.google.inject.assistedinject.Assisted -->
   2773   <!-- start class com.google.inject.assistedinject.AssistedInject -->
   2774   <class name="AssistedInject"    abstract="true"
   2775     static="false" final="false" visibility="public"
   2776     deprecated="not deprecated">
   2777     <implements name="java.lang.annotation.Annotation"/>
   2778     <doc>
   2779     <![CDATA[<p>
   2780  When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with 
   2781  {@code @AssistedInject} indicate that multiple constructors can be injected, each with different
   2782  parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject}
   2783  annotations. The assisted parameters must exactly match one corresponding factory method within
   2784  the factory interface, but the parameters do not need to be in the same order. Constructors
   2785  annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits
   2786  (such as AOP).
   2787  
   2788  <p>
   2789  <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors
   2790  annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted
   2791  parameters must exactly match one corresponding factory method within the factory interface and
   2792  all must be in the same order as listed in the factory. In this backwards compatable mode,
   2793  constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive
   2794  none of the benefits.
   2795  
   2796  <p>
   2797  Constructor parameters must be either supplied by the factory interface and marked with
   2798  <code>@Assisted</code>, or they must be injectable.
   2799  
   2800  @author jmourits (a] google.com (Jerome Mourits)
   2801  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2802     </doc>
   2803   </class>
   2804   <!-- end class com.google.inject.assistedinject.AssistedInject -->
   2805   <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding -->
   2806   <interface name="AssistedInjectBinding"    abstract="true"
   2807     static="false" final="false" visibility="public"
   2808     deprecated="not deprecated">
   2809     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   2810       abstract="true" native="false" synchronized="false"
   2811       static="false" final="false" visibility="public"
   2812       deprecated="not deprecated">
   2813       <doc>
   2814       <![CDATA[Returns the {@link Key} for the factory binding.]]>
   2815       </doc>
   2816     </method>
   2817     <method name="getAssistedMethods" return="java.util.Collection&lt;com.google.inject.assistedinject.AssistedMethod&gt;"
   2818       abstract="true" native="false" synchronized="false"
   2819       static="false" final="false" visibility="public"
   2820       deprecated="not deprecated">
   2821       <doc>
   2822       <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]>
   2823       </doc>
   2824     </method>
   2825     <doc>
   2826     <![CDATA[A binding for a factory created by FactoryModuleBuilder.
   2827  
   2828  @param <T> The fully qualified type of the factory.
   2829   
   2830  @since 3.0
   2831  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2832     </doc>
   2833   </interface>
   2834   <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding -->
   2835   <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
   2836   <interface name="AssistedInjectTargetVisitor"    abstract="true"
   2837     static="false" final="false" visibility="public"
   2838     deprecated="not deprecated">
   2839     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   2840     <method name="visit" return="V"
   2841       abstract="true" native="false" synchronized="false"
   2842       static="false" final="false" visibility="public"
   2843       deprecated="not deprecated">
   2844       <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding&lt;? extends T&gt;"/>
   2845       <doc>
   2846       <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]>
   2847       </doc>
   2848     </method>
   2849     <doc>
   2850     <![CDATA[A visitor for the AssistedInject extension.
   2851  <p>
   2852  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   2853  {@link FactoryModuleBuilder} will be visited through this interface.
   2854 
   2855  @since 3.0
   2856  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2857     </doc>
   2858   </interface>
   2859   <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
   2860   <!-- start interface com.google.inject.assistedinject.AssistedMethod -->
   2861   <interface name="AssistedMethod"    abstract="true"
   2862     static="false" final="false" visibility="public"
   2863     deprecated="not deprecated">
   2864     <method name="getFactoryMethod" return="java.lang.reflect.Method"
   2865       abstract="true" native="false" synchronized="false"
   2866       static="false" final="false" visibility="public"
   2867       deprecated="not deprecated">
   2868       <doc>
   2869       <![CDATA[Returns the factory method that is being assisted.]]>
   2870       </doc>
   2871     </method>
   2872     <method name="getImplementationType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2873       abstract="true" native="false" synchronized="false"
   2874       static="false" final="false" visibility="public"
   2875       deprecated="not deprecated">
   2876       <doc>
   2877       <![CDATA[Returns the implementation type that will be created when the method is
   2878  used.]]>
   2879       </doc>
   2880     </method>
   2881     <method name="getImplementationConstructor" return="java.lang.reflect.Constructor&lt;?&gt;"
   2882       abstract="true" native="false" synchronized="false"
   2883       static="false" final="false" visibility="public"
   2884       deprecated="not deprecated">
   2885       <doc>
   2886       <![CDATA[Returns the constructor that will be used to construct instances of the 
   2887  implementation.]]>
   2888       </doc>
   2889     </method>
   2890     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   2891       abstract="true" native="false" synchronized="false"
   2892       static="false" final="false" visibility="public"
   2893       deprecated="not deprecated">
   2894       <doc>
   2895       <![CDATA[Returns all non-assisted dependencies required to construct and inject
   2896  the implementation.]]>
   2897       </doc>
   2898     </method>
   2899     <doc>
   2900     <![CDATA[Details about how a method in an assisted inject factory will be assisted.
   2901  
   2902  @since 3.0
   2903  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2904     </doc>
   2905   </interface>
   2906   <!-- end interface com.google.inject.assistedinject.AssistedMethod -->
   2907   <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder -->
   2908   <class name="FactoryModuleBuilder" extends="java.lang.Object"
   2909     abstract="false"
   2910     static="false" final="true" visibility="public"
   2911     deprecated="not deprecated">
   2912     <constructor name="FactoryModuleBuilder"
   2913       static="false" final="false" visibility="public"
   2914       deprecated="not deprecated">
   2915     </constructor>
   2916     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2917       abstract="false" native="false" synchronized="false"
   2918       static="false" final="false" visibility="public"
   2919       deprecated="not deprecated">
   2920       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2921       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2922       <doc>
   2923       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2924       </doc>
   2925     </method>
   2926     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2927       abstract="false" native="false" synchronized="false"
   2928       static="false" final="false" visibility="public"
   2929       deprecated="not deprecated">
   2930       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2931       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2932       <doc>
   2933       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2934       </doc>
   2935     </method>
   2936     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2937       abstract="false" native="false" synchronized="false"
   2938       static="false" final="false" visibility="public"
   2939       deprecated="not deprecated">
   2940       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2941       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2942       <doc>
   2943       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2944       </doc>
   2945     </method>
   2946     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2947       abstract="false" native="false" synchronized="false"
   2948       static="false" final="false" visibility="public"
   2949       deprecated="not deprecated">
   2950       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2951       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2952       <doc>
   2953       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2954       </doc>
   2955     </method>
   2956     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2957       abstract="false" native="false" synchronized="false"
   2958       static="false" final="false" visibility="public"
   2959       deprecated="not deprecated">
   2960       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2961       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2962       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2963       <doc>
   2964       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2965       </doc>
   2966     </method>
   2967     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2968       abstract="false" native="false" synchronized="false"
   2969       static="false" final="false" visibility="public"
   2970       deprecated="not deprecated">
   2971       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2972       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2973       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2974       <doc>
   2975       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2976       </doc>
   2977     </method>
   2978     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2979       abstract="false" native="false" synchronized="false"
   2980       static="false" final="false" visibility="public"
   2981       deprecated="not deprecated">
   2982       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2983       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2984       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2985       <doc>
   2986       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2987       </doc>
   2988     </method>
   2989     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2990       abstract="false" native="false" synchronized="false"
   2991       static="false" final="false" visibility="public"
   2992       deprecated="not deprecated">
   2993       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2994       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2995       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2996       <doc>
   2997       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2998       </doc>
   2999     </method>
   3000     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3001       abstract="false" native="false" synchronized="false"
   3002       static="false" final="false" visibility="public"
   3003       deprecated="not deprecated">
   3004       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   3005       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3006       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   3007       <doc>
   3008       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3009       </doc>
   3010     </method>
   3011     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3012       abstract="false" native="false" synchronized="false"
   3013       static="false" final="false" visibility="public"
   3014       deprecated="not deprecated">
   3015       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   3016       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3017       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3018       <doc>
   3019       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3020       </doc>
   3021     </method>
   3022     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3023       abstract="false" native="false" synchronized="false"
   3024       static="false" final="false" visibility="public"
   3025       deprecated="not deprecated">
   3026       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   3027       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3028       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   3029       <doc>
   3030       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3031       </doc>
   3032     </method>
   3033     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3034       abstract="false" native="false" synchronized="false"
   3035       static="false" final="false" visibility="public"
   3036       deprecated="not deprecated">
   3037       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   3038       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3039       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3040       <doc>
   3041       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3042       </doc>
   3043     </method>
   3044     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3045       abstract="false" native="false" synchronized="false"
   3046       static="false" final="false" visibility="public"
   3047       deprecated="not deprecated">
   3048       <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
   3049       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   3050       <doc>
   3051       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3052       </doc>
   3053     </method>
   3054     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   3055       abstract="false" native="false" synchronized="false"
   3056       static="false" final="false" visibility="public"
   3057       deprecated="not deprecated">
   3058       <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
   3059       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3060       <doc>
   3061       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3062       </doc>
   3063     </method>
   3064     <method name="build" return="com.google.inject.Module"
   3065       abstract="false" native="false" synchronized="false"
   3066       static="false" final="false" visibility="public"
   3067       deprecated="not deprecated">
   3068       <param name="factoryInterface" type="java.lang.Class&lt;F&gt;"/>
   3069       <doc>
   3070       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3071       </doc>
   3072     </method>
   3073     <method name="build" return="com.google.inject.Module"
   3074       abstract="false" native="false" synchronized="false"
   3075       static="false" final="false" visibility="public"
   3076       deprecated="not deprecated">
   3077       <param name="factoryInterface" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
   3078       <doc>
   3079       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   3080       </doc>
   3081     </method>
   3082     <method name="build" return="com.google.inject.Module"
   3083       abstract="false" native="false" synchronized="false"
   3084       static="false" final="false" visibility="public"
   3085       deprecated="not deprecated">
   3086       <param name="factoryInterface" type="com.google.inject.Key&lt;F&gt;"/>
   3087     </method>
   3088     <doc>
   3089     <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to
   3090  construct objects.
   3091 
   3092  <h3>Defining a factory</h3>
   3093  Create an interface whose methods return the constructed type, or any of its supertypes. The
   3094  method's parameters are the arguments required to build the constructed type.
   3095 
   3096  <pre>public interface PaymentFactory {
   3097    Payment create(Date startDate, Money amount);
   3098  }</pre>
   3099 
   3100  You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
   3101  or <i>newPayment</i>.
   3102 
   3103  <h3>Creating a type that accepts factory parameters</h3>
   3104  {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject
   3105  Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor
   3106  should have parameters that match each of the factory method's parameters. Each factory-supplied
   3107  parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the
   3108  parameter is not bound by your application's modules.
   3109 
   3110  <pre>public class RealPayment implements Payment {
   3111    {@literal @}Inject
   3112    public RealPayment(
   3113       CreditService creditService,
   3114       AuthService authService,
   3115       <strong>{@literal @}Assisted Date startDate</strong>,
   3116       <strong>{@literal @}Assisted Money amount</strong>) {
   3117      ...
   3118    }
   3119  }</pre>
   3120  
   3121  <h3>Multiple factory methods for the same type</h3>
   3122  If the factory contains many methods that return the same type, you can create multiple
   3123  constructors in your concrete class, each constructor marked with with
   3124  {@literal @}{@link AssistedInject}, in order to match the different parameters types of the
   3125  factory methods. 
   3126  
   3127  <pre>public interface PaymentFactory {
   3128     Payment create(Date startDate, Money amount);
   3129     Payment createWithoutDate(Money amount);
   3130  }
   3131  
   3132  public class RealPayment implements Payment {
   3133   {@literal @}AssistedInject
   3134    public RealPayment(
   3135       CreditService creditService,
   3136       AuthService authService,
   3137      <strong>{@literal @}Assisted Date startDate</strong>,
   3138      <strong>{@literal @}Assisted Money amount</strong>) {
   3139      ...
   3140    }
   3141    
   3142   {@literal @}AssistedInject
   3143    public RealPayment(
   3144       CreditService creditService,
   3145       AuthService authService,
   3146      <strong>{@literal @}Assisted Money amount</strong>) {
   3147      ...
   3148    }   
   3149  }</pre> 
   3150 
   3151  <h3>Configuring simple factories</h3>
   3152  In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the
   3153  factory:
   3154 
   3155  <pre>install(new FactoryModuleBuilder()
   3156      .implement(Payment.class, RealPayment.class)
   3157      .build(PaymentFactory.class));</pre>
   3158 
   3159  As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
   3160  factory cannot be used until the injector has been initialized.
   3161  
   3162  <h3>Configuring complex factories</h3>
   3163  Factories can create an arbitrary number of objects, one per each method.  Each factory
   3164  method can be configured using <code>.implement</code>.
   3165 
   3166  <pre>public interface OrderFactory {
   3167     Payment create(Date startDate, Money amount);
   3168     Shipment create(Customer customer, Item item);
   3169     Receipt create(Payment payment, Shipment shipment);
   3170  }
   3171  
   3172  [...]
   3173  
   3174  install(new FactoryModuleBuilder()
   3175      .implement(Payment.class, RealPayment.class)
   3176      // excluding .implement for Shipment means the implementation class
   3177      // will be 'Shipment' itself, which is legal if it's not an interface.
   3178      .implement(Receipt.class, RealReceipt.class)
   3179      .build(OrderFactory.class));</pre>
   3180  </pre>
   3181 
   3182  <h3>Using the factory</h3>
   3183  Inject your factory into your application classes. When you use the factory, your arguments
   3184  will be combined with values from the injector to construct an instance.
   3185 
   3186  <pre>public class PaymentAction {
   3187    {@literal @}Inject private PaymentFactory paymentFactory;
   3188 
   3189    public void doPayment(Money amount) {
   3190      Payment payment = paymentFactory.create(new Date(), amount);
   3191      payment.apply();
   3192    }
   3193  }</pre>
   3194 
   3195  <h3>Making parameter types distinct</h3>
   3196  The types of the factory method's parameters must be distinct. To use multiple parameters of
   3197  the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
   3198  parameters. The names must be applied to the factory method's parameters:
   3199 
   3200  <pre>public interface PaymentFactory {
   3201    Payment create(
   3202        <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3203        <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3204        Money amount);
   3205  } </pre>
   3206 
   3207  ...and to the concrete type's constructor parameters:
   3208 
   3209  <pre>public class RealPayment implements Payment {
   3210    {@literal @}Inject
   3211    public RealPayment(
   3212       CreditService creditService,
   3213       AuthService authService,
   3214       <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3215       <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3216       <strong>{@literal @}Assisted</strong> Money amount) {
   3217      ...
   3218    }
   3219  }</pre>
   3220 
   3221  <h3>Values are created by Guice</h3>
   3222  Returned factories use child injectors to create values. The values are eligible for method
   3223  interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
   3224  returned.
   3225 
   3226  <h3>More configuration options</h3>
   3227  In addition to simply specifying an implementation class for any returned type, factories' return
   3228  values can be automatic or can be configured to use annotations:
   3229  <p/>
   3230  If you just want to return the types specified in the factory, do not configure any
   3231  implementations:
   3232 
   3233  <pre>public interface FruitFactory {
   3234    Apple getApple(Color color);
   3235  }
   3236  ...
   3237  protected void configure() {
   3238    install(new FactoryModuleBuilder().build(FruitFactory.class));
   3239  }</pre>
   3240 
   3241  Note that any type returned by the factory in this manner needs to be an implementation class.
   3242  <p/>
   3243  To return two different implementations for the same interface from your factory, use binding
   3244  annotations on your return types:
   3245 
   3246  <pre>interface CarFactory {
   3247    {@literal @}Named("fast") Car getFastCar(Color color);
   3248    {@literal @}Named("clean") Car getCleanCar(Color color);
   3249  }
   3250  ...
   3251  protected void configure() {
   3252    install(new FactoryModuleBuilder()
   3253        .implement(Car.class, Names.named("fast"), Porsche.class)
   3254        .implement(Car.class, Names.named("clean"), Prius.class)
   3255        .build(CarFactory.class));
   3256  }</pre>
   3257  
   3258  <h3>Implementation limitations</h3>
   3259  As a limitation of the implementation, it is prohibited to declare a factory method that
   3260  accepts a {@code Provider} as one of its arguments.
   3261 
   3262  @since 3.0
   3263  @author schmitt (a] google.com (Peter Schmitt)]]>
   3264     </doc>
   3265   </class>
   3266   <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder -->
   3267   <!-- start class com.google.inject.assistedinject.FactoryProvider -->
   3268   <class name="FactoryProvider" extends="java.lang.Object"
   3269     abstract="false"
   3270     static="false" final="false" visibility="public"
   3271     deprecated="use {@link FactoryModuleBuilder} instead.">
   3272     <implements name="com.google.inject.Provider&lt;F&gt;"/>
   3273     <implements name="com.google.inject.spi.HasDependencies"/>
   3274     <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
   3275       abstract="false" native="false" synchronized="false"
   3276       static="true" final="false" visibility="public"
   3277       deprecated="not deprecated">
   3278       <param name="factoryType" type="java.lang.Class&lt;F&gt;"/>
   3279       <param name="implementationType" type="java.lang.Class&lt;?&gt;"/>
   3280     </method>
   3281     <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
   3282       abstract="false" native="false" synchronized="false"
   3283       static="true" final="false" visibility="public"
   3284       deprecated="not deprecated">
   3285       <param name="factoryType" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
   3286       <param name="implementationType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   3287     </method>
   3288     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   3289       abstract="false" native="false" synchronized="false"
   3290       static="false" final="false" visibility="public"
   3291       deprecated="not deprecated">
   3292     </method>
   3293     <method name="get" return="F"
   3294       abstract="false" native="false" synchronized="false"
   3295       static="false" final="false" visibility="public"
   3296       deprecated="not deprecated">
   3297     </method>
   3298     <method name="hashCode" return="int"
   3299       abstract="false" native="false" synchronized="false"
   3300       static="false" final="false" visibility="public"
   3301       deprecated="not deprecated">
   3302     </method>
   3303     <method name="equals" return="boolean"
   3304       abstract="false" native="false" synchronized="false"
   3305       static="false" final="false" visibility="public"
   3306       deprecated="not deprecated">
   3307       <param name="obj" type="java.lang.Object"/>
   3308     </method>
   3309     <doc>
   3310     <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and
   3311  additional capability.
   3312 
   3313  <p>Provides a factory that combines the caller's arguments with injector-supplied values to
   3314  construct objects.
   3315 
   3316  <h3>Defining a factory</h3>
   3317  Create an interface whose methods return the constructed type, or any of its supertypes. The
   3318  method's parameters are the arguments required to build the constructed type.
   3319  <pre>public interface PaymentFactory {
   3320    Payment create(Date startDate, Money amount);
   3321  }</pre>
   3322  You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
   3323  or <i>newPayment</i>.
   3324 
   3325  <h3>Creating a type that accepts factory parameters</h3>
   3326  {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated
   3327  constructor. In addition to injector-supplied parameters, the constructor should have
   3328  parameters that match each of the factory method's parameters. Each factory-supplied parameter
   3329  requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter
   3330  is not bound by your application's modules.
   3331  <pre>public class RealPayment implements Payment {
   3332    {@literal @}Inject
   3333    public RealPayment(
   3334       CreditService creditService,
   3335       AuthService authService,
   3336       <strong>{@literal @}Assisted Date startDate</strong>,
   3337       <strong>{@literal @}Assisted Money amount</strong>) {
   3338      ...
   3339    }
   3340  }</pre>
   3341  Any parameter that permits a null value should also be annotated {@code @Nullable}.
   3342 
   3343  <h3>Configuring factories</h3>
   3344  In your {@link com.google.inject.Module module}, bind the factory interface to the returned
   3345  factory:
   3346  <pre>bind(PaymentFactory.class).toProvider(
   3347      FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre>
   3348  As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
   3349  factory cannot be used until the injector has been initialized.
   3350 
   3351  <h3>Using the factory</h3>
   3352  Inject your factory into your application classes. When you use the factory, your arguments
   3353  will be combined with values from the injector to construct an instance.
   3354  <pre>public class PaymentAction {
   3355    {@literal @}Inject private PaymentFactory paymentFactory;
   3356 
   3357    public void doPayment(Money amount) {
   3358      Payment payment = paymentFactory.create(new Date(), amount);
   3359      payment.apply();
   3360    }
   3361  }</pre>
   3362 
   3363  <h3>Making parameter types distinct</h3>
   3364  The types of the factory method's parameters must be distinct. To use multiple parameters of
   3365  the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
   3366  parameters. The names must be applied to the factory method's parameters:
   3367 
   3368  <pre>public interface PaymentFactory {
   3369    Payment create(
   3370        <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3371        <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3372        Money amount);
   3373  } </pre>
   3374  ...and to the concrete type's constructor parameters:
   3375  <pre>public class RealPayment implements Payment {
   3376    {@literal @}Inject
   3377    public RealPayment(
   3378       CreditService creditService,
   3379       AuthService authService,
   3380       <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3381       <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3382       <strong>{@literal @}Assisted</strong> Money amount) {
   3383      ...
   3384    }
   3385  }</pre>
   3386 
   3387  <h3>Values are created by Guice</h3>
   3388  Returned factories use child injectors to create values. The values are eligible for method
   3389  interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
   3390  returned.
   3391 
   3392  <h3>Backwards compatibility using {@literal @}AssistedInject</h3>
   3393  Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with
   3394  {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode.
   3395 
   3396  <p>Instead of matching factory method arguments to constructor parameters using their names, the
   3397  <strong>parameters are matched by their order</strong>. The first factory method argument is
   3398  used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no
   3399  effect.
   3400 
   3401  <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for
   3402  method interception. They do receive post-construction member injection.
   3403 
   3404  @param <F> The factory interface
   3405 
   3406  @author jmourits (a] google.com (Jerome Mourits)
   3407  @author jessewilson (a] google.com (Jesse Wilson)
   3408  @author dtm (a] google.com (Daniel Martin)
   3409  
   3410  @deprecated use {@link FactoryModuleBuilder} instead.]]>
   3411     </doc>
   3412   </class>
   3413   <!-- end class com.google.inject.assistedinject.FactoryProvider -->
   3414 </package>
   3415 <package name="com.google.inject.binder">
   3416   <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder -->
   3417   <interface name="AnnotatedBindingBuilder"    abstract="true"
   3418     static="false" final="false" visibility="public"
   3419     deprecated="not deprecated">
   3420     <implements name="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"/>
   3421     <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   3422       abstract="true" native="false" synchronized="false"
   3423       static="false" final="false" visibility="public"
   3424       deprecated="not deprecated">
   3425       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3426       <doc>
   3427       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3428       </doc>
   3429     </method>
   3430     <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   3431       abstract="true" native="false" synchronized="false"
   3432       static="false" final="false" visibility="public"
   3433       deprecated="not deprecated">
   3434       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3435       <doc>
   3436       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3437       </doc>
   3438     </method>
   3439     <doc>
   3440     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3441 
   3442  @author crazybob (a] google.com (Bob Lee)]]>
   3443     </doc>
   3444   </interface>
   3445   <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder -->
   3446   <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
   3447   <interface name="AnnotatedConstantBindingBuilder"    abstract="true"
   3448     static="false" final="false" visibility="public"
   3449     deprecated="not deprecated">
   3450     <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
   3451       abstract="true" native="false" synchronized="false"
   3452       static="false" final="false" visibility="public"
   3453       deprecated="not deprecated">
   3454       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3455       <doc>
   3456       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3457       </doc>
   3458     </method>
   3459     <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
   3460       abstract="true" native="false" synchronized="false"
   3461       static="false" final="false" visibility="public"
   3462       deprecated="not deprecated">
   3463       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3464       <doc>
   3465       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3466       </doc>
   3467     </method>
   3468     <doc>
   3469     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3470 
   3471  @author crazybob (a] google.com (Bob Lee)]]>
   3472     </doc>
   3473   </interface>
   3474   <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
   3475   <!-- start interface com.google.inject.binder.AnnotatedElementBuilder -->
   3476   <interface name="AnnotatedElementBuilder"    abstract="true"
   3477     static="false" final="false" visibility="public"
   3478     deprecated="not deprecated">
   3479     <method name="annotatedWith"
   3480       abstract="true" native="false" synchronized="false"
   3481       static="false" final="false" visibility="public"
   3482       deprecated="not deprecated">
   3483       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3484       <doc>
   3485       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3486       </doc>
   3487     </method>
   3488     <method name="annotatedWith"
   3489       abstract="true" native="false" synchronized="false"
   3490       static="false" final="false" visibility="public"
   3491       deprecated="not deprecated">
   3492       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3493       <doc>
   3494       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3495       </doc>
   3496     </method>
   3497     <doc>
   3498     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3499 
   3500  @author jessewilson (a] google.com (Jesse Wilson)
   3501  @since 2.0]]>
   3502     </doc>
   3503   </interface>
   3504   <!-- end interface com.google.inject.binder.AnnotatedElementBuilder -->
   3505   <!-- start interface com.google.inject.binder.ConstantBindingBuilder -->
   3506   <interface name="ConstantBindingBuilder"    abstract="true"
   3507     static="false" final="false" visibility="public"
   3508     deprecated="not deprecated">
   3509     <method name="to"
   3510       abstract="true" native="false" synchronized="false"
   3511       static="false" final="false" visibility="public"
   3512       deprecated="not deprecated">
   3513       <param name="value" type="java.lang.String"/>
   3514       <doc>
   3515       <![CDATA[Binds constant to the given value.]]>
   3516       </doc>
   3517     </method>
   3518     <method name="to"
   3519       abstract="true" native="false" synchronized="false"
   3520       static="false" final="false" visibility="public"
   3521       deprecated="not deprecated">
   3522       <param name="value" type="int"/>
   3523       <doc>
   3524       <![CDATA[Binds constant to the given value.]]>
   3525       </doc>
   3526     </method>
   3527     <method name="to"
   3528       abstract="true" native="false" synchronized="false"
   3529       static="false" final="false" visibility="public"
   3530       deprecated="not deprecated">
   3531       <param name="value" type="long"/>
   3532       <doc>
   3533       <![CDATA[Binds constant to the given value.]]>
   3534       </doc>
   3535     </method>
   3536     <method name="to"
   3537       abstract="true" native="false" synchronized="false"
   3538       static="false" final="false" visibility="public"
   3539       deprecated="not deprecated">
   3540       <param name="value" type="boolean"/>
   3541       <doc>
   3542       <![CDATA[Binds constant to the given value.]]>
   3543       </doc>
   3544     </method>
   3545     <method name="to"
   3546       abstract="true" native="false" synchronized="false"
   3547       static="false" final="false" visibility="public"
   3548       deprecated="not deprecated">
   3549       <param name="value" type="double"/>
   3550       <doc>
   3551       <![CDATA[Binds constant to the given value.]]>
   3552       </doc>
   3553     </method>
   3554     <method name="to"
   3555       abstract="true" native="false" synchronized="false"
   3556       static="false" final="false" visibility="public"
   3557       deprecated="not deprecated">
   3558       <param name="value" type="float"/>
   3559       <doc>
   3560       <![CDATA[Binds constant to the given value.]]>
   3561       </doc>
   3562     </method>
   3563     <method name="to"
   3564       abstract="true" native="false" synchronized="false"
   3565       static="false" final="false" visibility="public"
   3566       deprecated="not deprecated">
   3567       <param name="value" type="short"/>
   3568       <doc>
   3569       <![CDATA[Binds constant to the given value.]]>
   3570       </doc>
   3571     </method>
   3572     <method name="to"
   3573       abstract="true" native="false" synchronized="false"
   3574       static="false" final="false" visibility="public"
   3575       deprecated="not deprecated">
   3576       <param name="value" type="char"/>
   3577       <doc>
   3578       <![CDATA[Binds constant to the given value.]]>
   3579       </doc>
   3580     </method>
   3581     <method name="to"
   3582       abstract="true" native="false" synchronized="false"
   3583       static="false" final="false" visibility="public"
   3584       deprecated="not deprecated">
   3585       <param name="value" type="byte"/>
   3586       <doc>
   3587       <![CDATA[Binds constant to the given value.
   3588  
   3589  @since 3.0]]>
   3590       </doc>
   3591     </method>
   3592     <method name="to"
   3593       abstract="true" native="false" synchronized="false"
   3594       static="false" final="false" visibility="public"
   3595       deprecated="not deprecated">
   3596       <param name="value" type="java.lang.Class&lt;?&gt;"/>
   3597       <doc>
   3598       <![CDATA[Binds constant to the given value.]]>
   3599       </doc>
   3600     </method>
   3601     <method name="to"
   3602       abstract="true" native="false" synchronized="false"
   3603       static="false" final="false" visibility="public"
   3604       deprecated="not deprecated">
   3605       <param name="value" type="E extends java.lang.Enum&lt;E&gt;"/>
   3606       <doc>
   3607       <![CDATA[Binds constant to the given value.]]>
   3608       </doc>
   3609     </method>
   3610     <doc>
   3611     <![CDATA[Binds to a constant value.]]>
   3612     </doc>
   3613   </interface>
   3614   <!-- end interface com.google.inject.binder.ConstantBindingBuilder -->
   3615   <!-- start interface com.google.inject.binder.LinkedBindingBuilder -->
   3616   <interface name="LinkedBindingBuilder"    abstract="true"
   3617     static="false" final="false" visibility="public"
   3618     deprecated="not deprecated">
   3619     <implements name="com.google.inject.binder.ScopedBindingBuilder"/>
   3620     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3621       abstract="true" native="false" synchronized="false"
   3622       static="false" final="false" visibility="public"
   3623       deprecated="not deprecated">
   3624       <param name="implementation" type="java.lang.Class&lt;? extends T&gt;"/>
   3625       <doc>
   3626       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3627       </doc>
   3628     </method>
   3629     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3630       abstract="true" native="false" synchronized="false"
   3631       static="false" final="false" visibility="public"
   3632       deprecated="not deprecated">
   3633       <param name="implementation" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3634       <doc>
   3635       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3636       </doc>
   3637     </method>
   3638     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3639       abstract="true" native="false" synchronized="false"
   3640       static="false" final="false" visibility="public"
   3641       deprecated="not deprecated">
   3642       <param name="targetKey" type="com.google.inject.Key&lt;? extends T&gt;"/>
   3643       <doc>
   3644       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3645       </doc>
   3646     </method>
   3647     <method name="toInstance"
   3648       abstract="true" native="false" synchronized="false"
   3649       static="false" final="false" visibility="public"
   3650       deprecated="not deprecated">
   3651       <param name="instance" type="T"/>
   3652       <doc>
   3653       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3654 
   3655  @see com.google.inject.Injector#injectMembers]]>
   3656       </doc>
   3657     </method>
   3658     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3659       abstract="true" native="false" synchronized="false"
   3660       static="false" final="false" visibility="public"
   3661       deprecated="not deprecated">
   3662       <param name="provider" type="com.google.inject.Provider&lt;? extends T&gt;"/>
   3663       <doc>
   3664       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3665 
   3666  @see com.google.inject.Injector#injectMembers]]>
   3667       </doc>
   3668     </method>
   3669     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3670       abstract="true" native="false" synchronized="false"
   3671       static="false" final="false" visibility="public"
   3672       deprecated="not deprecated">
   3673       <param name="provider" type="javax.inject.Provider&lt;? extends T&gt;"/>
   3674       <doc>
   3675       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3676 
   3677  @see com.google.inject.Injector#injectMembers
   3678  @since 4.0]]>
   3679       </doc>
   3680     </method>
   3681     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3682       abstract="true" native="false" synchronized="false"
   3683       static="false" final="false" visibility="public"
   3684       deprecated="not deprecated">
   3685       <param name="providerType" type="java.lang.Class&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3686       <doc>
   3687       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3688       </doc>
   3689     </method>
   3690     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3691       abstract="true" native="false" synchronized="false"
   3692       static="false" final="false" visibility="public"
   3693       deprecated="not deprecated">
   3694       <param name="providerType" type="com.google.inject.TypeLiteral&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3695       <doc>
   3696       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3697       </doc>
   3698     </method>
   3699     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3700       abstract="true" native="false" synchronized="false"
   3701       static="false" final="false" visibility="public"
   3702       deprecated="not deprecated">
   3703       <param name="providerKey" type="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3704       <doc>
   3705       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3706       </doc>
   3707     </method>
   3708     <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
   3709       abstract="true" native="false" synchronized="false"
   3710       static="false" final="false" visibility="public"
   3711       deprecated="not deprecated">
   3712       <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
   3713       <doc>
   3714       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3715  
   3716  @since 3.0]]>
   3717       </doc>
   3718     </method>
   3719     <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
   3720       abstract="true" native="false" synchronized="false"
   3721       static="false" final="false" visibility="public"
   3722       deprecated="not deprecated">
   3723       <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
   3724       <param name="type" type="com.google.inject.TypeLiteral&lt;? extends S&gt;"/>
   3725       <doc>
   3726       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3727  
   3728  @since 3.0]]>
   3729       </doc>
   3730     </method>
   3731     <doc>
   3732     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3733 
   3734  @author crazybob (a] google.com (Bob Lee)]]>
   3735     </doc>
   3736   </interface>
   3737   <!-- end interface com.google.inject.binder.LinkedBindingBuilder -->
   3738   <!-- start interface com.google.inject.binder.ScopedBindingBuilder -->
   3739   <interface name="ScopedBindingBuilder"    abstract="true"
   3740     static="false" final="false" visibility="public"
   3741     deprecated="not deprecated">
   3742     <method name="in"
   3743       abstract="true" native="false" synchronized="false"
   3744       static="false" final="false" visibility="public"
   3745       deprecated="not deprecated">
   3746       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3747       <doc>
   3748       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3749       </doc>
   3750     </method>
   3751     <method name="in"
   3752       abstract="true" native="false" synchronized="false"
   3753       static="false" final="false" visibility="public"
   3754       deprecated="not deprecated">
   3755       <param name="scope" type="com.google.inject.Scope"/>
   3756       <doc>
   3757       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3758       </doc>
   3759     </method>
   3760     <method name="asEagerSingleton"
   3761       abstract="true" native="false" synchronized="false"
   3762       static="false" final="false" visibility="public"
   3763       deprecated="not deprecated">
   3764       <doc>
   3765       <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this
   3766  singleton-scoped binding upon creation. Useful for application
   3767  initialization logic.  See the EDSL examples at
   3768  {@link com.google.inject.Binder}.]]>
   3769       </doc>
   3770     </method>
   3771     <doc>
   3772     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3773 
   3774  @author crazybob (a] google.com (Bob Lee)]]>
   3775     </doc>
   3776   </interface>
   3777   <!-- end interface com.google.inject.binder.ScopedBindingBuilder -->
   3778 </package>
   3779 <package name="com.google.inject.daggeradapter">
   3780   <!-- start class com.google.inject.daggeradapter.DaggerAdapter -->
   3781   <class name="DaggerAdapter" extends="java.lang.Object"
   3782     abstract="false"
   3783     static="false" final="true" visibility="public"
   3784     deprecated="not deprecated">
   3785     <method name="from" return="com.google.inject.Module"
   3786       abstract="false" native="false" synchronized="false"
   3787       static="true" final="false" visibility="public"
   3788       deprecated="not deprecated">
   3789       <param name="daggerModuleObjects" type="java.lang.Object[]"/>
   3790       <doc>
   3791       <![CDATA[Returns a guice module from a dagger module.
   3792 
   3793  <p>Note: At present, it does not honor {@code @Module(includes=...)} directives.]]>
   3794       </doc>
   3795     </method>
   3796     <doc>
   3797     <![CDATA[A utility to adapt classes annotated with {@link @dagger.Module} such that their
   3798  {@link @dagger.Provides} methods can be properly invoked by Guice to perform their
   3799  provision operations.
   3800 
   3801  <p>Simple example: <pre>{@code
   3802    Guice.createInjector(...other modules..., DaggerAdapter.from(new SomeDaggerAdapter()));
   3803  }</pre>
   3804 
   3805  <p>Some notes on usage and compatibility.
   3806    <ul>
   3807      <li>Dagger provider methods have a "SET_VALUES" provision mode not supported by Guice.
   3808      <li>MapBindings are not yet implemented (pending).
   3809      <li>Be careful about stateful modules. In contrast to Dagger (where components are
   3810          expected to be recreated on-demand with new Module instances), Guice typically
   3811          has a single injector with a long lifetime, so your module instance will be used
   3812          throughout the lifetime of the entire app.
   3813      <li>Dagger 1.x uses {@link @Singleton} for all scopes, including shorter-lived scopes
   3814          like per-request or per-activity.  Using modules written with Dagger 1.x usage
   3815          in mind may result in mis-scoped objects.
   3816      <li>Dagger 2.x supports custom scope annotations, but for use in Guice, a custom scope
   3817          implementation must be registered in order to support the custom lifetime of that
   3818          annotation.
   3819    </ul>
   3820 
   3821  @author cgruber (a] google.com (Christian Gruber)]]>
   3822     </doc>
   3823   </class>
   3824   <!-- end class com.google.inject.daggeradapter.DaggerAdapter -->
   3825 </package>
   3826 <package name="com.google.inject.grapher">
   3827   <!-- start class com.google.inject.grapher.AbstractInjectorGrapher -->
   3828   <class name="AbstractInjectorGrapher" extends="java.lang.Object"
   3829     abstract="true"
   3830     static="false" final="false" visibility="public"
   3831     deprecated="not deprecated">
   3832     <implements name="com.google.inject.grapher.InjectorGrapher"/>
   3833     <constructor name="AbstractInjectorGrapher"
   3834       static="false" final="false" visibility="public"
   3835       deprecated="not deprecated">
   3836     </constructor>
   3837     <constructor name="AbstractInjectorGrapher" type="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3838       static="false" final="false" visibility="public"
   3839       deprecated="not deprecated">
   3840     </constructor>
   3841     <method name="graph"
   3842       abstract="false" native="false" synchronized="false"
   3843       static="false" final="true" visibility="public"
   3844       deprecated="not deprecated">
   3845       <param name="injector" type="com.google.inject.Injector"/>
   3846       <exception name="IOException" type="java.io.IOException"/>
   3847     </method>
   3848     <method name="graph"
   3849       abstract="false" native="false" synchronized="false"
   3850       static="false" final="true" visibility="public"
   3851       deprecated="not deprecated">
   3852       <param name="injector" type="com.google.inject.Injector"/>
   3853       <param name="root" type="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"/>
   3854       <exception name="IOException" type="java.io.IOException"/>
   3855     </method>
   3856     <method name="reset"
   3857       abstract="true" native="false" synchronized="false"
   3858       static="false" final="false" visibility="protected"
   3859       deprecated="not deprecated">
   3860       <exception name="IOException" type="java.io.IOException"/>
   3861       <doc>
   3862       <![CDATA[Resets the state of the grapher before rendering a new graph.]]>
   3863       </doc>
   3864     </method>
   3865     <method name="newInterfaceNode"
   3866       abstract="true" native="false" synchronized="false"
   3867       static="false" final="false" visibility="protected"
   3868       deprecated="not deprecated">
   3869       <param name="node" type="com.google.inject.grapher.InterfaceNode"/>
   3870       <exception name="IOException" type="java.io.IOException"/>
   3871       <doc>
   3872       <![CDATA[Adds a new interface node to the graph.]]>
   3873       </doc>
   3874     </method>
   3875     <method name="newImplementationNode"
   3876       abstract="true" native="false" synchronized="false"
   3877       static="false" final="false" visibility="protected"
   3878       deprecated="not deprecated">
   3879       <param name="node" type="com.google.inject.grapher.ImplementationNode"/>
   3880       <exception name="IOException" type="java.io.IOException"/>
   3881       <doc>
   3882       <![CDATA[Adds a new implementation node to the graph.]]>
   3883       </doc>
   3884     </method>
   3885     <method name="newInstanceNode"
   3886       abstract="true" native="false" synchronized="false"
   3887       static="false" final="false" visibility="protected"
   3888       deprecated="not deprecated">
   3889       <param name="node" type="com.google.inject.grapher.InstanceNode"/>
   3890       <exception name="IOException" type="java.io.IOException"/>
   3891       <doc>
   3892       <![CDATA[Adds a new instance node to the graph.]]>
   3893       </doc>
   3894     </method>
   3895     <method name="newDependencyEdge"
   3896       abstract="true" native="false" synchronized="false"
   3897       static="false" final="false" visibility="protected"
   3898       deprecated="not deprecated">
   3899       <param name="edge" type="com.google.inject.grapher.DependencyEdge"/>
   3900       <exception name="IOException" type="java.io.IOException"/>
   3901       <doc>
   3902       <![CDATA[Adds a new dependency edge to the graph.]]>
   3903       </doc>
   3904     </method>
   3905     <method name="newBindingEdge"
   3906       abstract="true" native="false" synchronized="false"
   3907       static="false" final="false" visibility="protected"
   3908       deprecated="not deprecated">
   3909       <param name="edge" type="com.google.inject.grapher.BindingEdge"/>
   3910       <exception name="IOException" type="java.io.IOException"/>
   3911       <doc>
   3912       <![CDATA[Adds a new binding edge to the graph.]]>
   3913       </doc>
   3914     </method>
   3915     <method name="postProcess"
   3916       abstract="true" native="false" synchronized="false"
   3917       static="false" final="false" visibility="protected"
   3918       deprecated="not deprecated">
   3919       <exception name="IOException" type="java.io.IOException"/>
   3920       <doc>
   3921       <![CDATA[Performs any post processing required after all nodes and edges have been added.]]>
   3922       </doc>
   3923     </method>
   3924     <doc>
   3925     <![CDATA[Abstract injector grapher that builds the dependency graph but doesn't render it.
   3926 
   3927  @author bojand (a] google.com (Bojan Djordjevic)
   3928  @since 4.0]]>
   3929     </doc>
   3930   </class>
   3931   <!-- end class com.google.inject.grapher.AbstractInjectorGrapher -->
   3932   <!-- start class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters -->
   3933   <class name="AbstractInjectorGrapher.GrapherParameters" extends="java.lang.Object"
   3934     abstract="false"
   3935     static="true" final="true" visibility="public"
   3936     deprecated="not deprecated">
   3937     <constructor name="GrapherParameters"
   3938       static="false" final="false" visibility="public"
   3939       deprecated="not deprecated">
   3940     </constructor>
   3941     <method name="getRootKeySetCreator" return="com.google.inject.grapher.RootKeySetCreator"
   3942       abstract="false" native="false" synchronized="false"
   3943       static="false" final="false" visibility="public"
   3944       deprecated="not deprecated">
   3945     </method>
   3946     <method name="setRootKeySetCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3947       abstract="false" native="false" synchronized="false"
   3948       static="false" final="false" visibility="public"
   3949       deprecated="not deprecated">
   3950       <param name="rootKeySetCreator" type="com.google.inject.grapher.RootKeySetCreator"/>
   3951     </method>
   3952     <method name="getAliasCreator" return="com.google.inject.grapher.AliasCreator"
   3953       abstract="false" native="false" synchronized="false"
   3954       static="false" final="false" visibility="public"
   3955       deprecated="not deprecated">
   3956     </method>
   3957     <method name="setAliasCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3958       abstract="false" native="false" synchronized="false"
   3959       static="false" final="false" visibility="public"
   3960       deprecated="not deprecated">
   3961       <param name="aliasCreator" type="com.google.inject.grapher.AliasCreator"/>
   3962     </method>
   3963     <method name="getNodeCreator" return="com.google.inject.grapher.NodeCreator"
   3964       abstract="false" native="false" synchronized="false"
   3965       static="false" final="false" visibility="public"
   3966       deprecated="not deprecated">
   3967     </method>
   3968     <method name="setNodeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3969       abstract="false" native="false" synchronized="false"
   3970       static="false" final="false" visibility="public"
   3971       deprecated="not deprecated">
   3972       <param name="nodeCreator" type="com.google.inject.grapher.NodeCreator"/>
   3973     </method>
   3974     <method name="getEdgeCreator" return="com.google.inject.grapher.EdgeCreator"
   3975       abstract="false" native="false" synchronized="false"
   3976       static="false" final="false" visibility="public"
   3977       deprecated="not deprecated">
   3978     </method>
   3979     <method name="setEdgeCreator" return="com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters"
   3980       abstract="false" native="false" synchronized="false"
   3981       static="false" final="false" visibility="public"
   3982       deprecated="not deprecated">
   3983       <param name="edgeCreator" type="com.google.inject.grapher.EdgeCreator"/>
   3984     </method>
   3985     <doc>
   3986     <![CDATA[Parameters used to override default settings of the grapher.
   3987  @since 4.0]]>
   3988     </doc>
   3989   </class>
   3990   <!-- end class com.google.inject.grapher.AbstractInjectorGrapher.GrapherParameters -->
   3991   <!-- start class com.google.inject.grapher.Alias -->
   3992   <class name="Alias" extends="java.lang.Object"
   3993     abstract="false"
   3994     static="false" final="true" visibility="public"
   3995     deprecated="not deprecated">
   3996     <constructor name="Alias" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
   3997       static="false" final="false" visibility="public"
   3998       deprecated="not deprecated">
   3999     </constructor>
   4000     <method name="getFromId" return="com.google.inject.grapher.NodeId"
   4001       abstract="false" native="false" synchronized="false"
   4002       static="false" final="false" visibility="public"
   4003       deprecated="not deprecated">
   4004     </method>
   4005     <method name="getToId" return="com.google.inject.grapher.NodeId"
   4006       abstract="false" native="false" synchronized="false"
   4007       static="false" final="false" visibility="public"
   4008       deprecated="not deprecated">
   4009     </method>
   4010     <doc>
   4011     <![CDATA[Alias between two nodes. Causes the 'from' node to be aliased with the 'to' node, which means
   4012  that the 'from' node is not rendered and all edges going to it instead go to the 'to' node.
   4013 
   4014  @author bojand (a] google.com (Bojan Djordjevic)
   4015  @since 4.0]]>
   4016     </doc>
   4017   </class>
   4018   <!-- end class com.google.inject.grapher.Alias -->
   4019   <!-- start interface com.google.inject.grapher.AliasCreator -->
   4020   <interface name="AliasCreator"    abstract="true"
   4021     static="false" final="false" visibility="public"
   4022     deprecated="not deprecated">
   4023     <method name="createAliases" return="java.lang.Iterable&lt;com.google.inject.grapher.Alias&gt;"
   4024       abstract="true" native="false" synchronized="false"
   4025       static="false" final="false" visibility="public"
   4026       deprecated="not deprecated">
   4027       <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
   4028       <doc>
   4029       <![CDATA[Returns aliases for the given dependency graph. The aliases do not need to be transitively
   4030  resolved, i.e. it is valid to return an alias (X to Y) and an alias (Y to Z). It is the
   4031  responsibility of the caller to resolve this to (X to Z) and (Y to Z).
   4032 
   4033  @param bindings bindings that make up the dependency graph
   4034  @return aliases that should be applied on the graph]]>
   4035       </doc>
   4036     </method>
   4037     <doc>
   4038     <![CDATA[Creator of node aliases. Used by dependency graphers to merge nodes in the internal Guice graph
   4039  into a single node on the rendered graph.
   4040 
   4041  @author bojand (a] google.com (Bojan Djordjevic)
   4042  @since 4.0]]>
   4043     </doc>
   4044   </interface>
   4045   <!-- end interface com.google.inject.grapher.AliasCreator -->
   4046   <!-- start class com.google.inject.grapher.BindingEdge -->
   4047   <class name="BindingEdge" extends="com.google.inject.grapher.Edge"
   4048     abstract="false"
   4049     static="false" final="false" visibility="public"
   4050     deprecated="not deprecated">
   4051     <constructor name="BindingEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.grapher.BindingEdge.Type"
   4052       static="false" final="false" visibility="public"
   4053       deprecated="not deprecated">
   4054     </constructor>
   4055     <method name="getType" return="com.google.inject.grapher.BindingEdge.Type"
   4056       abstract="false" native="false" synchronized="false"
   4057       static="false" final="false" visibility="public"
   4058       deprecated="not deprecated">
   4059     </method>
   4060     <method name="equals" return="boolean"
   4061       abstract="false" native="false" synchronized="false"
   4062       static="false" final="false" visibility="public"
   4063       deprecated="not deprecated">
   4064       <param name="obj" type="java.lang.Object"/>
   4065     </method>
   4066     <method name="hashCode" return="int"
   4067       abstract="false" native="false" synchronized="false"
   4068       static="false" final="false" visibility="public"
   4069       deprecated="not deprecated">
   4070     </method>
   4071     <method name="toString" return="java.lang.String"
   4072       abstract="false" native="false" synchronized="false"
   4073       static="false" final="false" visibility="public"
   4074       deprecated="not deprecated">
   4075     </method>
   4076     <method name="copy" return="com.google.inject.grapher.Edge"
   4077       abstract="false" native="false" synchronized="false"
   4078       static="false" final="false" visibility="public"
   4079       deprecated="not deprecated">
   4080       <param name="fromId" type="com.google.inject.grapher.NodeId"/>
   4081       <param name="toId" type="com.google.inject.grapher.NodeId"/>
   4082     </method>
   4083     <doc>
   4084     <![CDATA[Edge that connects an interface to the type or instance that is bound to implement it.
   4085 
   4086  @author phopkins (a] gmail.com (Pete Hopkins)
   4087  @since 4.0 (since 2.0 as an interface)]]>
   4088     </doc>
   4089   </class>
   4090   <!-- end class com.google.inject.grapher.BindingEdge -->
   4091   <!-- start class com.google.inject.grapher.BindingEdge.Type -->
   4092   <class name="BindingEdge.Type" extends="java.lang.Enum&lt;com.google.inject.grapher.BindingEdge.Type&gt;"
   4093     abstract="false"
   4094     static="true" final="true" visibility="public"
   4095     deprecated="not deprecated">
   4096     <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]"
   4097       abstract="false" native="false" synchronized="false"
   4098       static="true" final="false" visibility="public"
   4099       deprecated="not deprecated">
   4100     </method>
   4101     <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type"
   4102       abstract="false" native="false" synchronized="false"
   4103       static="true" final="false" visibility="public"
   4104       deprecated="not deprecated">
   4105       <param name="name" type="java.lang.String"/>
   4106     </method>
   4107     <doc>
   4108     <![CDATA[Classification for what kind of binding this edge represents.]]>
   4109     </doc>
   4110   </class>
   4111   <!-- end class com.google.inject.grapher.BindingEdge.Type -->
   4112   <!-- start class com.google.inject.grapher.DefaultRootKeySetCreator -->
   4113   <class name="DefaultRootKeySetCreator" extends="java.lang.Object"
   4114     abstract="false"
   4115     static="false" final="false" visibility="public"
   4116     deprecated="not deprecated">
   4117     <implements name="com.google.inject.grapher.RootKeySetCreator"/>
   4118     <constructor name="DefaultRootKeySetCreator"
   4119       static="false" final="false" visibility="public"
   4120       deprecated="not deprecated">
   4121     </constructor>
   4122     <method name="getRootKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4123       abstract="false" native="false" synchronized="false"
   4124       static="false" final="false" visibility="public"
   4125       deprecated="not deprecated">
   4126       <param name="injector" type="com.google.inject.Injector"/>
   4127     </method>
   4128     <doc>
   4129     <![CDATA[Root key set creator that starts with all types that are not Guice internal types or the
   4130  {@link Logger} type.
   4131 
   4132  @author bojand (a] google.com (Bojan Djordjevic)
   4133  @since 4.0]]>
   4134     </doc>
   4135   </class>
   4136   <!-- end class com.google.inject.grapher.DefaultRootKeySetCreator -->
   4137   <!-- start class com.google.inject.grapher.DependencyEdge -->
   4138   <class name="DependencyEdge" extends="com.google.inject.grapher.Edge"
   4139     abstract="false"
   4140     static="false" final="false" visibility="public"
   4141     deprecated="not deprecated">
   4142     <constructor name="DependencyEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId, com.google.inject.spi.InjectionPoint"
   4143       static="false" final="false" visibility="public"
   4144       deprecated="not deprecated">
   4145     </constructor>
   4146     <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
   4147       abstract="false" native="false" synchronized="false"
   4148       static="false" final="false" visibility="public"
   4149       deprecated="not deprecated">
   4150     </method>
   4151     <method name="equals" return="boolean"
   4152       abstract="false" native="false" synchronized="false"
   4153       static="false" final="false" visibility="public"
   4154       deprecated="not deprecated">
   4155       <param name="obj" type="java.lang.Object"/>
   4156     </method>
   4157     <method name="hashCode" return="int"
   4158       abstract="false" native="false" synchronized="false"
   4159       static="false" final="false" visibility="public"
   4160       deprecated="not deprecated">
   4161     </method>
   4162     <method name="toString" return="java.lang.String"
   4163       abstract="false" native="false" synchronized="false"
   4164       static="false" final="false" visibility="public"
   4165       deprecated="not deprecated">
   4166     </method>
   4167     <method name="copy" return="com.google.inject.grapher.Edge"
   4168       abstract="false" native="false" synchronized="false"
   4169       static="false" final="false" visibility="public"
   4170       deprecated="not deprecated">
   4171       <param name="fromId" type="com.google.inject.grapher.NodeId"/>
   4172       <param name="toId" type="com.google.inject.grapher.NodeId"/>
   4173     </method>
   4174     <doc>
   4175     <![CDATA[Edge from a class or {@link InjectionPoint} to the interface node that will satisfy the
   4176  dependency.
   4177 
   4178  @author phopkins (a] gmail.com (Pete Hopkins)
   4179  @since 4.0 (since 2.0 as an interface)]]>
   4180     </doc>
   4181   </class>
   4182   <!-- end class com.google.inject.grapher.DependencyEdge -->
   4183   <!-- start class com.google.inject.grapher.Edge -->
   4184   <class name="Edge" extends="java.lang.Object"
   4185     abstract="true"
   4186     static="false" final="false" visibility="public"
   4187     deprecated="not deprecated">
   4188     <constructor name="Edge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
   4189       static="false" final="false" visibility="protected"
   4190       deprecated="not deprecated">
   4191     </constructor>
   4192     <method name="getFromId" return="com.google.inject.grapher.NodeId"
   4193       abstract="false" native="false" synchronized="false"
   4194       static="false" final="false" visibility="public"
   4195       deprecated="not deprecated">
   4196     </method>
   4197     <method name="getToId" return="com.google.inject.grapher.NodeId"
   4198       abstract="false" native="false" synchronized="false"
   4199       static="false" final="false" visibility="public"
   4200       deprecated="not deprecated">
   4201     </method>
   4202     <method name="equals" return="boolean"
   4203       abstract="false" native="false" synchronized="false"
   4204       static="false" final="false" visibility="public"
   4205       deprecated="not deprecated">
   4206       <param name="obj" type="java.lang.Object"/>
   4207     </method>
   4208     <method name="hashCode" return="int"
   4209       abstract="false" native="false" synchronized="false"
   4210       static="false" final="false" visibility="public"
   4211       deprecated="not deprecated">
   4212     </method>
   4213     <method name="copy" return="com.google.inject.grapher.Edge"
   4214       abstract="true" native="false" synchronized="false"
   4215       static="false" final="false" visibility="public"
   4216       deprecated="not deprecated">
   4217       <param name="fromId" type="com.google.inject.grapher.NodeId"/>
   4218       <param name="toId" type="com.google.inject.grapher.NodeId"/>
   4219       <doc>
   4220       <![CDATA[Returns a copy of the edge with new node IDs.
   4221 
   4222  @param fromId new ID of the 'from' node
   4223  @param toId new ID of the 'to' node
   4224  @return copy of the edge with the new node IDs]]>
   4225       </doc>
   4226     </method>
   4227     <doc>
   4228     <![CDATA[Edge in a guice dependency graph.
   4229 
   4230  @author bojand (a] google.com (Bojan Djordjevic)
   4231  @since 4.0]]>
   4232     </doc>
   4233   </class>
   4234   <!-- end class com.google.inject.grapher.Edge -->
   4235   <!-- start interface com.google.inject.grapher.EdgeCreator -->
   4236   <interface name="EdgeCreator"    abstract="true"
   4237     static="false" final="false" visibility="public"
   4238     deprecated="not deprecated">
   4239     <method name="getEdges" return="java.lang.Iterable&lt;com.google.inject.grapher.Edge&gt;"
   4240       abstract="true" native="false" synchronized="false"
   4241       static="false" final="false" visibility="public"
   4242       deprecated="not deprecated">
   4243       <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
   4244       <doc>
   4245       <![CDATA[Returns edges for the given dependency graph.]]>
   4246       </doc>
   4247     </method>
   4248     <doc>
   4249     <![CDATA[Creator of graph edges to render. All edges will be rendered on the graph after node aliasing is
   4250  performed.
   4251 
   4252  @author bojand (a] google.com (Bojan Djordjevic)
   4253  @since 4.0]]>
   4254     </doc>
   4255   </interface>
   4256   <!-- end interface com.google.inject.grapher.EdgeCreator -->
   4257   <!-- start class com.google.inject.grapher.ImplementationNode -->
   4258   <class name="ImplementationNode" extends="com.google.inject.grapher.Node"
   4259     abstract="false"
   4260     static="false" final="false" visibility="public"
   4261     deprecated="not deprecated">
   4262     <constructor name="ImplementationNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.util.Collection&lt;java.lang.reflect.Member&gt;"
   4263       static="false" final="false" visibility="public"
   4264       deprecated="not deprecated">
   4265     </constructor>
   4266     <method name="getMembers" return="java.util.Collection&lt;java.lang.reflect.Member&gt;"
   4267       abstract="false" native="false" synchronized="false"
   4268       static="false" final="false" visibility="public"
   4269       deprecated="not deprecated">
   4270     </method>
   4271     <method name="equals" return="boolean"
   4272       abstract="false" native="false" synchronized="false"
   4273       static="false" final="false" visibility="public"
   4274       deprecated="not deprecated">
   4275       <param name="obj" type="java.lang.Object"/>
   4276     </method>
   4277     <method name="hashCode" return="int"
   4278       abstract="false" native="false" synchronized="false"
   4279       static="false" final="false" visibility="public"
   4280       deprecated="not deprecated">
   4281     </method>
   4282     <method name="toString" return="java.lang.String"
   4283       abstract="false" native="false" synchronized="false"
   4284       static="false" final="false" visibility="public"
   4285       deprecated="not deprecated">
   4286     </method>
   4287     <method name="copy" return="com.google.inject.grapher.Node"
   4288       abstract="false" native="false" synchronized="false"
   4289       static="false" final="false" visibility="public"
   4290       deprecated="not deprecated">
   4291       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4292     </method>
   4293     <doc>
   4294     <![CDATA[Node for types that have {@link com.google.inject.spi.Dependency}s and are
   4295  bound to {@link InterfaceNode}s. These nodes will often have fields for
   4296  {@link Member}s that are {@link com.google.inject.spi.InjectionPoint}s.
   4297 
   4298  @see DependencyEdge
   4299  @author phopkins (a] gmail.com (Pete Hopkins)
   4300  @since 4.0 (since 2.0 as an interface)]]>
   4301     </doc>
   4302   </class>
   4303   <!-- end class com.google.inject.grapher.ImplementationNode -->
   4304   <!-- start interface com.google.inject.grapher.InjectorGrapher -->
   4305   <interface name="InjectorGrapher"    abstract="true"
   4306     static="false" final="false" visibility="public"
   4307     deprecated="not deprecated">
   4308     <method name="graph"
   4309       abstract="true" native="false" synchronized="false"
   4310       static="false" final="false" visibility="public"
   4311       deprecated="not deprecated">
   4312       <param name="injector" type="com.google.inject.Injector"/>
   4313       <exception name="IOException" type="java.io.IOException"/>
   4314       <doc>
   4315       <![CDATA[Graphs the guice dependency graph for the given injector using default starting keys.]]>
   4316       </doc>
   4317     </method>
   4318     <method name="graph"
   4319       abstract="true" native="false" synchronized="false"
   4320       static="false" final="false" visibility="public"
   4321       deprecated="not deprecated">
   4322       <param name="injector" type="com.google.inject.Injector"/>
   4323       <param name="root" type="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"/>
   4324       <exception name="IOException" type="java.io.IOException"/>
   4325       <doc>
   4326       <![CDATA[Graphs the guice dependency graph for the given injector using the given starting keys and
   4327  their transitive dependencies.]]>
   4328       </doc>
   4329     </method>
   4330     <doc>
   4331     <![CDATA[Guice injector grapher. Renders the guice dependency graph for an injector. It can render the
   4332  whole dependency graph or just transitive dependencies of a given set of nodes.
   4333 
   4334  @author phopkins (a] gmail.com (Pete Hopkins)
   4335  @since 4.0 (since 2.0 as a concrete class with a different API)]]>
   4336     </doc>
   4337   </interface>
   4338   <!-- end interface com.google.inject.grapher.InjectorGrapher -->
   4339   <!-- start class com.google.inject.grapher.InstanceNode -->
   4340   <class name="InstanceNode" extends="com.google.inject.grapher.Node"
   4341     abstract="false"
   4342     static="false" final="false" visibility="public"
   4343     deprecated="not deprecated">
   4344     <constructor name="InstanceNode" type="com.google.inject.grapher.NodeId, java.lang.Object, java.lang.Object, java.lang.Iterable&lt;java.lang.reflect.Member&gt;"
   4345       static="false" final="false" visibility="public"
   4346       deprecated="not deprecated">
   4347     </constructor>
   4348     <method name="getInstance" return="java.lang.Object"
   4349       abstract="false" native="false" synchronized="false"
   4350       static="false" final="false" visibility="public"
   4351       deprecated="not deprecated">
   4352     </method>
   4353     <method name="getMembers" return="java.lang.Iterable&lt;java.lang.reflect.Member&gt;"
   4354       abstract="false" native="false" synchronized="false"
   4355       static="false" final="false" visibility="public"
   4356       deprecated="not deprecated">
   4357     </method>
   4358     <method name="equals" return="boolean"
   4359       abstract="false" native="false" synchronized="false"
   4360       static="false" final="false" visibility="public"
   4361       deprecated="not deprecated">
   4362       <param name="obj" type="java.lang.Object"/>
   4363     </method>
   4364     <method name="hashCode" return="int"
   4365       abstract="false" native="false" synchronized="false"
   4366       static="false" final="false" visibility="public"
   4367       deprecated="not deprecated">
   4368     </method>
   4369     <method name="toString" return="java.lang.String"
   4370       abstract="false" native="false" synchronized="false"
   4371       static="false" final="false" visibility="public"
   4372       deprecated="not deprecated">
   4373     </method>
   4374     <method name="copy" return="com.google.inject.grapher.Node"
   4375       abstract="false" native="false" synchronized="false"
   4376       static="false" final="false" visibility="public"
   4377       deprecated="not deprecated">
   4378       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4379     </method>
   4380     <doc>
   4381     <![CDATA[Node for instances. Used when a type is bound to an instance.
   4382 
   4383  @author bojand (a] google.com (Bojan Djordjevic)
   4384  @since 4.0]]>
   4385     </doc>
   4386   </class>
   4387   <!-- end class com.google.inject.grapher.InstanceNode -->
   4388   <!-- start class com.google.inject.grapher.InterfaceNode -->
   4389   <class name="InterfaceNode" extends="com.google.inject.grapher.Node"
   4390     abstract="false"
   4391     static="false" final="false" visibility="public"
   4392     deprecated="not deprecated">
   4393     <constructor name="InterfaceNode" type="com.google.inject.grapher.NodeId, java.lang.Object"
   4394       static="false" final="false" visibility="public"
   4395       deprecated="not deprecated">
   4396     </constructor>
   4397     <method name="copy" return="com.google.inject.grapher.Node"
   4398       abstract="false" native="false" synchronized="false"
   4399       static="false" final="false" visibility="public"
   4400       deprecated="not deprecated">
   4401       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4402     </method>
   4403     <method name="equals" return="boolean"
   4404       abstract="false" native="false" synchronized="false"
   4405       static="false" final="false" visibility="public"
   4406       deprecated="not deprecated">
   4407       <param name="obj" type="java.lang.Object"/>
   4408     </method>
   4409     <method name="toString" return="java.lang.String"
   4410       abstract="false" native="false" synchronized="false"
   4411       static="false" final="false" visibility="public"
   4412       deprecated="not deprecated">
   4413     </method>
   4414     <doc>
   4415     <![CDATA[Node for an interface type that has been bound to an implementation class or instance.
   4416 
   4417  @see BindingEdge
   4418  @author phopkins (a] gmail.com (Pete Hopkins)
   4419  @since 4.0 (since 2.0 as an interface)]]>
   4420     </doc>
   4421   </class>
   4422   <!-- end class com.google.inject.grapher.InterfaceNode -->
   4423   <!-- start interface com.google.inject.grapher.NameFactory -->
   4424   <interface name="NameFactory"    abstract="true"
   4425     static="false" final="false" visibility="public"
   4426     deprecated="not deprecated">
   4427     <method name="getMemberName" return="java.lang.String"
   4428       abstract="true" native="false" synchronized="false"
   4429       static="false" final="false" visibility="public"
   4430       deprecated="not deprecated">
   4431       <param name="member" type="java.lang.reflect.Member"/>
   4432     </method>
   4433     <method name="getClassName" return="java.lang.String"
   4434       abstract="true" native="false" synchronized="false"
   4435       static="false" final="false" visibility="public"
   4436       deprecated="not deprecated">
   4437       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4438     </method>
   4439     <method name="getInstanceName" return="java.lang.String"
   4440       abstract="true" native="false" synchronized="false"
   4441       static="false" final="false" visibility="public"
   4442       deprecated="not deprecated">
   4443       <param name="instance" type="java.lang.Object"/>
   4444     </method>
   4445     <method name="getAnnotationName" return="java.lang.String"
   4446       abstract="true" native="false" synchronized="false"
   4447       static="false" final="false" visibility="public"
   4448       deprecated="not deprecated">
   4449       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4450     </method>
   4451     <method name="getSourceName" return="java.lang.String"
   4452       abstract="true" native="false" synchronized="false"
   4453       static="false" final="false" visibility="public"
   4454       deprecated="not deprecated">
   4455       <param name="source" type="java.lang.Object"/>
   4456     </method>
   4457     <doc>
   4458     <![CDATA[Interface for a service that provides nice {@link String}s that we can
   4459  display in the graph for the types that come up in
   4460  {@link com.google.inject.Binding}s.
   4461 
   4462  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4463     </doc>
   4464   </interface>
   4465   <!-- end interface com.google.inject.grapher.NameFactory -->
   4466   <!-- start class com.google.inject.grapher.Node -->
   4467   <class name="Node" extends="java.lang.Object"
   4468     abstract="true"
   4469     static="false" final="false" visibility="public"
   4470     deprecated="not deprecated">
   4471     <constructor name="Node" type="com.google.inject.grapher.NodeId, java.lang.Object"
   4472       static="false" final="false" visibility="protected"
   4473       deprecated="not deprecated">
   4474     </constructor>
   4475     <method name="getId" return="com.google.inject.grapher.NodeId"
   4476       abstract="false" native="false" synchronized="false"
   4477       static="false" final="false" visibility="public"
   4478       deprecated="not deprecated">
   4479     </method>
   4480     <method name="getSource" return="java.lang.Object"
   4481       abstract="false" native="false" synchronized="false"
   4482       static="false" final="false" visibility="public"
   4483       deprecated="not deprecated">
   4484     </method>
   4485     <method name="equals" return="boolean"
   4486       abstract="false" native="false" synchronized="false"
   4487       static="false" final="false" visibility="public"
   4488       deprecated="not deprecated">
   4489       <param name="obj" type="java.lang.Object"/>
   4490     </method>
   4491     <method name="hashCode" return="int"
   4492       abstract="false" native="false" synchronized="false"
   4493       static="false" final="false" visibility="public"
   4494       deprecated="not deprecated">
   4495     </method>
   4496     <method name="copy" return="com.google.inject.grapher.Node"
   4497       abstract="true" native="false" synchronized="false"
   4498       static="false" final="false" visibility="public"
   4499       deprecated="not deprecated">
   4500       <param name="id" type="com.google.inject.grapher.NodeId"/>
   4501       <doc>
   4502       <![CDATA[Returns a copy of the node with a new ID.
   4503 
   4504  @param id new ID of the node
   4505  @return copy of the node with a new ID]]>
   4506       </doc>
   4507     </method>
   4508     <doc>
   4509     <![CDATA[Node in a guice dependency graph.
   4510 
   4511  @author bojand (a] google.com (Bojan Djordjevic)
   4512  @since 4.0]]>
   4513     </doc>
   4514   </class>
   4515   <!-- end class com.google.inject.grapher.Node -->
   4516   <!-- start interface com.google.inject.grapher.NodeCreator -->
   4517   <interface name="NodeCreator"    abstract="true"
   4518     static="false" final="false" visibility="public"
   4519     deprecated="not deprecated">
   4520     <method name="getNodes" return="java.lang.Iterable&lt;com.google.inject.grapher.Node&gt;"
   4521       abstract="true" native="false" synchronized="false"
   4522       static="false" final="false" visibility="public"
   4523       deprecated="not deprecated">
   4524       <param name="bindings" type="java.lang.Iterable&lt;com.google.inject.Binding&lt;?&gt;&gt;"/>
   4525       <doc>
   4526       <![CDATA[Returns nodes for the given dependency graph.]]>
   4527       </doc>
   4528     </method>
   4529     <doc>
   4530     <![CDATA[Creator of graph nodes.
   4531 
   4532  @author bojand (a] google.com (Bojan Djordjevic)
   4533  @since 4.0]]>
   4534     </doc>
   4535   </interface>
   4536   <!-- end interface com.google.inject.grapher.NodeCreator -->
   4537   <!-- start class com.google.inject.grapher.NodeId -->
   4538   <class name="NodeId" extends="java.lang.Object"
   4539     abstract="false"
   4540     static="false" final="true" visibility="public"
   4541     deprecated="not deprecated">
   4542     <method name="newTypeId" return="com.google.inject.grapher.NodeId"
   4543       abstract="false" native="false" synchronized="false"
   4544       static="true" final="false" visibility="public"
   4545       deprecated="not deprecated">
   4546       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4547     </method>
   4548     <method name="newInstanceId" return="com.google.inject.grapher.NodeId"
   4549       abstract="false" native="false" synchronized="false"
   4550       static="true" final="false" visibility="public"
   4551       deprecated="not deprecated">
   4552       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4553     </method>
   4554     <method name="getKey" return="com.google.inject.Key&lt;?&gt;"
   4555       abstract="false" native="false" synchronized="false"
   4556       static="false" final="false" visibility="public"
   4557       deprecated="not deprecated">
   4558     </method>
   4559     <method name="hashCode" return="int"
   4560       abstract="false" native="false" synchronized="false"
   4561       static="false" final="false" visibility="public"
   4562       deprecated="not deprecated">
   4563     </method>
   4564     <method name="equals" return="boolean"
   4565       abstract="false" native="false" synchronized="false"
   4566       static="false" final="false" visibility="public"
   4567       deprecated="not deprecated">
   4568       <param name="obj" type="java.lang.Object"/>
   4569     </method>
   4570     <method name="toString" return="java.lang.String"
   4571       abstract="false" native="false" synchronized="false"
   4572       static="false" final="false" visibility="public"
   4573       deprecated="not deprecated">
   4574     </method>
   4575     <doc>
   4576     <![CDATA[ID of a node in the graph. An ID is given by a {@link Key} and a node type, which is used to
   4577  distinguish instances and implementation classes for the same key. For example
   4578  {@code bind(Integer.class).toInstance(42)} produces two nodes: an
   4579  interface node with the key of {@code Key<Integer>} and an instance node with the same
   4580  {@link Key} and value of 42.
   4581 
   4582  @author bojand (a] google.com (Bojan Djordjevic)
   4583  @since 4.0]]>
   4584     </doc>
   4585   </class>
   4586   <!-- end class com.google.inject.grapher.NodeId -->
   4587   <!-- start class com.google.inject.grapher.NodeId.NodeType -->
   4588   <class name="NodeId.NodeType" extends="java.lang.Enum&lt;com.google.inject.grapher.NodeId.NodeType&gt;"
   4589     abstract="false"
   4590     static="true" final="true" visibility="public"
   4591     deprecated="not deprecated">
   4592     <method name="values" return="com.google.inject.grapher.NodeId.NodeType[]"
   4593       abstract="false" native="false" synchronized="false"
   4594       static="true" final="false" visibility="public"
   4595       deprecated="not deprecated">
   4596     </method>
   4597     <method name="valueOf" return="com.google.inject.grapher.NodeId.NodeType"
   4598       abstract="false" native="false" synchronized="false"
   4599       static="true" final="false" visibility="public"
   4600       deprecated="not deprecated">
   4601       <param name="name" type="java.lang.String"/>
   4602     </method>
   4603     <doc>
   4604     <![CDATA[Type of node.
   4605 
   4606  @since 4.0]]>
   4607     </doc>
   4608   </class>
   4609   <!-- end class com.google.inject.grapher.NodeId.NodeType -->
   4610   <!-- start interface com.google.inject.grapher.RootKeySetCreator -->
   4611   <interface name="RootKeySetCreator"    abstract="true"
   4612     static="false" final="false" visibility="public"
   4613     deprecated="not deprecated">
   4614     <method name="getRootKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4615       abstract="true" native="false" synchronized="false"
   4616       static="false" final="false" visibility="public"
   4617       deprecated="not deprecated">
   4618       <param name="injector" type="com.google.inject.Injector"/>
   4619       <doc>
   4620       <![CDATA[Returns the set of starting keys to graph.]]>
   4621       </doc>
   4622     </method>
   4623     <doc>
   4624     <![CDATA[Creator of the default starting set of keys to graph. These keys and their transitive
   4625  dependencies will be graphed.
   4626 
   4627  @author bojand (a] google.com (Bojan Djordjevic)
   4628  @since 4.0]]>
   4629     </doc>
   4630   </interface>
   4631   <!-- end interface com.google.inject.grapher.RootKeySetCreator -->
   4632   <!-- start class com.google.inject.grapher.ShortNameFactory -->
   4633   <class name="ShortNameFactory" extends="java.lang.Object"
   4634     abstract="false"
   4635     static="false" final="false" visibility="public"
   4636     deprecated="not deprecated">
   4637     <implements name="com.google.inject.grapher.NameFactory"/>
   4638     <constructor name="ShortNameFactory"
   4639       static="false" final="false" visibility="public"
   4640       deprecated="not deprecated">
   4641     </constructor>
   4642     <method name="getMemberName" return="java.lang.String"
   4643       abstract="false" native="false" synchronized="false"
   4644       static="false" final="false" visibility="public"
   4645       deprecated="not deprecated">
   4646       <param name="member" type="java.lang.reflect.Member"/>
   4647     </method>
   4648     <method name="getAnnotationName" return="java.lang.String"
   4649       abstract="false" native="false" synchronized="false"
   4650       static="false" final="false" visibility="public"
   4651       deprecated="not deprecated">
   4652       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4653     </method>
   4654     <method name="getClassName" return="java.lang.String"
   4655       abstract="false" native="false" synchronized="false"
   4656       static="false" final="false" visibility="public"
   4657       deprecated="not deprecated">
   4658       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4659     </method>
   4660     <method name="getInstanceName" return="java.lang.String"
   4661       abstract="false" native="false" synchronized="false"
   4662       static="false" final="false" visibility="public"
   4663       deprecated="not deprecated">
   4664       <param name="instance" type="java.lang.Object"/>
   4665     </method>
   4666     <method name="getSourceName" return="java.lang.String"
   4667       abstract="false" native="false" synchronized="false"
   4668       static="false" final="false" visibility="public"
   4669       deprecated="not deprecated">
   4670       <param name="source" type="java.lang.Object"/>
   4671       <doc>
   4672       <![CDATA[Returns a name for a Guice "source" object. This will typically be either
   4673  a {@link StackTraceElement} for when the binding is made to the instance,
   4674  or a {@link Method} when a provider method is used.]]>
   4675       </doc>
   4676     </method>
   4677     <method name="getFileString" return="java.lang.String"
   4678       abstract="false" native="false" synchronized="false"
   4679       static="false" final="false" visibility="protected"
   4680       deprecated="not deprecated">
   4681       <param name="stackTraceElement" type="java.lang.StackTraceElement"/>
   4682     </method>
   4683     <method name="getMethodString" return="java.lang.String"
   4684       abstract="false" native="false" synchronized="false"
   4685       static="false" final="false" visibility="protected"
   4686       deprecated="not deprecated">
   4687       <param name="method" type="java.lang.reflect.Method"/>
   4688     </method>
   4689     <doc>
   4690     <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various
   4691  {@link Object#toString()}s and strips package names out of them so that
   4692  they'll fit on the graph.
   4693 
   4694  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4695     </doc>
   4696   </class>
   4697   <!-- end class com.google.inject.grapher.ShortNameFactory -->
   4698   <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor -->
   4699   <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;"
   4700     abstract="false"
   4701     static="false" final="false" visibility="public"
   4702     deprecated="not deprecated">
   4703     <constructor name="TransitiveDependencyVisitor"
   4704       static="false" final="false" visibility="public"
   4705       deprecated="not deprecated">
   4706     </constructor>
   4707     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4708       abstract="false" native="false" synchronized="false"
   4709       static="false" final="false" visibility="public"
   4710       deprecated="not deprecated">
   4711       <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
   4712     </method>
   4713     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4714       abstract="false" native="false" synchronized="false"
   4715       static="false" final="false" visibility="public"
   4716       deprecated="not deprecated">
   4717       <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
   4718     </method>
   4719     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4720       abstract="false" native="false" synchronized="false"
   4721       static="false" final="false" visibility="public"
   4722       deprecated="not deprecated">
   4723       <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
   4724     </method>
   4725     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4726       abstract="false" native="false" synchronized="false"
   4727       static="false" final="false" visibility="public"
   4728       deprecated="not deprecated">
   4729       <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;?&gt;"/>
   4730     </method>
   4731     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4732       abstract="false" native="false" synchronized="false"
   4733       static="false" final="false" visibility="public"
   4734       deprecated="not deprecated">
   4735       <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
   4736     </method>
   4737     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4738       abstract="false" native="false" synchronized="false"
   4739       static="false" final="false" visibility="public"
   4740       deprecated="not deprecated">
   4741       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
   4742     </method>
   4743     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4744       abstract="false" native="false" synchronized="false"
   4745       static="false" final="false" visibility="public"
   4746       deprecated="not deprecated">
   4747       <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
   4748     </method>
   4749     <method name="visitOther" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4750       abstract="false" native="false" synchronized="false"
   4751       static="false" final="false" visibility="public"
   4752       deprecated="not deprecated">
   4753       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   4754       <doc>
   4755       <![CDATA[@since 4.0]]>
   4756       </doc>
   4757     </method>
   4758     <doc>
   4759     <![CDATA[{@link com.google.inject.spi.BindingTargetVisitor} that returns a
   4760  {@link Collection} of the {@link Key}s of each {@link Binding}'s
   4761  dependencies. Used by {@link InjectorGrapher} to walk the dependency graph
   4762  from a starting set of {@link Binding}s.
   4763 
   4764  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4765     </doc>
   4766   </class>
   4767   <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor -->
   4768 </package>
   4769 <package name="com.google.inject.grapher.graphviz">
   4770   <!-- start class com.google.inject.grapher.graphviz.ArrowType -->
   4771   <class name="ArrowType" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4772     abstract="false"
   4773     static="false" final="true" visibility="public"
   4774     deprecated="not deprecated">
   4775     <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]"
   4776       abstract="false" native="false" synchronized="false"
   4777       static="true" final="false" visibility="public"
   4778       deprecated="not deprecated">
   4779     </method>
   4780     <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType"
   4781       abstract="false" native="false" synchronized="false"
   4782       static="true" final="false" visibility="public"
   4783       deprecated="not deprecated">
   4784       <param name="name" type="java.lang.String"/>
   4785     </method>
   4786     <method name="toString" return="java.lang.String"
   4787       abstract="false" native="false" synchronized="false"
   4788       static="false" final="false" visibility="public"
   4789       deprecated="not deprecated">
   4790     </method>
   4791     <doc>
   4792     <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by
   4793  concatenation to make double arrows and such.
   4794  <p>
   4795  See: http://www.graphviz.org/doc/info/arrows.html
   4796 
   4797  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4798     </doc>
   4799   </class>
   4800   <!-- end class com.google.inject.grapher.graphviz.ArrowType -->
   4801   <!-- start class com.google.inject.grapher.graphviz.CompassPoint -->
   4802   <class name="CompassPoint" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.CompassPoint&gt;"
   4803     abstract="false"
   4804     static="false" final="true" visibility="public"
   4805     deprecated="not deprecated">
   4806     <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]"
   4807       abstract="false" native="false" synchronized="false"
   4808       static="true" final="false" visibility="public"
   4809       deprecated="not deprecated">
   4810     </method>
   4811     <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint"
   4812       abstract="false" native="false" synchronized="false"
   4813       static="true" final="false" visibility="public"
   4814       deprecated="not deprecated">
   4815       <param name="name" type="java.lang.String"/>
   4816     </method>
   4817     <method name="toString" return="java.lang.String"
   4818       abstract="false" native="false" synchronized="false"
   4819       static="false" final="false" visibility="public"
   4820       deprecated="not deprecated">
   4821     </method>
   4822     <doc>
   4823     <![CDATA[Enum for the "compass point" values used to control where edge
   4824  end points appear on the graph.
   4825  <p>
   4826  See: http://www.graphviz.org/doc/info/attrs.html#k:portPos
   4827 
   4828  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4829     </doc>
   4830   </class>
   4831   <!-- end class com.google.inject.grapher.graphviz.CompassPoint -->
   4832   <!-- start class com.google.inject.grapher.graphviz.EdgeStyle -->
   4833   <class name="EdgeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.EdgeStyle&gt;"
   4834     abstract="false"
   4835     static="false" final="true" visibility="public"
   4836     deprecated="not deprecated">
   4837     <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]"
   4838       abstract="false" native="false" synchronized="false"
   4839       static="true" final="false" visibility="public"
   4840       deprecated="not deprecated">
   4841     </method>
   4842     <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle"
   4843       abstract="false" native="false" synchronized="false"
   4844       static="true" final="false" visibility="public"
   4845       deprecated="not deprecated">
   4846       <param name="name" type="java.lang.String"/>
   4847     </method>
   4848     <method name="toString" return="java.lang.String"
   4849       abstract="false" native="false" synchronized="false"
   4850       static="false" final="false" visibility="public"
   4851       deprecated="not deprecated">
   4852     </method>
   4853     <doc>
   4854     <![CDATA[Styles for edges.
   4855  <p>
   4856  See: http://www.graphviz.org/doc/info/attrs.html#k:style
   4857 
   4858  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4859     </doc>
   4860   </class>
   4861   <!-- end class com.google.inject.grapher.graphviz.EdgeStyle -->
   4862   <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge -->
   4863   <class name="GraphvizEdge" extends="java.lang.Object"
   4864     abstract="false"
   4865     static="false" final="false" visibility="public"
   4866     deprecated="not deprecated">
   4867     <constructor name="GraphvizEdge" type="com.google.inject.grapher.NodeId, com.google.inject.grapher.NodeId"
   4868       static="false" final="false" visibility="public"
   4869       deprecated="not deprecated">
   4870     </constructor>
   4871     <method name="getHeadNodeId" return="com.google.inject.grapher.NodeId"
   4872       abstract="false" native="false" synchronized="false"
   4873       static="false" final="false" visibility="public"
   4874       deprecated="not deprecated">
   4875       <doc>
   4876       <![CDATA[@since 4.0]]>
   4877       </doc>
   4878     </method>
   4879     <method name="getHeadPortId" return="java.lang.String"
   4880       abstract="false" native="false" synchronized="false"
   4881       static="false" final="false" visibility="public"
   4882       deprecated="not deprecated">
   4883     </method>
   4884     <method name="setHeadPortId"
   4885       abstract="false" native="false" synchronized="false"
   4886       static="false" final="false" visibility="public"
   4887       deprecated="not deprecated">
   4888       <param name="headPortId" type="java.lang.String"/>
   4889     </method>
   4890     <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
   4891       abstract="false" native="false" synchronized="false"
   4892       static="false" final="false" visibility="public"
   4893       deprecated="not deprecated">
   4894     </method>
   4895     <method name="setHeadCompassPoint"
   4896       abstract="false" native="false" synchronized="false"
   4897       static="false" final="false" visibility="public"
   4898       deprecated="not deprecated">
   4899       <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   4900     </method>
   4901     <method name="getArrowHead" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4902       abstract="false" native="false" synchronized="false"
   4903       static="false" final="false" visibility="public"
   4904       deprecated="not deprecated">
   4905     </method>
   4906     <method name="setArrowHead"
   4907       abstract="false" native="false" synchronized="false"
   4908       static="false" final="false" visibility="public"
   4909       deprecated="not deprecated">
   4910       <param name="arrowHead" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   4911     </method>
   4912     <method name="getTailNodeId" return="com.google.inject.grapher.NodeId"
   4913       abstract="false" native="false" synchronized="false"
   4914       static="false" final="false" visibility="public"
   4915       deprecated="not deprecated">
   4916       <doc>
   4917       <![CDATA[@since 4.0]]>
   4918       </doc>
   4919     </method>
   4920     <method name="getTailPortId" return="java.lang.String"
   4921       abstract="false" native="false" synchronized="false"
   4922       static="false" final="false" visibility="public"
   4923       deprecated="not deprecated">
   4924     </method>
   4925     <method name="setTailPortId"
   4926       abstract="false" native="false" synchronized="false"
   4927       static="false" final="false" visibility="public"
   4928       deprecated="not deprecated">
   4929       <param name="tailPortId" type="java.lang.String"/>
   4930     </method>
   4931     <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
   4932       abstract="false" native="false" synchronized="false"
   4933       static="false" final="false" visibility="public"
   4934       deprecated="not deprecated">
   4935     </method>
   4936     <method name="setTailCompassPoint"
   4937       abstract="false" native="false" synchronized="false"
   4938       static="false" final="false" visibility="public"
   4939       deprecated="not deprecated">
   4940       <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   4941     </method>
   4942     <method name="getArrowTail" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4943       abstract="false" native="false" synchronized="false"
   4944       static="false" final="false" visibility="public"
   4945       deprecated="not deprecated">
   4946     </method>
   4947     <method name="setArrowTail"
   4948       abstract="false" native="false" synchronized="false"
   4949       static="false" final="false" visibility="public"
   4950       deprecated="not deprecated">
   4951       <param name="arrowTail" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   4952     </method>
   4953     <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle"
   4954       abstract="false" native="false" synchronized="false"
   4955       static="false" final="false" visibility="public"
   4956       deprecated="not deprecated">
   4957     </method>
   4958     <method name="setStyle"
   4959       abstract="false" native="false" synchronized="false"
   4960       static="false" final="false" visibility="public"
   4961       deprecated="not deprecated">
   4962       <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/>
   4963     </method>
   4964     <doc>
   4965     <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're
   4966  interested in drawing.
   4967 
   4968  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4969     </doc>
   4970   </class>
   4971   <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge -->
   4972   <!-- start class com.google.inject.grapher.graphviz.GraphvizGrapher -->
   4973   <class name="GraphvizGrapher" extends="com.google.inject.grapher.AbstractInjectorGrapher"
   4974     abstract="false"
   4975     static="false" final="false" visibility="public"
   4976     deprecated="not deprecated">
   4977     <method name="reset"
   4978       abstract="false" native="false" synchronized="false"
   4979       static="false" final="false" visibility="protected"
   4980       deprecated="not deprecated">
   4981     </method>
   4982     <method name="setOut"
   4983       abstract="false" native="false" synchronized="false"
   4984       static="false" final="false" visibility="public"
   4985       deprecated="not deprecated">
   4986       <param name="out" type="java.io.PrintWriter"/>
   4987     </method>
   4988     <method name="setRankdir"
   4989       abstract="false" native="false" synchronized="false"
   4990       static="false" final="false" visibility="public"
   4991       deprecated="not deprecated">
   4992       <param name="rankdir" type="java.lang.String"/>
   4993     </method>
   4994     <method name="postProcess"
   4995       abstract="false" native="false" synchronized="false"
   4996       static="false" final="false" visibility="protected"
   4997       deprecated="not deprecated">
   4998     </method>
   4999     <method name="getGraphAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5000       abstract="false" native="false" synchronized="false"
   5001       static="false" final="false" visibility="protected"
   5002       deprecated="not deprecated">
   5003     </method>
   5004     <method name="start"
   5005       abstract="false" native="false" synchronized="false"
   5006       static="false" final="false" visibility="protected"
   5007       deprecated="not deprecated">
   5008     </method>
   5009     <method name="finish"
   5010       abstract="false" native="false" synchronized="false"
   5011       static="false" final="false" visibility="protected"
   5012       deprecated="not deprecated">
   5013     </method>
   5014     <method name="renderNode"
   5015       abstract="false" native="false" synchronized="false"
   5016       static="false" final="false" visibility="protected"
   5017       deprecated="not deprecated">
   5018       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5019     </method>
   5020     <method name="getNodeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5021       abstract="false" native="false" synchronized="false"
   5022       static="false" final="false" visibility="protected"
   5023       deprecated="not deprecated">
   5024       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5025     </method>
   5026     <method name="getNodeLabel" return="java.lang.String"
   5027       abstract="false" native="false" synchronized="false"
   5028       static="false" final="false" visibility="protected"
   5029       deprecated="not deprecated">
   5030       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5031       <doc>
   5032       <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a
   5033  table with a heading at the top and (in the case of
   5034  {@link ImplementationNode}s) rows for each of the member fields.]]>
   5035       </doc>
   5036     </method>
   5037     <method name="renderEdge"
   5038       abstract="false" native="false" synchronized="false"
   5039       static="false" final="false" visibility="protected"
   5040       deprecated="not deprecated">
   5041       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   5042     </method>
   5043     <method name="getEdgeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5044       abstract="false" native="false" synchronized="false"
   5045       static="false" final="false" visibility="protected"
   5046       deprecated="not deprecated">
   5047       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   5048     </method>
   5049     <method name="getArrowString" return="java.lang.String"
   5050       abstract="false" native="false" synchronized="false"
   5051       static="false" final="false" visibility="protected"
   5052       deprecated="not deprecated">
   5053       <param name="arrows" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   5054       <doc>
   5055       <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that
   5056  represents combining them. With Graphviz, that just means concatenating
   5057  them.]]>
   5058       </doc>
   5059     </method>
   5060     <method name="getEdgeEndPoint" return="java.lang.String"
   5061       abstract="false" native="false" synchronized="false"
   5062       static="false" final="false" visibility="protected"
   5063       deprecated="not deprecated">
   5064       <param name="nodeId" type="java.lang.String"/>
   5065       <param name="portId" type="java.lang.String"/>
   5066       <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   5067     </method>
   5068     <method name="htmlEscape" return="java.lang.String"
   5069       abstract="false" native="false" synchronized="false"
   5070       static="false" final="false" visibility="protected"
   5071       deprecated="not deprecated">
   5072       <param name="str" type="java.lang.String"/>
   5073     </method>
   5074     <method name="htmlEscape" return="java.util.List&lt;java.lang.String&gt;"
   5075       abstract="false" native="false" synchronized="false"
   5076       static="false" final="false" visibility="protected"
   5077       deprecated="not deprecated">
   5078       <param name="elements" type="java.util.List&lt;java.lang.String&gt;"/>
   5079     </method>
   5080     <method name="newInterfaceNode"
   5081       abstract="false" native="false" synchronized="false"
   5082       static="false" final="false" visibility="protected"
   5083       deprecated="not deprecated">
   5084       <param name="node" type="com.google.inject.grapher.InterfaceNode"/>
   5085     </method>
   5086     <method name="newImplementationNode"
   5087       abstract="false" native="false" synchronized="false"
   5088       static="false" final="false" visibility="protected"
   5089       deprecated="not deprecated">
   5090       <param name="node" type="com.google.inject.grapher.ImplementationNode"/>
   5091     </method>
   5092     <method name="newInstanceNode"
   5093       abstract="false" native="false" synchronized="false"
   5094       static="false" final="false" visibility="protected"
   5095       deprecated="not deprecated">
   5096       <param name="node" type="com.google.inject.grapher.InstanceNode"/>
   5097     </method>
   5098     <method name="newDependencyEdge"
   5099       abstract="false" native="false" synchronized="false"
   5100       static="false" final="false" visibility="protected"
   5101       deprecated="not deprecated">
   5102       <param name="edge" type="com.google.inject.grapher.DependencyEdge"/>
   5103     </method>
   5104     <method name="newBindingEdge"
   5105       abstract="false" native="false" synchronized="false"
   5106       static="false" final="false" visibility="protected"
   5107       deprecated="not deprecated">
   5108       <param name="edge" type="com.google.inject.grapher.BindingEdge"/>
   5109     </method>
   5110     <doc>
   5111     <![CDATA[{@link com.google.inject.grapher.InjectorGrapher} implementation that writes out a Graphviz DOT
   5112  file of the graph. Dependencies are bound in {@link GraphvizModule}.
   5113  <p>
   5114  Specify the {@link PrintWriter} to output to with {@link #setOut(PrintWriter)}.
   5115 
   5116  @author phopkins (a] gmail.com (Pete Hopkins)
   5117  @since 4.0]]>
   5118     </doc>
   5119   </class>
   5120   <!-- end class com.google.inject.grapher.graphviz.GraphvizGrapher -->
   5121   <!-- start class com.google.inject.grapher.graphviz.GraphvizModule -->
   5122   <class name="GraphvizModule" extends="com.google.inject.AbstractModule"
   5123     abstract="false"
   5124     static="false" final="false" visibility="public"
   5125     deprecated="not deprecated">
   5126     <constructor name="GraphvizModule"
   5127       static="false" final="false" visibility="public"
   5128       deprecated="not deprecated">
   5129     </constructor>
   5130     <method name="configure"
   5131       abstract="false" native="false" synchronized="false"
   5132       static="false" final="false" visibility="protected"
   5133       deprecated="not deprecated">
   5134     </method>
   5135     <doc>
   5136     <![CDATA[Module that provides classes needed by {@link GraphvizGrapher}.
   5137 
   5138  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5139     </doc>
   5140   </class>
   5141   <!-- end class com.google.inject.grapher.graphviz.GraphvizModule -->
   5142   <!-- start class com.google.inject.grapher.graphviz.GraphvizNode -->
   5143   <class name="GraphvizNode" extends="java.lang.Object"
   5144     abstract="false"
   5145     static="false" final="false" visibility="public"
   5146     deprecated="not deprecated">
   5147     <constructor name="GraphvizNode" type="com.google.inject.grapher.NodeId"
   5148       static="false" final="false" visibility="public"
   5149       deprecated="not deprecated">
   5150       <doc>
   5151       <![CDATA[@since 4.0]]>
   5152       </doc>
   5153     </constructor>
   5154     <method name="getNodeId" return="com.google.inject.grapher.NodeId"
   5155       abstract="false" native="false" synchronized="false"
   5156       static="false" final="false" visibility="public"
   5157       deprecated="not deprecated">
   5158       <doc>
   5159       <![CDATA[@since 4.0]]>
   5160       </doc>
   5161     </method>
   5162     <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape"
   5163       abstract="false" native="false" synchronized="false"
   5164       static="false" final="false" visibility="public"
   5165       deprecated="not deprecated">
   5166     </method>
   5167     <method name="setShape"
   5168       abstract="false" native="false" synchronized="false"
   5169       static="false" final="false" visibility="public"
   5170       deprecated="not deprecated">
   5171       <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/>
   5172     </method>
   5173     <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle"
   5174       abstract="false" native="false" synchronized="false"
   5175       static="false" final="false" visibility="public"
   5176       deprecated="not deprecated">
   5177     </method>
   5178     <method name="setStyle"
   5179       abstract="false" native="false" synchronized="false"
   5180       static="false" final="false" visibility="public"
   5181       deprecated="not deprecated">
   5182       <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/>
   5183     </method>
   5184     <method name="getTitle" return="java.lang.String"
   5185       abstract="false" native="false" synchronized="false"
   5186       static="false" final="false" visibility="public"
   5187       deprecated="not deprecated">
   5188     </method>
   5189     <method name="setTitle"
   5190       abstract="false" native="false" synchronized="false"
   5191       static="false" final="false" visibility="public"
   5192       deprecated="not deprecated">
   5193       <param name="title" type="java.lang.String"/>
   5194     </method>
   5195     <method name="getSubtitles" return="java.util.List&lt;java.lang.String&gt;"
   5196       abstract="false" native="false" synchronized="false"
   5197       static="false" final="false" visibility="public"
   5198       deprecated="not deprecated">
   5199     </method>
   5200     <method name="addSubtitle"
   5201       abstract="false" native="false" synchronized="false"
   5202       static="false" final="false" visibility="public"
   5203       deprecated="not deprecated">
   5204       <param name="position" type="int"/>
   5205       <param name="subtitle" type="java.lang.String"/>
   5206     </method>
   5207     <method name="getHeaderTextColor" return="java.lang.String"
   5208       abstract="false" native="false" synchronized="false"
   5209       static="false" final="false" visibility="public"
   5210       deprecated="not deprecated">
   5211     </method>
   5212     <method name="setHeaderTextColor"
   5213       abstract="false" native="false" synchronized="false"
   5214       static="false" final="false" visibility="public"
   5215       deprecated="not deprecated">
   5216       <param name="headerTextColor" type="java.lang.String"/>
   5217     </method>
   5218     <method name="getHeaderBackgroundColor" return="java.lang.String"
   5219       abstract="false" native="false" synchronized="false"
   5220       static="false" final="false" visibility="public"
   5221       deprecated="not deprecated">
   5222     </method>
   5223     <method name="setHeaderBackgroundColor"
   5224       abstract="false" native="false" synchronized="false"
   5225       static="false" final="false" visibility="public"
   5226       deprecated="not deprecated">
   5227       <param name="headerBackgroundColor" type="java.lang.String"/>
   5228     </method>
   5229     <method name="addField"
   5230       abstract="false" native="false" synchronized="false"
   5231       static="false" final="false" visibility="public"
   5232       deprecated="not deprecated">
   5233       <param name="portId" type="java.lang.String"/>
   5234       <param name="title" type="java.lang.String"/>
   5235     </method>
   5236     <method name="getFields" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5237       abstract="false" native="false" synchronized="false"
   5238       static="false" final="false" visibility="public"
   5239       deprecated="not deprecated">
   5240     </method>
   5241     <method name="getIdentifier" return="java.lang.String"
   5242       abstract="false" native="false" synchronized="false"
   5243       static="false" final="false" visibility="public"
   5244       deprecated="not deprecated">
   5245       <doc>
   5246       <![CDATA[@since 4.0]]>
   5247       </doc>
   5248     </method>
   5249     <method name="setIdentifier"
   5250       abstract="false" native="false" synchronized="false"
   5251       static="false" final="false" visibility="public"
   5252       deprecated="not deprecated">
   5253       <param name="identifier" type="java.lang.String"/>
   5254       <doc>
   5255       <![CDATA[@since 4.0]]>
   5256       </doc>
   5257     </method>
   5258     <doc>
   5259     <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're
   5260  interested in drawing.
   5261 
   5262  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5263     </doc>
   5264   </class>
   5265   <!-- end class com.google.inject.grapher.graphviz.GraphvizNode -->
   5266   <!-- start class com.google.inject.grapher.graphviz.NodeShape -->
   5267   <class name="NodeShape" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeShape&gt;"
   5268     abstract="false"
   5269     static="false" final="true" visibility="public"
   5270     deprecated="not deprecated">
   5271     <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]"
   5272       abstract="false" native="false" synchronized="false"
   5273       static="true" final="false" visibility="public"
   5274       deprecated="not deprecated">
   5275     </method>
   5276     <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape"
   5277       abstract="false" native="false" synchronized="false"
   5278       static="true" final="false" visibility="public"
   5279       deprecated="not deprecated">
   5280       <param name="name" type="java.lang.String"/>
   5281     </method>
   5282     <method name="toString" return="java.lang.String"
   5283       abstract="false" native="false" synchronized="false"
   5284       static="false" final="false" visibility="public"
   5285       deprecated="not deprecated">
   5286     </method>
   5287     <doc>
   5288     <![CDATA[Enum for the shapes that are most interesting for Guice graphing.
   5289  <p>
   5290  See: http://www.graphviz.org/doc/info/shapes.html
   5291  
   5292  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5293     </doc>
   5294   </class>
   5295   <!-- end class com.google.inject.grapher.graphviz.NodeShape -->
   5296   <!-- start class com.google.inject.grapher.graphviz.NodeStyle -->
   5297   <class name="NodeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeStyle&gt;"
   5298     abstract="false"
   5299     static="false" final="true" visibility="public"
   5300     deprecated="not deprecated">
   5301     <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]"
   5302       abstract="false" native="false" synchronized="false"
   5303       static="true" final="false" visibility="public"
   5304       deprecated="not deprecated">
   5305     </method>
   5306     <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle"
   5307       abstract="false" native="false" synchronized="false"
   5308       static="true" final="false" visibility="public"
   5309       deprecated="not deprecated">
   5310       <param name="name" type="java.lang.String"/>
   5311     </method>
   5312     <method name="toString" return="java.lang.String"
   5313       abstract="false" native="false" synchronized="false"
   5314       static="false" final="false" visibility="public"
   5315       deprecated="not deprecated">
   5316     </method>
   5317     <doc>
   5318     <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options.
   5319  <p>
   5320  See: http://www.graphviz.org/doc/info/attrs.html#k:style
   5321 
   5322  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5323     </doc>
   5324   </class>
   5325   <!-- end class com.google.inject.grapher.graphviz.NodeStyle -->
   5326   <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory -->
   5327   <interface name="PortIdFactory"    abstract="true"
   5328     static="false" final="false" visibility="public"
   5329     deprecated="not deprecated">
   5330     <method name="getPortId" return="java.lang.String"
   5331       abstract="true" native="false" synchronized="false"
   5332       static="false" final="false" visibility="public"
   5333       deprecated="not deprecated">
   5334       <param name="member" type="java.lang.reflect.Member"/>
   5335     </method>
   5336     <doc>
   5337     <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the
   5338  rows in {@link com.google.inject.grapher.ImplementationNode}-displaying {@link GraphvizNode}s.
   5339 
   5340  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5341     </doc>
   5342   </interface>
   5343   <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory -->
   5344   <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
   5345   <class name="PortIdFactoryImpl" extends="java.lang.Object"
   5346     abstract="false"
   5347     static="false" final="false" visibility="public"
   5348     deprecated="not deprecated">
   5349     <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/>
   5350     <constructor name="PortIdFactoryImpl"
   5351       static="false" final="false" visibility="public"
   5352       deprecated="not deprecated">
   5353     </constructor>
   5354     <method name="getPortId" return="java.lang.String"
   5355       abstract="false" native="false" synchronized="false"
   5356       static="false" final="false" visibility="public"
   5357       deprecated="not deprecated">
   5358       <param name="member" type="java.lang.reflect.Member"/>
   5359     </method>
   5360     <doc>
   5361     <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}.
   5362 
   5363  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5364     </doc>
   5365   </class>
   5366   <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
   5367 </package>
   5368 <package name="com.google.inject.jndi">
   5369   <!-- start class com.google.inject.jndi.JndiIntegration -->
   5370   <class name="JndiIntegration" extends="java.lang.Object"
   5371     abstract="false"
   5372     static="false" final="false" visibility="public"
   5373     deprecated="not deprecated">
   5374     <method name="fromJndi" return="com.google.inject.Provider&lt;T&gt;"
   5375       abstract="false" native="false" synchronized="false"
   5376       static="true" final="false" visibility="public"
   5377       deprecated="not deprecated">
   5378       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5379       <param name="name" type="java.lang.String"/>
   5380       <doc>
   5381       <![CDATA[Creates a provider which looks up objects in JNDI using the given name.
   5382  Example usage:
   5383 
   5384  <pre>
   5385  bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:..."));
   5386  </pre>]]>
   5387       </doc>
   5388     </method>
   5389     <doc>
   5390     <![CDATA[Integrates Guice with JNDI. Requires a binding to 
   5391  {@link javax.naming.Context}.
   5392 
   5393  @author crazybob (a] google.com (Bob Lee)]]>
   5394     </doc>
   5395   </class>
   5396   <!-- end class com.google.inject.jndi.JndiIntegration -->
   5397 </package>
   5398 <package name="com.google.inject.matcher">
   5399   <!-- start class com.google.inject.matcher.AbstractMatcher -->
   5400   <class name="AbstractMatcher" extends="java.lang.Object"
   5401     abstract="true"
   5402     static="false" final="false" visibility="public"
   5403     deprecated="not deprecated">
   5404     <implements name="com.google.inject.matcher.Matcher&lt;T&gt;"/>
   5405     <constructor name="AbstractMatcher"
   5406       static="false" final="false" visibility="public"
   5407       deprecated="not deprecated">
   5408     </constructor>
   5409     <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5410       abstract="false" native="false" synchronized="false"
   5411       static="false" final="false" visibility="public"
   5412       deprecated="not deprecated">
   5413       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5414     </method>
   5415     <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5416       abstract="false" native="false" synchronized="false"
   5417       static="false" final="false" visibility="public"
   5418       deprecated="not deprecated">
   5419       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5420     </method>
   5421     <doc>
   5422     <![CDATA[Implements {@code and()} and {@code or()}.
   5423 
   5424  @author crazybob (a] google.com (Bob Lee)]]>
   5425     </doc>
   5426   </class>
   5427   <!-- end class com.google.inject.matcher.AbstractMatcher -->
   5428   <!-- start interface com.google.inject.matcher.Matcher -->
   5429   <interface name="Matcher"    abstract="true"
   5430     static="false" final="false" visibility="public"
   5431     deprecated="not deprecated">
   5432     <method name="matches" return="boolean"
   5433       abstract="true" native="false" synchronized="false"
   5434       static="false" final="false" visibility="public"
   5435       deprecated="not deprecated">
   5436       <param name="t" type="T"/>
   5437       <doc>
   5438       <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]>
   5439       </doc>
   5440     </method>
   5441     <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5442       abstract="true" native="false" synchronized="false"
   5443       static="false" final="false" visibility="public"
   5444       deprecated="not deprecated">
   5445       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5446       <doc>
   5447       <![CDATA[Returns a new matcher which returns {@code true} if both this and the
   5448  given matcher return {@code true}.]]>
   5449       </doc>
   5450     </method>
   5451     <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5452       abstract="true" native="false" synchronized="false"
   5453       static="false" final="false" visibility="public"
   5454       deprecated="not deprecated">
   5455       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5456       <doc>
   5457       <![CDATA[Returns a new matcher which returns {@code true} if either this or the
   5458  given matcher return {@code true}.]]>
   5459       </doc>
   5460     </method>
   5461     <doc>
   5462     <![CDATA[Returns {@code true} or {@code false} for a given input.
   5463 
   5464  @author crazybob (a] google.com (Bob Lee)]]>
   5465     </doc>
   5466   </interface>
   5467   <!-- end interface com.google.inject.matcher.Matcher -->
   5468   <!-- start class com.google.inject.matcher.Matchers -->
   5469   <class name="Matchers" extends="java.lang.Object"
   5470     abstract="false"
   5471     static="false" final="false" visibility="public"
   5472     deprecated="not deprecated">
   5473     <method name="any" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5474       abstract="false" native="false" synchronized="false"
   5475       static="true" final="false" visibility="public"
   5476       deprecated="not deprecated">
   5477       <doc>
   5478       <![CDATA[Returns a matcher which matches any input.]]>
   5479       </doc>
   5480     </method>
   5481     <method name="not" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5482       abstract="false" native="false" synchronized="false"
   5483       static="true" final="false" visibility="public"
   5484       deprecated="not deprecated">
   5485       <param name="p" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5486       <doc>
   5487       <![CDATA[Inverts the given matcher.]]>
   5488       </doc>
   5489     </method>
   5490     <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
   5491       abstract="false" native="false" synchronized="false"
   5492       static="true" final="false" visibility="public"
   5493       deprecated="not deprecated">
   5494       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5495       <doc>
   5496       <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
   5497  with a given annotation.]]>
   5498       </doc>
   5499     </method>
   5500     <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
   5501       abstract="false" native="false" synchronized="false"
   5502       static="true" final="false" visibility="public"
   5503       deprecated="not deprecated">
   5504       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5505       <doc>
   5506       <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
   5507  with a given annotation.]]>
   5508       </doc>
   5509     </method>
   5510     <method name="subclassesOf" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5511       abstract="false" native="false" synchronized="false"
   5512       static="true" final="false" visibility="public"
   5513       deprecated="not deprecated">
   5514       <param name="superclass" type="java.lang.Class&lt;?&gt;"/>
   5515       <doc>
   5516       <![CDATA[Returns a matcher which matches subclasses of the given type (as well as
   5517  the given type).]]>
   5518       </doc>
   5519     </method>
   5520     <method name="only" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5521       abstract="false" native="false" synchronized="false"
   5522       static="true" final="false" visibility="public"
   5523       deprecated="not deprecated">
   5524       <param name="value" type="java.lang.Object"/>
   5525       <doc>
   5526       <![CDATA[Returns a matcher which matches objects equal to the given object.]]>
   5527       </doc>
   5528     </method>
   5529     <method name="identicalTo" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5530       abstract="false" native="false" synchronized="false"
   5531       static="true" final="false" visibility="public"
   5532       deprecated="not deprecated">
   5533       <param name="value" type="java.lang.Object"/>
   5534       <doc>
   5535       <![CDATA[Returns a matcher which matches only the given object.]]>
   5536       </doc>
   5537     </method>
   5538     <method name="inPackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5539       abstract="false" native="false" synchronized="false"
   5540       static="true" final="false" visibility="public"
   5541       deprecated="not deprecated">
   5542       <param name="targetPackage" type="java.lang.Package"/>
   5543       <doc>
   5544       <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their
   5545  classloader, so classes with the same package name may not have the same package at runtime.]]>
   5546       </doc>
   5547     </method>
   5548     <method name="inSubpackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5549       abstract="false" native="false" synchronized="false"
   5550       static="true" final="false" visibility="public"
   5551       deprecated="not deprecated">
   5552       <param name="targetPackageName" type="java.lang.String"/>
   5553       <doc>
   5554       <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike
   5555  {@link #inPackage(Package) inPackage()}, this matches classes from any classloader.
   5556  
   5557  @since 2.0]]>
   5558       </doc>
   5559     </method>
   5560     <method name="returns" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.Method&gt;"
   5561       abstract="false" native="false" synchronized="false"
   5562       static="true" final="false" visibility="public"
   5563       deprecated="not deprecated">
   5564       <param name="returnType" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
   5565       <doc>
   5566       <![CDATA[Returns a matcher which matches methods with matching return types.]]>
   5567       </doc>
   5568     </method>
   5569     <doc>
   5570     <![CDATA[Matcher implementations. Supports matching classes and methods.
   5571 
   5572  @author crazybob (a] google.com (Bob Lee)]]>
   5573     </doc>
   5574   </class>
   5575   <!-- end class com.google.inject.matcher.Matchers -->
   5576 </package>
   5577 <package name="com.google.inject.multibindings">
   5578   <!-- start class com.google.inject.multibindings.ClassMapKey -->
   5579   <class name="ClassMapKey"    abstract="true"
   5580     static="false" final="false" visibility="public"
   5581     deprecated="not deprecated">
   5582     <implements name="java.lang.annotation.Annotation"/>
   5583     <doc>
   5584     <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a class map key.
   5585 
   5586  @since 4.0]]>
   5587     </doc>
   5588   </class>
   5589   <!-- end class com.google.inject.multibindings.ClassMapKey -->
   5590   <!-- start class com.google.inject.multibindings.MapBinder -->
   5591   <class name="MapBinder" extends="java.lang.Object"
   5592     abstract="true"
   5593     static="false" final="false" visibility="public"
   5594     deprecated="not deprecated">
   5595     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5596       abstract="false" native="false" synchronized="false"
   5597       static="true" final="false" visibility="public"
   5598       deprecated="not deprecated">
   5599       <param name="binder" type="com.google.inject.Binder"/>
   5600       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5601       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5602       <doc>
   5603       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5604  {@link Map} that is itself bound with no binding annotation.]]>
   5605       </doc>
   5606     </method>
   5607     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5608       abstract="false" native="false" synchronized="false"
   5609       static="true" final="false" visibility="public"
   5610       deprecated="not deprecated">
   5611       <param name="binder" type="com.google.inject.Binder"/>
   5612       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5613       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5614       <doc>
   5615       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5616  {@link Map} that is itself bound with no binding annotation.]]>
   5617       </doc>
   5618     </method>
   5619     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5620       abstract="false" native="false" synchronized="false"
   5621       static="true" final="false" visibility="public"
   5622       deprecated="not deprecated">
   5623       <param name="binder" type="com.google.inject.Binder"/>
   5624       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5625       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5626       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5627       <doc>
   5628       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5629  {@link Map} that is itself bound with {@code annotation}.]]>
   5630       </doc>
   5631     </method>
   5632     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5633       abstract="false" native="false" synchronized="false"
   5634       static="true" final="false" visibility="public"
   5635       deprecated="not deprecated">
   5636       <param name="binder" type="com.google.inject.Binder"/>
   5637       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5638       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5639       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5640       <doc>
   5641       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5642  {@link Map} that is itself bound with {@code annotation}.]]>
   5643       </doc>
   5644     </method>
   5645     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5646       abstract="false" native="false" synchronized="false"
   5647       static="true" final="false" visibility="public"
   5648       deprecated="not deprecated">
   5649       <param name="binder" type="com.google.inject.Binder"/>
   5650       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5651       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5652       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5653       <doc>
   5654       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5655  {@link Map} that is itself bound with {@code annotationType}.]]>
   5656       </doc>
   5657     </method>
   5658     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5659       abstract="false" native="false" synchronized="false"
   5660       static="true" final="false" visibility="public"
   5661       deprecated="not deprecated">
   5662       <param name="binder" type="com.google.inject.Binder"/>
   5663       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5664       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5665       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5666       <doc>
   5667       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5668  {@link Map} that is itself bound with {@code annotationType}.]]>
   5669       </doc>
   5670     </method>
   5671     <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5672       abstract="true" native="false" synchronized="false"
   5673       static="false" final="false" visibility="public"
   5674       deprecated="not deprecated">
   5675       <doc>
   5676       <![CDATA[Configures the {@code MapBinder} to handle duplicate entries.
   5677  <p>When multiple equal keys are bound, the value that gets included in the map is
   5678  arbitrary.
   5679  <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>}
   5680  maps that are normally bound, a {@code Map<K, Set<V>>} and
   5681  {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain
   5682  all values bound to each key.
   5683  <p>
   5684  When multiple modules contribute elements to the map, this configuration
   5685  option impacts all of them.
   5686 
   5687  @return this map binder
   5688  @since 3.0]]>
   5689       </doc>
   5690     </method>
   5691     <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;V&gt;"
   5692       abstract="true" native="false" synchronized="false"
   5693       static="false" final="false" visibility="public"
   5694       deprecated="not deprecated">
   5695       <param name="key" type="K"/>
   5696       <doc>
   5697       <![CDATA[Returns a binding builder used to add a new entry in the map. Each
   5698  key must be distinct (and non-null). Bound providers will be evaluated each
   5699  time the map is injected.
   5700 
   5701  <p>It is an error to call this method without also calling one of the
   5702  {@code to} methods on the returned binding builder.
   5703 
   5704  <p>Scoping elements independently is supported. Use the {@code in} method
   5705  to specify a binding scope.]]>
   5706       </doc>
   5707     </method>
   5708     <doc>
   5709     <![CDATA[An API to bind multiple map entries separately, only to later inject them as
   5710  a complete map. MapBinder is intended for use in your application's module:
   5711  <pre><code>
   5712  public class SnacksModule extends AbstractModule {
   5713    protected void configure() {
   5714      MapBinder&lt;String, Snack&gt; mapbinder
   5715          = MapBinder.newMapBinder(binder(), String.class, Snack.class);
   5716      mapbinder.addBinding("twix").toInstance(new Twix());
   5717      mapbinder.addBinding("snickers").toProvider(SnickersProvider.class);
   5718      mapbinder.addBinding("skittles").to(Skittles.class);
   5719    }
   5720  }</code></pre>
   5721 
   5722  <p>With this binding, a {@link Map}{@code <String, Snack>} can now be
   5723  injected:
   5724  <pre><code>
   5725  class SnackMachine {
   5726    {@literal @}Inject
   5727    public SnackMachine(Map&lt;String, Snack&gt; snacks) { ... }
   5728  }</code></pre>
   5729 
   5730  <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind
   5731  {@code Map<K, Provider<V>>} for lazy value provision:
   5732  <pre><code>
   5733  class SnackMachine {
   5734    {@literal @}Inject
   5735    public SnackMachine(Map&lt;String, Provider&lt;Snack&gt;&gt; snackProviders) { ... }
   5736  }</code></pre>
   5737 
   5738  <p>Contributing mapbindings from different modules is supported. For example,
   5739  it is okay to have both {@code CandyModule} and {@code ChipsModule} both
   5740  create their own {@code MapBinder<String, Snack>}, and to each contribute
   5741  bindings to the snacks map. When that map is injected, it will contain
   5742  entries from both modules.
   5743 
   5744  <p>The map's iteration order is consistent with the binding order. This is
   5745  convenient when multiple elements are contributed by the same module because
   5746  that module can order its bindings appropriately. Avoid relying on the
   5747  iteration order of elements contributed by different modules, since there is
   5748  no equivalent mechanism to order modules.
   5749 
   5750  <p>The map is unmodifiable.  Elements can only be added to the map by
   5751  configuring the MapBinder.  Elements can never be removed from the map.
   5752 
   5753  <p>Values are resolved at map injection time. If a value is bound to a
   5754  provider, that provider's get method will be called each time the map is
   5755  injected (unless the binding is also scoped, or a map of providers is injected).
   5756 
   5757  <p>Annotations are used to create different maps of the same key/value
   5758  type. Each distinct annotation gets its own independent map.
   5759 
   5760  <p><strong>Keys must be distinct.</strong> If the same key is bound more than
   5761  once, map injection will fail. However, use {@link #permitDuplicates()} in
   5762  order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and
   5763  {@code Map<K, Set<Provider<V>>} will be added.
   5764 
   5765  <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will
   5766  throw an unchecked exception.
   5767 
   5768  <p><strong>Values must be non-null to use map injection.</strong> If any
   5769  value is null, map injection will fail (although injecting a map of providers
   5770  will not).
   5771 
   5772  @author dpb (a] google.com (David P. Baker)]]>
   5773     </doc>
   5774   </class>
   5775   <!-- end class com.google.inject.multibindings.MapBinder -->
   5776   <!-- start interface com.google.inject.multibindings.MapBinderBinding -->
   5777   <interface name="MapBinderBinding"    abstract="true"
   5778     static="false" final="false" visibility="public"
   5779     deprecated="not deprecated">
   5780     <method name="getMapKey" return="com.google.inject.Key&lt;T&gt;"
   5781       abstract="true" native="false" synchronized="false"
   5782       static="false" final="false" visibility="public"
   5783       deprecated="not deprecated">
   5784       <doc>
   5785       <![CDATA[Returns the {@link Key} for the map.]]>
   5786       </doc>
   5787     </method>
   5788     <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5789       abstract="true" native="false" synchronized="false"
   5790       static="false" final="false" visibility="public"
   5791       deprecated="not deprecated">
   5792       <doc>
   5793       <![CDATA[Returns the TypeLiteral describing the keys of the map.
   5794  <p>
   5795  The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
   5796  returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
   5797  <code>TypeLiteral&lt;String></code>.]]>
   5798       </doc>
   5799     </method>
   5800     <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5801       abstract="true" native="false" synchronized="false"
   5802       static="false" final="false" visibility="public"
   5803       deprecated="not deprecated">
   5804       <doc>
   5805       <![CDATA[Returns the TypeLiteral describing the values of the map.
   5806  <p>
   5807  The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
   5808  returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
   5809  <code>TypeLiteral&lt;Snack></code>.]]>
   5810       </doc>
   5811     </method>
   5812     <method name="getEntries" return="java.util.List&lt;java.util.Map.Entry&lt;?, com.google.inject.Binding&lt;?&gt;&gt;&gt;"
   5813       abstract="true" native="false" synchronized="false"
   5814       static="false" final="false" visibility="public"
   5815       deprecated="not deprecated">
   5816       <doc>
   5817       <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding
   5818  to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list.
   5819  This is only supported on bindings returned from an injector. This will throw
   5820  {@link UnsupportedOperationException} if it is called on an element retrieved from
   5821  {@link Elements#getElements}.
   5822  <p>
   5823  The elements will always match the type Map's generic type. For example, if getMapKey returns a
   5824  key of <code>Map&lt;String, Snack></code>, then this will always return a list of type
   5825  <code>List&lt;Map.Entry&lt;String, Binding&lt;Snack>>></code>.]]>
   5826       </doc>
   5827     </method>
   5828     <method name="permitsDuplicates" return="boolean"
   5829       abstract="true" native="false" synchronized="false"
   5830       static="false" final="false" visibility="public"
   5831       deprecated="not deprecated">
   5832       <doc>
   5833       <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned
   5834  from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
   5835  MapBinderBinding retrieved from {@link Elements#getElements}.]]>
   5836       </doc>
   5837     </method>
   5838     <method name="containsElement" return="boolean"
   5839       abstract="true" native="false" synchronized="false"
   5840       static="false" final="false" visibility="public"
   5841       deprecated="not deprecated">
   5842       <param name="element" type="com.google.inject.spi.Element"/>
   5843       <doc>
   5844       <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the
   5845  given Element in order to support building and injecting the map. This will work for
   5846  MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is
   5847  only necessary if you are working with elements retrieved from modules (without an Injector),
   5848  otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options.
   5849  <p>
   5850  If you need to introspect the details of the map, such as the keys, values or if it permits
   5851  duplicates, it is necessary to pass the elements through an Injector and use
   5852  {@link #getEntries()} and {@link #permitsDuplicates()}.]]>
   5853       </doc>
   5854     </method>
   5855     <doc>
   5856     <![CDATA[A binding for a MapBinder.
   5857  <p>
   5858  Although MapBinders may be injected through a variety of generic types (Map&lt;K, V>, Map
   5859  &lt;K, Provider&lt;V>>, Map&lt;K, Set&lt;V>>, Map<K, Set&lt;
   5860  Provider&lt;V>>, and even Set&lt;Map.Entry&lt;K, Provider&lt;V>>), a
   5861  MapBinderBinding exists only on the Binding associated with the Map&lt;K, V> key. Other
   5862  bindings can be validated to be derived from this MapBinderBinding using
   5863  {@link #containsElement(Element)}.
   5864  
   5865  @param <T> The fully qualified type of the map, including Map. For example:
   5866           <code>MapBinderBinding&lt;Map&lt;String, Snack>></code>
   5867  
   5868  @since 3.0
   5869  @author sameb (a] google.com (Sam Berlin)]]>
   5870     </doc>
   5871   </interface>
   5872   <!-- end interface com.google.inject.multibindings.MapBinderBinding -->
   5873   <!-- start class com.google.inject.multibindings.MapKey -->
   5874   <class name="MapKey"    abstract="true"
   5875     static="false" final="false" visibility="public"
   5876     deprecated="not deprecated">
   5877     <implements name="java.lang.annotation.Annotation"/>
   5878     <doc>
   5879     <![CDATA[Allows users define customized key type annotations for map bindings by annotating an annotation
   5880  of a {@code Map}'s key type. The custom key annotation can be applied to methods also annotated
   5881  with {@literal @}{@link ProvidesIntoMap}.
   5882  
   5883  <p>A {@link StringMapKey} and {@link ClassMapKey} are provided for convenience with maps whose
   5884  keys are strings or classes. For maps with enums or primitive types as keys, you must provide
   5885  your own MapKey annotation, such as this one for an enum:
   5886 
   5887  <pre>
   5888  {@literal @}MapKey(unwrapValue = true)
   5889  {@literal @}Retention(RUNTIME)
   5890  public {@literal @}interface MyCustomEnumKey {
   5891    MyCustomEnum value();
   5892  }
   5893  </pre>
   5894 
   5895  You can also use the whole annotation as the key, if {@code unwrapValue=false}.
   5896  When unwrapValue is false, the annotation type will be the key type for the injected map and
   5897  the annotation instances will be the key values. If {@code unwrapValue=true}, the value() type
   5898  will be the key type for injected map and the value() instances will be the keys values.
   5899 
   5900  @since 4.0]]>
   5901     </doc>
   5902   </class>
   5903   <!-- end class com.google.inject.multibindings.MapKey -->
   5904   <!-- start class com.google.inject.multibindings.Multibinder -->
   5905   <class name="Multibinder" extends="java.lang.Object"
   5906     abstract="true"
   5907     static="false" final="false" visibility="public"
   5908     deprecated="not deprecated">
   5909     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5910       abstract="false" native="false" synchronized="false"
   5911       static="true" final="false" visibility="public"
   5912       deprecated="not deprecated">
   5913       <param name="binder" type="com.google.inject.Binder"/>
   5914       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5915       <doc>
   5916       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5917  itself bound with no binding annotation.]]>
   5918       </doc>
   5919     </method>
   5920     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5921       abstract="false" native="false" synchronized="false"
   5922       static="true" final="false" visibility="public"
   5923       deprecated="not deprecated">
   5924       <param name="binder" type="com.google.inject.Binder"/>
   5925       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5926       <doc>
   5927       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5928  itself bound with no binding annotation.]]>
   5929       </doc>
   5930     </method>
   5931     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5932       abstract="false" native="false" synchronized="false"
   5933       static="true" final="false" visibility="public"
   5934       deprecated="not deprecated">
   5935       <param name="binder" type="com.google.inject.Binder"/>
   5936       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5937       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5938       <doc>
   5939       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5940  itself bound with {@code annotation}.]]>
   5941       </doc>
   5942     </method>
   5943     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5944       abstract="false" native="false" synchronized="false"
   5945       static="true" final="false" visibility="public"
   5946       deprecated="not deprecated">
   5947       <param name="binder" type="com.google.inject.Binder"/>
   5948       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5949       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5950       <doc>
   5951       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5952  itself bound with {@code annotation}.]]>
   5953       </doc>
   5954     </method>
   5955     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5956       abstract="false" native="false" synchronized="false"
   5957       static="true" final="false" visibility="public"
   5958       deprecated="not deprecated">
   5959       <param name="binder" type="com.google.inject.Binder"/>
   5960       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5961       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5962       <doc>
   5963       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5964  itself bound with {@code annotationType}.]]>
   5965       </doc>
   5966     </method>
   5967     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5968       abstract="false" native="false" synchronized="false"
   5969       static="true" final="false" visibility="public"
   5970       deprecated="not deprecated">
   5971       <param name="binder" type="com.google.inject.Binder"/>
   5972       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   5973       <doc>
   5974       <![CDATA[Returns a new multibinder that collects instances of the key's type in a {@link Set} that is
   5975  itself bound with the annotation (if any) of the key.
   5976 
   5977  @since 4.0]]>
   5978       </doc>
   5979     </method>
   5980     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5981       abstract="false" native="false" synchronized="false"
   5982       static="true" final="false" visibility="public"
   5983       deprecated="not deprecated">
   5984       <param name="binder" type="com.google.inject.Binder"/>
   5985       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5986       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5987       <doc>
   5988       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5989  itself bound with {@code annotationType}.]]>
   5990       </doc>
   5991     </method>
   5992     <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5993       abstract="true" native="false" synchronized="false"
   5994       static="false" final="false" visibility="public"
   5995       deprecated="not deprecated">
   5996       <doc>
   5997       <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are
   5998  bound, the one that gets included is arbitrary. When multiple modules contribute elements to
   5999  the set, this configuration option impacts all of them.
   6000 
   6001  @return this multibinder
   6002  @since 3.0]]>
   6003       </doc>
   6004     </method>
   6005     <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   6006       abstract="true" native="false" synchronized="false"
   6007       static="false" final="false" visibility="public"
   6008       deprecated="not deprecated">
   6009       <doc>
   6010       <![CDATA[Returns a binding builder used to add a new element in the set. Each
   6011  bound element must have a distinct value. Bound providers will be
   6012  evaluated each time the set is injected.
   6013 
   6014  <p>It is an error to call this method without also calling one of the
   6015  {@code to} methods on the returned binding builder.
   6016 
   6017  <p>Scoping elements independently is supported. Use the {@code in} method
   6018  to specify a binding scope.]]>
   6019       </doc>
   6020     </method>
   6021     <doc>
   6022     <![CDATA[An API to bind multiple values separately, only to later inject them as a
   6023  complete collection. Multibinder is intended for use in your application's
   6024  module:
   6025  <pre><code>
   6026  public class SnacksModule extends AbstractModule {
   6027    protected void configure() {
   6028      Multibinder&lt;Snack&gt; multibinder
   6029          = Multibinder.newSetBinder(binder(), Snack.class);
   6030      multibinder.addBinding().toInstance(new Twix());
   6031      multibinder.addBinding().toProvider(SnickersProvider.class);
   6032      multibinder.addBinding().to(Skittles.class);
   6033    }
   6034  }</code></pre>
   6035 
   6036  <p>With this binding, a {@link Set}{@code <Snack>} can now be injected:
   6037  <pre><code>
   6038  class SnackMachine {
   6039    {@literal @}Inject
   6040    public SnackMachine(Set&lt;Snack&gt; snacks) { ... }
   6041  }</code></pre>
   6042 
   6043  If desired, {@link Collection}{@code <Provider<Snack>>} can also be injected.
   6044 
   6045  <p>Contributing multibindings from different modules is supported. For
   6046  example, it is okay for both {@code CandyModule} and {@code ChipsModule}
   6047  to create their own {@code Multibinder<Snack>}, and to each contribute
   6048  bindings to the set of snacks. When that set is injected, it will contain
   6049  elements from both modules.
   6050 
   6051  <p>The set's iteration order is consistent with the binding order. This is
   6052  convenient when multiple elements are contributed by the same module because
   6053  that module can order its bindings appropriately. Avoid relying on the
   6054  iteration order of elements contributed by different modules, since there is
   6055  no equivalent mechanism to order modules.
   6056 
   6057  <p>The set is unmodifiable.  Elements can only be added to the set by
   6058  configuring the multibinder.  Elements can never be removed from the set.
   6059 
   6060  <p>Elements are resolved at set injection time. If an element is bound to a
   6061  provider, that provider's get method will be called each time the set is
   6062  injected (unless the binding is also scoped).
   6063 
   6064  <p>Annotations are be used to create different sets of the same element
   6065  type. Each distinct annotation gets its own independent collection of
   6066  elements.
   6067 
   6068  <p><strong>Elements must be distinct.</strong> If multiple bound elements
   6069  have the same value, set injection will fail.
   6070 
   6071  <p><strong>Elements must be non-null.</strong> If any set element is null,
   6072  set injection will fail.
   6073 
   6074  @author jessewilson (a] google.com (Jesse Wilson)]]>
   6075     </doc>
   6076   </class>
   6077   <!-- end class com.google.inject.multibindings.Multibinder -->
   6078   <!-- start interface com.google.inject.multibindings.MultibinderBinding -->
   6079   <interface name="MultibinderBinding"    abstract="true"
   6080     static="false" final="false" visibility="public"
   6081     deprecated="not deprecated">
   6082     <method name="getSetKey" return="com.google.inject.Key&lt;T&gt;"
   6083       abstract="true" native="false" synchronized="false"
   6084       static="false" final="false" visibility="public"
   6085       deprecated="not deprecated">
   6086       <doc>
   6087       <![CDATA[Returns the key for the set.]]>
   6088       </doc>
   6089     </method>
   6090     <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   6091       abstract="true" native="false" synchronized="false"
   6092       static="false" final="false" visibility="public"
   6093       deprecated="not deprecated">
   6094       <doc>
   6095       <![CDATA[Returns the TypeLiteral that describes the type of elements in the set.
   6096  <p>
   6097  The elements will always match the type Set's generic type. For example, if getSetKey returns a
   6098  key of <code>Set&lt;String></code>, then this will always return a
   6099  <code>TypeLiteral&lt;String></code>.]]>
   6100       </doc>
   6101     </method>
   6102     <method name="getElements" return="java.util.List&lt;com.google.inject.Binding&lt;?&gt;&gt;"
   6103       abstract="true" native="false" synchronized="false"
   6104       static="false" final="false" visibility="public"
   6105       deprecated="not deprecated">
   6106       <doc>
   6107       <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an
   6108  injector. This will throw {@link UnsupportedOperationException} if it is called on an element
   6109  retrieved from {@link Elements#getElements}.
   6110  <p>
   6111  The elements will always match the type Set's generic type. For example, if getSetKey returns a
   6112  key of <code>Set&lt;String></code>, then this will always return a list of type
   6113  <code>List&lt;Binding&lt;String>></code>.]]>
   6114       </doc>
   6115     </method>
   6116     <method name="permitsDuplicates" return="boolean"
   6117       abstract="true" native="false" synchronized="false"
   6118       static="false" final="false" visibility="public"
   6119       deprecated="not deprecated">
   6120       <doc>
   6121       <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned
   6122  from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
   6123  MultibinderBinding retrieved from {@link Elements#getElements}.]]>
   6124       </doc>
   6125     </method>
   6126     <method name="containsElement" return="boolean"
   6127       abstract="true" native="false" synchronized="false"
   6128       static="false" final="false" visibility="public"
   6129       deprecated="not deprecated">
   6130       <param name="element" type="com.google.inject.spi.Element"/>
   6131       <doc>
   6132       <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that
   6133  derive the elements of the set and other bindings that Multibinder uses internally. This will
   6134  work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}.
   6135  Usually this is only necessary if you are working with elements retrieved from modules (without
   6136  an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options.
   6137  <p>
   6138  If you need to introspect the details of the set, such as the values or if it permits
   6139  duplicates, it is necessary to pass the elements through an Injector and use
   6140  {@link #getElements()} and {@link #permitsDuplicates()}.]]>
   6141       </doc>
   6142     </method>
   6143     <doc>
   6144     <![CDATA[A binding for a Multibinder.
   6145  
   6146  @param <T> The fully qualified type of the set, including Set. For example:
   6147           <code>MultibinderBinding&lt;Set&lt;Boolean>></code>
   6148  
   6149  @since 3.0
   6150  @author sameb (a] google.com (Sam Berlin)]]>
   6151     </doc>
   6152   </interface>
   6153   <!-- end interface com.google.inject.multibindings.MultibinderBinding -->
   6154   <!-- start class com.google.inject.multibindings.MultibindingsScanner -->
   6155   <class name="MultibindingsScanner" extends="java.lang.Object"
   6156     abstract="false"
   6157     static="false" final="false" visibility="public"
   6158     deprecated="not deprecated">
   6159     <method name="asModule" return="com.google.inject.Module"
   6160       abstract="false" native="false" synchronized="false"
   6161       static="true" final="false" visibility="public"
   6162       deprecated="not deprecated">
   6163       <doc>
   6164       <![CDATA[Returns a module that, when installed, will scan all modules for methods with the annotations
   6165  {@literal @}{@link ProvidesIntoMap}, {@literal @}{@link ProvidesIntoSet}, and
   6166  {@literal @}{@link ProvidesIntoOptional}.
   6167  
   6168  <p>This is a convenience method, equivalent to doing
   6169  {@code binder().scanModulesForAnnotatedMethods(MultibindingsScanner.scanner())}.]]>
   6170       </doc>
   6171     </method>
   6172     <method name="scanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner"
   6173       abstract="false" native="false" synchronized="false"
   6174       static="true" final="false" visibility="public"
   6175       deprecated="not deprecated">
   6176       <doc>
   6177       <![CDATA[Returns a {@link ModuleAnnotatedMethodScanner} that, when bound, will scan all modules for
   6178  methods with the annotations {@literal @}{@link ProvidesIntoMap},
   6179  {@literal @}{@link ProvidesIntoSet}, and {@literal @}{@link ProvidesIntoOptional}.]]>
   6180       </doc>
   6181     </method>
   6182     <doc>
   6183     <![CDATA[Scans a module for annotations that signal multibindings, mapbindings, and optional bindings.
   6184 
   6185  @since 4.0]]>
   6186     </doc>
   6187   </class>
   6188   <!-- end class com.google.inject.multibindings.MultibindingsScanner -->
   6189   <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
   6190   <interface name="MultibindingsTargetVisitor"    abstract="true"
   6191     static="false" final="false" visibility="public"
   6192     deprecated="not deprecated">
   6193     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   6194     <method name="visit" return="V"
   6195       abstract="true" native="false" synchronized="false"
   6196       static="false" final="false" visibility="public"
   6197       deprecated="not deprecated">
   6198       <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding&lt;? extends T&gt;"/>
   6199       <doc>
   6200       <![CDATA[Visits a binding created through {@link Multibinder}.]]>
   6201       </doc>
   6202     </method>
   6203     <method name="visit" return="V"
   6204       abstract="true" native="false" synchronized="false"
   6205       static="false" final="false" visibility="public"
   6206       deprecated="not deprecated">
   6207       <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding&lt;? extends T&gt;"/>
   6208       <doc>
   6209       <![CDATA[Visits a binding created through {@link MapBinder}.]]>
   6210       </doc>
   6211     </method>
   6212     <method name="visit" return="V"
   6213       abstract="true" native="false" synchronized="false"
   6214       static="false" final="false" visibility="public"
   6215       deprecated="not deprecated">
   6216       <param name="optionalbinding" type="com.google.inject.multibindings.OptionalBinderBinding&lt;? extends T&gt;"/>
   6217       <doc>
   6218       <![CDATA[Visits a binding created through {@link OptionalBinder}.
   6219  
   6220  @since 4.0]]>
   6221       </doc>
   6222     </method>
   6223     <doc>
   6224     <![CDATA[A visitor for the multibinder extension.
   6225  <p>
   6226  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   6227  {@link Multibinder}, {@link MapBinder} or {@link OptionalBinderBinding} will be visited through
   6228  this interface.
   6229 
   6230  @since 3.0
   6231  @author sameb (a] google.com (Sam Berlin)]]>
   6232     </doc>
   6233   </interface>
   6234   <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
   6235   <!-- start class com.google.inject.multibindings.OptionalBinder -->
   6236   <class name="OptionalBinder" extends="java.lang.Object"
   6237     abstract="true"
   6238     static="false" final="false" visibility="public"
   6239     deprecated="not deprecated">
   6240     <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder&lt;T&gt;"
   6241       abstract="false" native="false" synchronized="false"
   6242       static="true" final="false" visibility="public"
   6243       deprecated="not deprecated">
   6244       <param name="binder" type="com.google.inject.Binder"/>
   6245       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   6246     </method>
   6247     <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder&lt;T&gt;"
   6248       abstract="false" native="false" synchronized="false"
   6249       static="true" final="false" visibility="public"
   6250       deprecated="not deprecated">
   6251       <param name="binder" type="com.google.inject.Binder"/>
   6252       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   6253     </method>
   6254     <method name="newOptionalBinder" return="com.google.inject.multibindings.OptionalBinder&lt;T&gt;"
   6255       abstract="false" native="false" synchronized="false"
   6256       static="true" final="false" visibility="public"
   6257       deprecated="not deprecated">
   6258       <param name="binder" type="com.google.inject.Binder"/>
   6259       <param name="type" type="com.google.inject.Key&lt;T&gt;"/>
   6260     </method>
   6261     <method name="setDefault" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   6262       abstract="true" native="false" synchronized="false"
   6263       static="false" final="false" visibility="public"
   6264       deprecated="not deprecated">
   6265       <doc>
   6266       <![CDATA[Returns a binding builder used to set the default value that will be injected.
   6267  The binding set by this method will be ignored if {@link #setBinding} is called.
   6268  
   6269  <p>It is an error to call this method without also calling one of the {@code to}
   6270  methods on the returned binding builder.]]>
   6271       </doc>
   6272     </method>
   6273     <method name="setBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   6274       abstract="true" native="false" synchronized="false"
   6275       static="false" final="false" visibility="public"
   6276       deprecated="not deprecated">
   6277       <doc>
   6278       <![CDATA[Returns a binding builder used to set the actual value that will be injected.
   6279  This overrides any binding set by {@link #setDefault}.
   6280  
   6281  <p>It is an error to call this method without also calling one of the {@code to}
   6282  methods on the returned binding builder.]]>
   6283       </doc>
   6284     </method>
   6285     <doc>
   6286     <![CDATA[An API to bind optional values, optionally with a default value.
   6287  OptionalBinder fulfills two roles: <ol>
   6288  <li>It allows a framework to define an injection point that may or
   6289      may not be bound by users.
   6290  <li>It allows a framework to supply a default value that can be changed
   6291      by users.
   6292  </ol>
   6293  
   6294  <p>When an OptionalBinder is added, it will always supply the bindings:
   6295  {@code Optional<T>} and {@code Optional<Provider<T>>}.  If
   6296  {@link #setBinding} or {@link #setDefault} are called, it will also
   6297  bind {@code T}.
   6298  
   6299  <p>{@code setDefault} is intended for use by frameworks that need a default
   6300  value.  User code can call {@code setBinding} to override the default.
   6301  <b>Warning: Even if setBinding is called, the default binding
   6302  will still exist in the object graph.  If it is a singleton, it will be
   6303  instantiated in {@code Stage.PRODUCTION}.</b>
   6304  
   6305  <p>If setDefault or setBinding are linked to Providers, the Provider may return
   6306  {@code null}.  If it does, the Optional bindings will be absent.  Binding
   6307  setBinding to a Provider that returns null will not cause OptionalBinder
   6308  to fall back to the setDefault binding.
   6309  
   6310  <p>If neither setDefault nor setBinding are called, it will try to link to a
   6311  user-supplied binding of the same type.  If no binding exists, the optionals
   6312  will be absent.  Otherwise, if a user-supplied binding of that type exists,
   6313  or if setBinding or setDefault are called, the optionals will return present
   6314  if they are bound to a non-null value.
   6315 
   6316  <p>Values are resolved at injection time. If a value is bound to a
   6317  provider, that provider's get method will be called each time the optional
   6318  is injected (unless the binding is also scoped, or an optional of provider is
   6319  injected).
   6320  
   6321  <p>Annotations are used to create different optionals of the same key/value
   6322  type. Each distinct annotation gets its own independent binding.
   6323   
   6324  <pre><code>
   6325  public class FrameworkModule extends AbstractModule {
   6326    protected void configure() {
   6327      OptionalBinder.newOptionalBinder(binder(), Renamer.class);
   6328    }
   6329  }</code></pre>
   6330 
   6331  <p>With this module, an {@link Optional}{@code <Renamer>} can now be
   6332  injected.  With no other bindings, the optional will be absent.
   6333  Users can specify bindings in one of two ways:
   6334  
   6335  <p>Option 1:
   6336  <pre><code>
   6337  public class UserRenamerModule extends AbstractModule {
   6338    protected void configure() {
   6339      bind(Renamer.class).to(ReplacingRenamer.class);
   6340    }
   6341  }</code></pre>
   6342  
   6343  <p>or Option 2:
   6344  <pre><code>
   6345  public class UserRenamerModule extends AbstractModule {
   6346    protected void configure() {
   6347      OptionalBinder.newOptionalBinder(binder(), Renamer.class)
   6348          .setBinding().to(ReplacingRenamer.class);
   6349    }
   6350  }</code></pre>
   6351  With both options, the {@code Optional<Renamer>} will be present and supply the
   6352  ReplacingRenamer. 
   6353  
   6354  <p>Default values can be supplied using:
   6355  <pre><code>
   6356  public class FrameworkModule extends AbstractModule {
   6357    protected void configure() {
   6358      OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class))
   6359          .setDefault().toInstance(DEFAULT_LOOKUP_URL);
   6360    }
   6361  }</code></pre>
   6362  With the above module, code can inject an {@code @LookupUrl String} and it
   6363  will supply the DEFAULT_LOOKUP_URL.  A user can change this value by binding
   6364  <pre><code>
   6365  public class UserLookupModule extends AbstractModule {
   6366    protected void configure() {
   6367      OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class))
   6368          .setBinding().toInstance(CUSTOM_LOOKUP_URL);
   6369    }
   6370  }</code></pre>
   6371  ... which will override the default value.
   6372  
   6373  <p>If one module uses setDefault the only way to override the default is to use setBinding.
   6374  It is an error for a user to specify the binding without using OptionalBinder if
   6375  setDefault or setBinding are called.  For example, 
   6376  <pre><code>
   6377  public class FrameworkModule extends AbstractModule {
   6378    protected void configure() {
   6379      OptionalBinder.newOptionalBinder(binder(), Key.get(String.class, LookupUrl.class))
   6380          .setDefault().toInstance(DEFAULT_LOOKUP_URL);
   6381    }
   6382  }
   6383  public class UserLookupModule extends AbstractModule {
   6384    protected void configure() {
   6385      bind(Key.get(String.class, LookupUrl.class)).toInstance(CUSTOM_LOOKUP_URL);
   6386    } 
   6387  }</code></pre>
   6388  ... would generate an error, because both the framework and the user are trying to bind
   6389  {@code @LookupUrl String}. 
   6390 
   6391  @author sameb (a] google.com (Sam Berlin)
   6392  @since 4.0]]>
   6393     </doc>
   6394   </class>
   6395   <!-- end class com.google.inject.multibindings.OptionalBinder -->
   6396   <!-- start interface com.google.inject.multibindings.OptionalBinderBinding -->
   6397   <interface name="OptionalBinderBinding"    abstract="true"
   6398     static="false" final="false" visibility="public"
   6399     deprecated="not deprecated">
   6400     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   6401       abstract="true" native="false" synchronized="false"
   6402       static="false" final="false" visibility="public"
   6403       deprecated="not deprecated">
   6404       <doc>
   6405       <![CDATA[Returns the {@link Key} for this binding.]]>
   6406       </doc>
   6407     </method>
   6408     <method name="getDefaultBinding" return="com.google.inject.Binding&lt;?&gt;"
   6409       abstract="true" native="false" synchronized="false"
   6410       static="false" final="false" visibility="public"
   6411       deprecated="not deprecated">
   6412       <doc>
   6413       <![CDATA[Returns the default binding (set by {@link OptionalBinder#setDefault}) if one exists or null
   6414  if no default binding is set. This will throw {@link UnsupportedOperationException} if it is
   6415  called on an element retrieved from {@link Elements#getElements}.
   6416  <p>
   6417  The Binding's type will always match the type Optional's generic type. For example, if getKey
   6418  returns a key of <code>Optional&lt;String></code>, then this will always return a
   6419  <code>Binding&lt;String></code>.]]>
   6420       </doc>
   6421     </method>
   6422     <method name="getActualBinding" return="com.google.inject.Binding&lt;?&gt;"
   6423       abstract="true" native="false" synchronized="false"
   6424       static="false" final="false" visibility="public"
   6425       deprecated="not deprecated">
   6426       <doc>
   6427       <![CDATA[Returns the actual binding (set by {@link OptionalBinder#setBinding}) or null if not set.
   6428  This will throw {@link UnsupportedOperationException} if it is called on an element retrieved
   6429  from {@link Elements#getElements}.
   6430  <p>
   6431  The Binding's type will always match the type Optional's generic type. For example, if getKey
   6432  returns a key of <code>Optional&lt;String></code>, then this will always return a
   6433  <code>Binding&lt;String></code>.]]>
   6434       </doc>
   6435     </method>
   6436     <method name="containsElement" return="boolean"
   6437       abstract="true" native="false" synchronized="false"
   6438       static="false" final="false" visibility="public"
   6439       deprecated="not deprecated">
   6440       <param name="element" type="com.google.inject.spi.Element"/>
   6441       <doc>
   6442       <![CDATA[Returns true if this OptionalBinder contains the given Element in order to build the optional
   6443  binding or uses the given Element in order to support building and injecting its data. This
   6444  will work for OptionalBinderBinding retrieved from an injector and
   6445  {@link Elements#getElements}. Usually this is only necessary if you are working with elements
   6446  retrieved from modules (without an Injector), otherwise {@link #getDefaultBinding} and
   6447  {@link #getActualBinding} are better options.]]>
   6448       </doc>
   6449     </method>
   6450     <doc>
   6451     <![CDATA[A binding for a OptionalBinder.
   6452  
   6453  <p>Although OptionalBinders may be injected through a variety of types
   6454  {@code T}, {@code Optional<T>}, {@code Optional<Provider<T>>}, etc..), an
   6455  OptionalBinderBinding exists only on the Binding associated with the
   6456  {@code Optional<T>} key.  Other bindings can be validated to be derived from this
   6457  OptionalBinderBinding using {@link #containsElement}.
   6458  
   6459  @param <T> The fully qualified type of the optional binding, including Optional.
   6460         For example: {@code Optional<String>}.
   6461  
   6462  @since 4.0
   6463  @author sameb (a] google.com (Sam Berlin)]]>
   6464     </doc>
   6465   </interface>
   6466   <!-- end interface com.google.inject.multibindings.OptionalBinderBinding -->
   6467   <!-- start class com.google.inject.multibindings.ProvidesIntoMap -->
   6468   <class name="ProvidesIntoMap"    abstract="true"
   6469     static="false" final="false" visibility="public"
   6470     deprecated="not deprecated">
   6471     <implements name="java.lang.annotation.Annotation"/>
   6472     <doc>
   6473     <![CDATA[Annotates methods of a {@link Module} to add items to a {@link MapBinder}.
   6474  The method's return type, binding annotation and additional key annotation determines
   6475  what Map this will contribute to. For example,
   6476 
   6477  <pre>
   6478  {@literal @}ProvidesIntoMap
   6479  {@literal @}StringMapKey("Foo")
   6480  {@literal @}Named("plugins")
   6481  Plugin provideFooUrl(FooManager fm) { return fm.getPlugin(); }
   6482 
   6483  {@literal @}ProvidesIntoMap
   6484  {@literal @}StringMapKey("Bar")
   6485  {@literal @}Named("urls")
   6486  Plugin provideBarUrl(BarManager bm) { return bm.getPlugin(); }
   6487  </pre>
   6488 
   6489  will add two items to the {@code @Named("urls") Map<String, Plugin>} map. The key 'Foo'
   6490  will map to the provideFooUrl method, and the key 'Bar' will map to the provideBarUrl method.
   6491  The values are bound as providers and will be evaluated at injection time.
   6492 
   6493  <p>Because the key is specified as an annotation, only Strings, Classes, enums, primitive
   6494  types and annotation instances are supported as keys.
   6495 
   6496  @author sameb (a] google.com (Sam Berlin)
   6497  @since 4.0]]>
   6498     </doc>
   6499   </class>
   6500   <!-- end class com.google.inject.multibindings.ProvidesIntoMap -->
   6501   <!-- start class com.google.inject.multibindings.ProvidesIntoOptional -->
   6502   <class name="ProvidesIntoOptional"    abstract="true"
   6503     static="false" final="false" visibility="public"
   6504     deprecated="not deprecated">
   6505     <implements name="java.lang.annotation.Annotation"/>
   6506     <doc>
   6507     <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}.
   6508  The method's return type and binding annotation determines what Optional this will
   6509  contribute to. For example,
   6510 
   6511  <pre>
   6512  {@literal @}ProvidesIntoOptional(DEFAULT)
   6513  {@literal @}Named("url")
   6514  String provideFooUrl(FooManager fm) { returm fm.getUrl(); }
   6515 
   6516  {@literal @}ProvidesIntoOptional(ACTUAL)
   6517  {@literal @}Named("url")
   6518  String provideBarUrl(BarManager bm) { return bm.getUrl(); }
   6519  </pre>
   6520 
   6521  will set the default value of {@code @Named("url") Optional<String>} to foo's URL,
   6522  and then override it to bar's URL.
   6523 
   6524  @author sameb (a] google.com (Sam Berlin)
   6525  @since 4.0]]>
   6526     </doc>
   6527   </class>
   6528   <!-- end class com.google.inject.multibindings.ProvidesIntoOptional -->
   6529   <!-- start class com.google.inject.multibindings.ProvidesIntoOptional.Type -->
   6530   <class name="ProvidesIntoOptional.Type" extends="java.lang.Enum&lt;com.google.inject.multibindings.ProvidesIntoOptional.Type&gt;"
   6531     abstract="false"
   6532     static="true" final="true" visibility="public"
   6533     deprecated="not deprecated">
   6534     <method name="values" return="com.google.inject.multibindings.ProvidesIntoOptional.Type[]"
   6535       abstract="false" native="false" synchronized="false"
   6536       static="true" final="false" visibility="public"
   6537       deprecated="not deprecated">
   6538     </method>
   6539     <method name="valueOf" return="com.google.inject.multibindings.ProvidesIntoOptional.Type"
   6540       abstract="false" native="false" synchronized="false"
   6541       static="true" final="false" visibility="public"
   6542       deprecated="not deprecated">
   6543       <param name="name" type="java.lang.String"/>
   6544     </method>
   6545     <doc>
   6546     <![CDATA[@since 4.0]]>
   6547     </doc>
   6548   </class>
   6549   <!-- end class com.google.inject.multibindings.ProvidesIntoOptional.Type -->
   6550   <!-- start class com.google.inject.multibindings.ProvidesIntoSet -->
   6551   <class name="ProvidesIntoSet"    abstract="true"
   6552     static="false" final="false" visibility="public"
   6553     deprecated="not deprecated">
   6554     <implements name="java.lang.annotation.Annotation"/>
   6555     <doc>
   6556     <![CDATA[Annotates methods of a {@link Module} to add items to a {@link Multibinder}.
   6557  The method's return type and binding annotation determines what Set this will
   6558  contribute to. For example,
   6559 
   6560  <pre>
   6561  {@literal @}ProvidesIntoSet
   6562  {@literal @}Named("urls")
   6563  String provideFooUrl(FooManager fm) { returm fm.getUrl(); }
   6564 
   6565  {@literal @}ProvidesIntoSet
   6566  {@literal @}Named("urls")
   6567  String provideBarUrl(BarManager bm) { return bm.getUrl(); }
   6568  </pre>
   6569 
   6570  will add two items to the {@code @Named("urls") Set<String>} set. The items are bound as
   6571  providers and will be evaluated at injection time.
   6572 
   6573  @author sameb (a] google.com (Sam Berlin)
   6574  @since 4.0]]>
   6575     </doc>
   6576   </class>
   6577   <!-- end class com.google.inject.multibindings.ProvidesIntoSet -->
   6578   <!-- start class com.google.inject.multibindings.StringMapKey -->
   6579   <class name="StringMapKey"    abstract="true"
   6580     static="false" final="false" visibility="public"
   6581     deprecated="not deprecated">
   6582     <implements name="java.lang.annotation.Annotation"/>
   6583     <doc>
   6584     <![CDATA[Allows {@literal @}{@link ProvidesIntoMap} to specify a string map key.
   6585 
   6586  @since 4.0]]>
   6587     </doc>
   6588   </class>
   6589   <!-- end class com.google.inject.multibindings.StringMapKey -->
   6590 </package>
   6591 <package name="com.google.inject.name">
   6592   <!-- start class com.google.inject.name.Named -->
   6593   <class name="Named"    abstract="true"
   6594     static="false" final="false" visibility="public"
   6595     deprecated="not deprecated">
   6596     <implements name="java.lang.annotation.Annotation"/>
   6597     <doc>
   6598     <![CDATA[Annotates named things.
   6599 
   6600  @author crazybob (a] google.com (Bob Lee)]]>
   6601     </doc>
   6602   </class>
   6603   <!-- end class com.google.inject.name.Named -->
   6604   <!-- start class com.google.inject.name.Names -->
   6605   <class name="Names" extends="java.lang.Object"
   6606     abstract="false"
   6607     static="false" final="false" visibility="public"
   6608     deprecated="not deprecated">
   6609     <method name="named" return="com.google.inject.name.Named"
   6610       abstract="false" native="false" synchronized="false"
   6611       static="true" final="false" visibility="public"
   6612       deprecated="not deprecated">
   6613       <param name="name" type="java.lang.String"/>
   6614       <doc>
   6615       <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]>
   6616       </doc>
   6617     </method>
   6618     <method name="bindProperties"
   6619       abstract="false" native="false" synchronized="false"
   6620       static="true" final="false" visibility="public"
   6621       deprecated="not deprecated">
   6622       <param name="binder" type="com.google.inject.Binder"/>
   6623       <param name="properties" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6624       <doc>
   6625       <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in
   6626  {@code properties}.]]>
   6627       </doc>
   6628     </method>
   6629     <method name="bindProperties"
   6630       abstract="false" native="false" synchronized="false"
   6631       static="true" final="false" visibility="public"
   6632       deprecated="not deprecated">
   6633       <param name="binder" type="com.google.inject.Binder"/>
   6634       <param name="properties" type="java.util.Properties"/>
   6635       <doc>
   6636       <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This
   6637  method binds all properties including those inherited from 
   6638  {@link Properties#defaults defaults}.]]>
   6639       </doc>
   6640     </method>
   6641     <doc>
   6642     <![CDATA[Utility methods for use with {@code @}{@link Named}.
   6643 
   6644  @author crazybob (a] google.com (Bob Lee)]]>
   6645     </doc>
   6646   </class>
   6647   <!-- end class com.google.inject.name.Names -->
   6648 </package>
   6649 <package name="com.google.inject.persist">
   6650   <!-- start class com.google.inject.persist.PersistFilter -->
   6651   <class name="PersistFilter" extends="java.lang.Object"
   6652     abstract="false"
   6653     static="false" final="true" visibility="public"
   6654     deprecated="not deprecated">
   6655     <implements name="javax.servlet.Filter"/>
   6656     <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService"
   6657       static="false" final="false" visibility="public"
   6658       deprecated="not deprecated">
   6659     </constructor>
   6660     <method name="init"
   6661       abstract="false" native="false" synchronized="false"
   6662       static="false" final="false" visibility="public"
   6663       deprecated="not deprecated">
   6664       <param name="filterConfig" type="javax.servlet.FilterConfig"/>
   6665       <exception name="ServletException" type="javax.servlet.ServletException"/>
   6666     </method>
   6667     <method name="destroy"
   6668       abstract="false" native="false" synchronized="false"
   6669       static="false" final="false" visibility="public"
   6670       deprecated="not deprecated">
   6671     </method>
   6672     <method name="doFilter"
   6673       abstract="false" native="false" synchronized="false"
   6674       static="false" final="false" visibility="public"
   6675       deprecated="not deprecated">
   6676       <param name="servletRequest" type="javax.servlet.ServletRequest"/>
   6677       <param name="servletResponse" type="javax.servlet.ServletResponse"/>
   6678       <param name="filterChain" type="javax.servlet.FilterChain"/>
   6679       <exception name="IOException" type="java.io.IOException"/>
   6680       <exception name="ServletException" type="javax.servlet.ServletException"/>
   6681     </method>
   6682     <doc>
   6683     <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have
   6684  guice-persist manage the lifecycle of active units of work.
   6685  The filter automatically starts and stops the relevant {@link PersistService}
   6686  upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and
   6687  {@link javax.servlet.Filter#destroy()} respectively.
   6688 
   6689  <p> To be able to use the open session-in-view pattern (i.e. work per request),
   6690  register this filter <b>once</b> in your Guice {@code ServletModule}. It is
   6691  important that you register this filter before any other filter.
   6692 
   6693  For multiple providers, you should register this filter once per provider, inside
   6694  a private module for each persist module installed (this must be the same private
   6695  module where the specific persist module is itself installed).
   6696 
   6697  <p>
   6698  Example configuration:
   6699  <pre>{@code
   6700   public class MyModule extends ServletModule {
   6701     public void configureServlets() {
   6702       filter("/*").through(PersistFilter.class);
   6703 
   6704       serve("/index.html").with(MyHtmlServlet.class);
   6705       // Etc.
   6706     }
   6707   }
   6708  }</pre>
   6709  <p>
   6710  This filter is thread safe and allows you to create injectors concurrently
   6711  and deploy multiple guice-persist modules within the same injector, or even
   6712  multiple injectors with persist modules withing the same JVM or web app.
   6713  <p>
   6714  This filter requires the Guice Servlet extension.
   6715 
   6716  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6717     </doc>
   6718   </class>
   6719   <!-- end class com.google.inject.persist.PersistFilter -->
   6720   <!-- start class com.google.inject.persist.PersistModule -->
   6721   <class name="PersistModule" extends="com.google.inject.AbstractModule"
   6722     abstract="true"
   6723     static="false" final="false" visibility="public"
   6724     deprecated="not deprecated">
   6725     <constructor name="PersistModule"
   6726       static="false" final="false" visibility="public"
   6727       deprecated="not deprecated">
   6728     </constructor>
   6729     <method name="configure"
   6730       abstract="false" native="false" synchronized="false"
   6731       static="false" final="true" visibility="protected"
   6732       deprecated="not deprecated">
   6733     </method>
   6734     <method name="configurePersistence"
   6735       abstract="true" native="false" synchronized="false"
   6736       static="false" final="false" visibility="protected"
   6737       deprecated="not deprecated">
   6738     </method>
   6739     <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
   6740       abstract="true" native="false" synchronized="false"
   6741       static="false" final="false" visibility="protected"
   6742       deprecated="not deprecated">
   6743     </method>
   6744     <doc>
   6745     <![CDATA[Install this module to add guice-persist library support for JPA persistence
   6746  providers.
   6747 
   6748  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6749     </doc>
   6750   </class>
   6751   <!-- end class com.google.inject.persist.PersistModule -->
   6752   <!-- start interface com.google.inject.persist.PersistService -->
   6753   <interface name="PersistService"    abstract="true"
   6754     static="false" final="false" visibility="public"
   6755     deprecated="not deprecated">
   6756     <method name="start"
   6757       abstract="true" native="false" synchronized="false"
   6758       static="false" final="false" visibility="public"
   6759       deprecated="not deprecated">
   6760       <doc>
   6761       <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for
   6762  use. For instance, with JPA, it creates an EntityManagerFactory and may
   6763  open connection pools. This method must be called by your code prior to
   6764  using any guice-persist or JPA artifacts. If already started,
   6765  calling this method does nothing, if already stopped, it also does
   6766  nothing.]]>
   6767       </doc>
   6768     </method>
   6769     <method name="stop"
   6770       abstract="true" native="false" synchronized="false"
   6771       static="false" final="false" visibility="public"
   6772       deprecated="not deprecated">
   6773       <doc>
   6774       <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it
   6775  closes the {@code EntityManagerFactory}. If already stopped, calling this
   6776  method does nothing. If not yet started, it also does nothing.]]>
   6777       </doc>
   6778     </method>
   6779     <doc>
   6780     <![CDATA[Persistence provider service. Use this to manage the overall
   6781  startup and stop of the persistence module(s).
   6782 
   6783  TODO(dhanji): Integrate with Service API when appropriate.
   6784 
   6785  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6786     </doc>
   6787   </interface>
   6788   <!-- end interface com.google.inject.persist.PersistService -->
   6789   <!-- start class com.google.inject.persist.Transactional -->
   6790   <class name="Transactional"    abstract="true"
   6791     static="false" final="false" visibility="public"
   6792     deprecated="not deprecated">
   6793     <implements name="java.lang.annotation.Annotation"/>
   6794     <doc>
   6795     <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality.
   6796  Consult the documentation on https://github.com/google/guice/wiki/GuicePersist for detailed
   6797  semantics.
   6798  Marking a method {@code @Transactional} will start a new transaction before the method
   6799  executes and commit it after the method returns.
   6800  <p>
   6801  If the method throws an exception, the transaction will be rolled back <em>unless</em>
   6802  you have specifically requested not to in the {@link #ignore()} clause.
   6803  <p>
   6804  Similarly, the set of exceptions that will trigger a rollback can be defined in
   6805  the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a
   6806  rollback.
   6807 
   6808  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6809     </doc>
   6810   </class>
   6811   <!-- end class com.google.inject.persist.Transactional -->
   6812   <!-- start interface com.google.inject.persist.UnitOfWork -->
   6813   <interface name="UnitOfWork"    abstract="true"
   6814     static="false" final="false" visibility="public"
   6815     deprecated="not deprecated">
   6816     <method name="begin"
   6817       abstract="true" native="false" synchronized="false"
   6818       static="false" final="false" visibility="public"
   6819       deprecated="not deprecated">
   6820       <doc>
   6821       <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there
   6822  is already one open, the invocation will do nothing. In this way, you can define arbitrary
   6823  units-of-work that nest within one another safely.
   6824 
   6825  Transaction semantics are not affected.]]>
   6826       </doc>
   6827     </method>
   6828     <method name="end"
   6829       abstract="true" native="false" synchronized="false"
   6830       static="false" final="false" visibility="public"
   6831       deprecated="not deprecated">
   6832       <doc>
   6833       <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data
   6834  layer to close. If there is no Unit of work open, then the call returns silently. You can
   6835  safely invoke end() repeatedly.
   6836  <p>
   6837  Transaction semantics are not affected.]]>
   6838       </doc>
   6839     </method>
   6840     <doc>
   6841     <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do
   6842  work in non-request, non-transactional threads. Or where more fine-grained control over the unit
   6843  of work is required. Starting and ending a unit of work directly corresponds to opening and
   6844  closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively.
   6845  <p> The
   6846  Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to
   6847  end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning
   6848  behind thread-locality of Unit of Work semantics).
   6849 
   6850  <ul>
   6851    <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li>
   6852    <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li>
   6853    <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a
   6854        background or bootstrap thread) is probably a good use case.</li>
   6855   </ul>
   6856 
   6857  @author Dhanji R. Prasanna (dhanji@gmail com)]]>
   6858     </doc>
   6859   </interface>
   6860   <!-- end interface com.google.inject.persist.UnitOfWork -->
   6861 </package>
   6862 <package name="com.google.inject.persist.finder">
   6863   <!-- start class com.google.inject.persist.finder.DynamicFinder -->
   6864   <class name="DynamicFinder" extends="java.lang.Object"
   6865     abstract="false"
   6866     static="false" final="true" visibility="public"
   6867     deprecated="not deprecated">
   6868     <constructor name="DynamicFinder" type="java.lang.reflect.Method"
   6869       static="false" final="false" visibility="public"
   6870       deprecated="not deprecated">
   6871     </constructor>
   6872     <method name="from" return="com.google.inject.persist.finder.DynamicFinder"
   6873       abstract="false" native="false" synchronized="false"
   6874       static="true" final="false" visibility="public"
   6875       deprecated="not deprecated">
   6876       <param name="method" type="java.lang.reflect.Method"/>
   6877       <doc>
   6878       <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null.
   6879 
   6880  @param method a method you want to test as a dynamic finder]]>
   6881       </doc>
   6882     </method>
   6883     <method name="metadata" return="com.google.inject.persist.finder.Finder"
   6884       abstract="false" native="false" synchronized="false"
   6885       static="false" final="false" visibility="public"
   6886       deprecated="not deprecated">
   6887     </method>
   6888     <doc>
   6889     <![CDATA[Utility that helps you introspect dynamic finder methods.
   6890 
   6891  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6892     </doc>
   6893   </class>
   6894   <!-- end class com.google.inject.persist.finder.DynamicFinder -->
   6895   <!-- start class com.google.inject.persist.finder.Finder -->
   6896   <class name="Finder"    abstract="true"
   6897     static="false" final="false" visibility="public"
   6898     deprecated="not deprecated">
   6899     <implements name="java.lang.annotation.Annotation"/>
   6900     <doc>
   6901     <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the
   6902  specified JPAQL query. Provides result auto-boxing and automatic parameter binding.
   6903 
   6904  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6905     </doc>
   6906   </class>
   6907   <!-- end class com.google.inject.persist.finder.Finder -->
   6908   <!-- start class com.google.inject.persist.finder.FirstResult -->
   6909   <class name="FirstResult"    abstract="true"
   6910     static="false" final="false" visibility="public"
   6911     deprecated="not deprecated">
   6912     <implements name="java.lang.annotation.Annotation"/>
   6913     <doc>
   6914     <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
   6915  the index of the first result in the result set you are interested in.
   6916  Useful for paging result sets. Complemented by {@link MaxResults}.
   6917 
   6918  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6919     </doc>
   6920   </class>
   6921   <!-- end class com.google.inject.persist.finder.FirstResult -->
   6922   <!-- start class com.google.inject.persist.finder.MaxResults -->
   6923   <class name="MaxResults"    abstract="true"
   6924     static="false" final="false" visibility="public"
   6925     deprecated="not deprecated">
   6926     <implements name="java.lang.annotation.Annotation"/>
   6927     <doc>
   6928     <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
   6929  the maximum size of returned result window. Usefule for paging result sets.
   6930  Complement of {@link FirstResult}.
   6931 
   6932  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6933     </doc>
   6934   </class>
   6935   <!-- end class com.google.inject.persist.finder.MaxResults -->
   6936 </package>
   6937 <package name="com.google.inject.persist.jpa">
   6938   <!-- start class com.google.inject.persist.jpa.JpaPersistModule -->
   6939   <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule"
   6940     abstract="false"
   6941     static="false" final="true" visibility="public"
   6942     deprecated="not deprecated">
   6943     <constructor name="JpaPersistModule" type="java.lang.String"
   6944       static="false" final="false" visibility="public"
   6945       deprecated="not deprecated">
   6946     </constructor>
   6947     <method name="configurePersistence"
   6948       abstract="false" native="false" synchronized="false"
   6949       static="false" final="false" visibility="protected"
   6950       deprecated="not deprecated">
   6951     </method>
   6952     <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
   6953       abstract="false" native="false" synchronized="false"
   6954       static="false" final="false" visibility="protected"
   6955       deprecated="not deprecated">
   6956     </method>
   6957     <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule"
   6958       abstract="false" native="false" synchronized="false"
   6959       static="false" final="false" visibility="public"
   6960       deprecated="not deprecated">
   6961       <param name="properties" type="java.util.Map&lt;?, ?&gt;"/>
   6962       <doc>
   6963       <![CDATA[Configures the JPA persistence provider with a set of properties.
   6964  
   6965  @param properties A set of name value pairs that configure a JPA persistence
   6966      provider as per the specification.
   6967  @since 4.0 (since 3.0 with a parameter type of {@code java.util.Properties})]]>
   6968       </doc>
   6969     </method>
   6970     <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule"
   6971       abstract="false" native="false" synchronized="false"
   6972       static="false" final="false" visibility="public"
   6973       deprecated="not deprecated">
   6974       <param name="iface" type="java.lang.Class&lt;T&gt;"/>
   6975       <doc>
   6976       <![CDATA[Adds an interface to this module to use as a dynamic finder.
   6977 
   6978  @param iface Any interface type whose methods are all dynamic finders.]]>
   6979       </doc>
   6980     </method>
   6981     <doc>
   6982     <![CDATA[JPA provider for guice persist.
   6983 
   6984  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6985     </doc>
   6986   </class>
   6987   <!-- end class com.google.inject.persist.jpa.JpaPersistModule -->
   6988 </package>
   6989 <package name="com.google.inject.servlet">
   6990   <!-- start class com.google.inject.servlet.GuiceFilter -->
   6991   <class name="GuiceFilter" extends="java.lang.Object"
   6992     abstract="false"
   6993     static="false" final="false" visibility="public"
   6994     deprecated="not deprecated">
   6995     <implements name="javax.servlet.Filter"/>
   6996     <constructor name="GuiceFilter"
   6997       static="false" final="false" visibility="public"
   6998       deprecated="not deprecated">
   6999     </constructor>
   7000     <method name="doFilter"
   7001       abstract="false" native="false" synchronized="false"
   7002       static="false" final="false" visibility="public"
   7003       deprecated="not deprecated">
   7004       <param name="servletRequest" type="javax.servlet.ServletRequest"/>
   7005       <param name="servletResponse" type="javax.servlet.ServletResponse"/>
   7006       <param name="filterChain" type="javax.servlet.FilterChain"/>
   7007       <exception name="IOException" type="java.io.IOException"/>
   7008       <exception name="ServletException" type="javax.servlet.ServletException"/>
   7009     </method>
   7010     <method name="init"
   7011       abstract="false" native="false" synchronized="false"
   7012       static="false" final="false" visibility="public"
   7013       deprecated="not deprecated">
   7014       <param name="filterConfig" type="javax.servlet.FilterConfig"/>
   7015       <exception name="ServletException" type="javax.servlet.ServletException"/>
   7016     </method>
   7017     <method name="destroy"
   7018       abstract="false" native="false" synchronized="false"
   7019       static="false" final="false" visibility="public"
   7020       deprecated="not deprecated">
   7021     </method>
   7022     <doc>
   7023     <![CDATA[<p>
   7024  Apply this filter in web.xml above all other filters (typically), to all requests where you plan
   7025   to use servlet scopes. This is also needed in order to dispatch requests to injectable filters
   7026   and servlets:
   7027   <pre>
   7028   &lt;filter&gt;
   7029     &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
   7030     &lt;filter-class&gt;<b>com.google.inject.servlet.GuiceFilter</b>&lt;/filter-class&gt;
   7031   &lt;/filter&gt;
   7032 
   7033   &lt;filter-mapping&gt;
   7034     &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
   7035     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
   7036   &lt;/filter-mapping&gt;
   7037   </pre>
   7038 
   7039  This filter must appear before every filter that makes use of Guice injection or servlet
   7040  scopes functionality. Typically, you will only register this filter in web.xml and register
   7041  any other filters (and servlets) using a {@link ServletModule}.
   7042 
   7043  @author crazybob (a] google.com (Bob Lee)
   7044  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   7045     </doc>
   7046   </class>
   7047   <!-- end class com.google.inject.servlet.GuiceFilter -->
   7048   <!-- start class com.google.inject.servlet.GuiceServletContextListener -->
   7049   <class name="GuiceServletContextListener" extends="java.lang.Object"
   7050     abstract="true"
   7051     static="false" final="false" visibility="public"
   7052     deprecated="not deprecated">
   7053     <implements name="javax.servlet.ServletContextListener"/>
   7054     <constructor name="GuiceServletContextListener"
   7055       static="false" final="false" visibility="public"
   7056       deprecated="not deprecated">
   7057     </constructor>
   7058     <method name="contextInitialized"
   7059       abstract="false" native="false" synchronized="false"
   7060       static="false" final="false" visibility="public"
   7061       deprecated="not deprecated">
   7062       <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/>
   7063     </method>
   7064     <method name="contextDestroyed"
   7065       abstract="false" native="false" synchronized="false"
   7066       static="false" final="false" visibility="public"
   7067       deprecated="not deprecated">
   7068       <param name="servletContextEvent" type="javax.servlet.ServletContextEvent"/>
   7069     </method>
   7070     <method name="getInjector" return="com.google.inject.Injector"
   7071       abstract="true" native="false" synchronized="false"
   7072       static="false" final="false" visibility="protected"
   7073       deprecated="not deprecated">
   7074       <doc>
   7075       <![CDATA[Override this method to create (or otherwise obtain a reference to) your
   7076  injector.]]>
   7077       </doc>
   7078     </method>
   7079     <doc>
   7080     <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener}
   7081  class as a logical place to create and configure your injector. This will ensure the injector
   7082  is created when the web application is deployed.
   7083  
   7084  @author Kevin Bourrillion (kevinb (a] google.com)
   7085  @since 2.0]]>
   7086     </doc>
   7087   </class>
   7088   <!-- end class com.google.inject.servlet.GuiceServletContextListener -->
   7089   <!-- start interface com.google.inject.servlet.InstanceFilterBinding -->
   7090   <interface name="InstanceFilterBinding"    abstract="true"
   7091     static="false" final="false" visibility="public"
   7092     deprecated="not deprecated">
   7093     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   7094     <method name="getFilterInstance" return="javax.servlet.Filter"
   7095       abstract="true" native="false" synchronized="false"
   7096       static="false" final="false" visibility="public"
   7097       deprecated="not deprecated">
   7098       <doc>
   7099       <![CDATA[Returns the filter instance that will be used.]]>
   7100       </doc>
   7101     </method>
   7102     <doc>
   7103     <![CDATA[A binding to a single instance of a filter. 
   7104 
   7105  @author sameb (a] google.com
   7106  @since 3.0]]>
   7107     </doc>
   7108   </interface>
   7109   <!-- end interface com.google.inject.servlet.InstanceFilterBinding -->
   7110   <!-- start interface com.google.inject.servlet.InstanceServletBinding -->
   7111   <interface name="InstanceServletBinding"    abstract="true"
   7112     static="false" final="false" visibility="public"
   7113     deprecated="not deprecated">
   7114     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   7115     <method name="getServletInstance" return="javax.servlet.http.HttpServlet"
   7116       abstract="true" native="false" synchronized="false"
   7117       static="false" final="false" visibility="public"
   7118       deprecated="not deprecated">
   7119       <doc>
   7120       <![CDATA[Returns the servlet instance that will be used.]]>
   7121       </doc>
   7122     </method>
   7123     <doc>
   7124     <![CDATA[A binding to a single instance of a servlet. 
   7125 
   7126  @author sameb (a] google.com
   7127  @since 3.0]]>
   7128     </doc>
   7129   </interface>
   7130   <!-- end interface com.google.inject.servlet.InstanceServletBinding -->
   7131   <!-- start interface com.google.inject.servlet.LinkedFilterBinding -->
   7132   <interface name="LinkedFilterBinding"    abstract="true"
   7133     static="false" final="false" visibility="public"
   7134     deprecated="not deprecated">
   7135     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   7136     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends javax.servlet.Filter&gt;"
   7137       abstract="true" native="false" synchronized="false"
   7138       static="false" final="false" visibility="public"
   7139       deprecated="not deprecated">
   7140       <doc>
   7141       <![CDATA[Returns the key used to lookup the filter instance.]]>
   7142       </doc>
   7143     </method>
   7144     <doc>
   7145     <![CDATA[A linked binding to a filter. 
   7146 
   7147  @author sameb (a] google.com
   7148  @since 3.0]]>
   7149     </doc>
   7150   </interface>
   7151   <!-- end interface com.google.inject.servlet.LinkedFilterBinding -->
   7152   <!-- start interface com.google.inject.servlet.LinkedServletBinding -->
   7153   <interface name="LinkedServletBinding"    abstract="true"
   7154     static="false" final="false" visibility="public"
   7155     deprecated="not deprecated">
   7156     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   7157     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends javax.servlet.http.HttpServlet&gt;"
   7158       abstract="true" native="false" synchronized="false"
   7159       static="false" final="false" visibility="public"
   7160       deprecated="not deprecated">
   7161       <doc>
   7162       <![CDATA[Returns the key used to lookup the servlet instance.]]>
   7163       </doc>
   7164     </method>
   7165     <doc>
   7166     <![CDATA[A linked binding to a servlet. 
   7167 
   7168  @author sameb (a] google.com
   7169  @since 3.0]]>
   7170     </doc>
   7171   </interface>
   7172   <!-- end interface com.google.inject.servlet.LinkedServletBinding -->
   7173   <!-- start class com.google.inject.servlet.RequestParameters -->
   7174   <class name="RequestParameters"    abstract="true"
   7175     static="false" final="false" visibility="public"
   7176     deprecated="not deprecated">
   7177     <implements name="java.lang.annotation.Annotation"/>
   7178     <doc>
   7179     <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>}
   7180  when you want the HTTP request parameter map to be injected.
   7181 
   7182  @author crazybob (a] google.com (Bob Lee)]]>
   7183     </doc>
   7184   </class>
   7185   <!-- end class com.google.inject.servlet.RequestParameters -->
   7186   <!-- start class com.google.inject.servlet.RequestScoped -->
   7187   <class name="RequestScoped"    abstract="true"
   7188     static="false" final="false" visibility="public"
   7189     deprecated="not deprecated">
   7190     <implements name="java.lang.annotation.Annotation"/>
   7191     <doc>
   7192     <![CDATA[Apply this to implementation classes when you want one instance per request.
   7193 
   7194  @author crazybob (a] google.com (Bob Lee)]]>
   7195     </doc>
   7196   </class>
   7197   <!-- end class com.google.inject.servlet.RequestScoped -->
   7198   <!-- start interface com.google.inject.servlet.RequestScoper -->
   7199   <interface name="RequestScoper"    abstract="true"
   7200     static="false" final="false" visibility="public"
   7201     deprecated="not deprecated">
   7202     <method name="open" return="com.google.inject.servlet.RequestScoper.CloseableScope"
   7203       abstract="true" native="false" synchronized="false"
   7204       static="false" final="false" visibility="public"
   7205       deprecated="not deprecated">
   7206       <doc>
   7207       <![CDATA[Opens up the request scope until the returned object is closed.
   7208  Implementations should ensure (e.g. by blocking) that multiple threads
   7209  cannot open the same request scope concurrently. It is allowable to open
   7210  the same request scope on the same thread, as long as open/close calls are
   7211  correctly nested.]]>
   7212       </doc>
   7213     </method>
   7214     <doc>
   7215     <![CDATA[Object that can be used to apply a request scope to a block of code.]]>
   7216     </doc>
   7217   </interface>
   7218   <!-- end interface com.google.inject.servlet.RequestScoper -->
   7219   <!-- start interface com.google.inject.servlet.RequestScoper.CloseableScope -->
   7220   <interface name="RequestScoper.CloseableScope"    abstract="true"
   7221     static="true" final="false" visibility="public"
   7222     deprecated="not deprecated">
   7223     <implements name="java.io.Closeable"/>
   7224     <method name="close"
   7225       abstract="true" native="false" synchronized="false"
   7226       static="false" final="false" visibility="public"
   7227       deprecated="not deprecated">
   7228     </method>
   7229     <doc>
   7230     <![CDATA[Closeable subclass that does not throw any exceptions from close.]]>
   7231     </doc>
   7232   </interface>
   7233   <!-- end interface com.google.inject.servlet.RequestScoper.CloseableScope -->
   7234   <!-- start class com.google.inject.servlet.ScopingException -->
   7235   <class name="ScopingException" extends="java.lang.IllegalStateException"
   7236     abstract="false"
   7237     static="false" final="true" visibility="public"
   7238     deprecated="not deprecated">
   7239     <constructor name="ScopingException" type="java.lang.String"
   7240       static="false" final="false" visibility="public"
   7241       deprecated="not deprecated">
   7242     </constructor>
   7243     <doc>
   7244     <![CDATA[Exception thrown when there was a failure entering request scope.
   7245 
   7246  @author Chris Nokleberg
   7247  @since 4.0]]>
   7248     </doc>
   7249   </class>
   7250   <!-- end class com.google.inject.servlet.ScopingException -->
   7251   <!-- start class com.google.inject.servlet.ScopingOnly -->
   7252   <class name="ScopingOnly"    abstract="true"
   7253     static="false" final="false" visibility="public"
   7254     deprecated="not deprecated">
   7255     <implements name="java.lang.annotation.Annotation"/>
   7256     <doc>
   7257     <![CDATA[Annotates a {@link GuiceFilter} that provides scope functionality, but
   7258  doesn't dispatch to {@link ServletModule} bound servlets or filters.
   7259 
   7260  @author iqshum (a] google.com (Isaac Shum)
   7261  @since 4.0]]>
   7262     </doc>
   7263   </class>
   7264   <!-- end class com.google.inject.servlet.ScopingOnly -->
   7265   <!-- start class com.google.inject.servlet.ServletModule -->
   7266   <class name="ServletModule" extends="com.google.inject.AbstractModule"
   7267     abstract="false"
   7268     static="false" final="false" visibility="public"
   7269     deprecated="not deprecated">
   7270     <constructor name="ServletModule"
   7271       static="false" final="false" visibility="public"
   7272       deprecated="not deprecated">
   7273     </constructor>
   7274     <method name="configure"
   7275       abstract="false" native="false" synchronized="false"
   7276       static="false" final="true" visibility="protected"
   7277       deprecated="not deprecated">
   7278     </method>
   7279     <method name="configureServlets"
   7280       abstract="false" native="false" synchronized="false"
   7281       static="false" final="false" visibility="protected"
   7282       deprecated="not deprecated">
   7283       <doc>
   7284       <![CDATA[<h3>Servlet Mapping EDSL</h3>
   7285 
   7286  <p> Part of the EDSL builder language for configuring servlets
   7287  and filters with guice-servlet. Think of this as an in-code replacement for web.xml.
   7288  Filters and servlets are configured here using simple java method calls. Here is a typical
   7289  example of registering a filter when creating your Guice injector:
   7290 
   7291  <pre>
   7292    Guice.createInjector(..., new ServletModule() {
   7293 
   7294      {@literal @}Override
   7295      protected void configureServlets() {
   7296        <b>serve("*.html").with(MyServlet.class)</b>
   7297      }
   7298    }
   7299  </pre>
   7300 
   7301  This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service
   7302  any web pages ending in {@code .html}. You can also use a path-style syntax to register
   7303  servlets:
   7304 
   7305  <pre>
   7306        <b>serve("/my/*").with(MyServlet.class)</b>
   7307  </pre>
   7308 
   7309  Every servlet (or filter) is required to be a singleton. If you cannot annotate the class
   7310  directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in
   7311  your module. Mapping a servlet that is bound under any other scope is an error.
   7312 
   7313  <p>
   7314  <h4>Dispatch Order</h4>
   7315  You are free to register as many servlets and filters as you like this way. They will
   7316  be compared and dispatched in the order in which the filter methods are called:
   7317 
   7318  <pre>
   7319 
   7320    Guice.createInjector(..., new ServletModule() {
   7321 
   7322      {@literal @}Override
   7323      protected void configureServlets() {
   7324        filter("/*").through(MyFilter.class);
   7325        filter("*.css").through(MyCssFilter.class);
   7326        filter("*.jpg").through(new MyJpgFilter());
   7327        // etc..
   7328 
   7329        serve("*.html").with(MyServlet.class);
   7330        serve("/my/*").with(MyServlet.class);
   7331        serve("*.jpg").with(new MyServlet());
   7332        // etc..
   7333       }
   7334     }
   7335  </pre>
   7336  This will traverse down the list of rules in lexical order. For example, a url
   7337   "{@code /my/file.js}" (after it runs through the matching filters) will first
   7338   be compared against the servlet mapping:
   7339  
   7340  <pre>
   7341        serve("*.html").with(MyServlet.class);
   7342  </pre>
   7343  And failing that, it will descend to the next servlet mapping:
   7344 
   7345  <pre>
   7346        serve("/my/*").with(MyServlet.class);
   7347  </pre>
   7348 
   7349  Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These
   7350  two mapping rules can also be written in more compact form using varargs syntax:
   7351 
   7352  <pre>
   7353        serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class);
   7354  </pre>
   7355  
   7356  This way you can map several URI patterns to the same servlet. A similar syntax is
   7357  also available for filter mappings.
   7358 
   7359  <p>
   7360  <h4>Regular Expressions</h4>
   7361  You can also map servlets (or filters) to URIs using regular expressions:
   7362  <pre>
   7363     <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b>
   7364  </pre>
   7365 
   7366  This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as:
   7367  <ul>
   7368  <li>http://www.google.com/ajax.html</li>
   7369  <li>http://www.google.com/content/ajax/index</li>
   7370  <li>http://www.google.com/it/is_totally_ajaxian</li>
   7371  </ul>
   7372 
   7373 
   7374  <h3>Initialization Parameters</h3>
   7375 
   7376  Servlets (and filters) allow you to pass in init params
   7377  using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to
   7378  Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter
   7379  name/value pairs. For example, to initialize {@code MyServlet} with two parameters
   7380  ({@code name="Dhanji", site="google.com"}) you could write:
   7381 
   7382  <pre>
   7383   Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;();
   7384   params.put("name", "Dhanji");
   7385   params.put("site", "google.com");
   7386 
   7387   ...
   7388       serve("/*").with(MyServlet.class, <b>params</b>)
   7389  </pre>
   7390 
   7391  <p>
   7392  <h3>Binding Keys</h3>
   7393 
   7394  You can also bind keys rather than classes. This lets you hide
   7395  implementations with package-local visbility and expose them using
   7396  only a Guice module and an annotation:
   7397 
   7398  <pre>
   7399   ...
   7400       filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>);
   7401  </pre>
   7402 
   7403  Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a
   7404  custom binding annotation. Elsewhere (in one of your own modules) you can bind this
   7405  filter's implementation:
   7406 
   7407  <pre>
   7408    bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class);
   7409  </pre>
   7410 
   7411  See {@link com.google.inject.Binder} for more information on binding syntax.
   7412 
   7413  <p>
   7414  <h3>Multiple Modules</h3>
   7415 
   7416  It is sometimes useful to capture servlet and filter mappings from multiple different
   7417  modules. This is essential if you want to package and offer drop-in Guice plugins that
   7418  provide servlet functionality.
   7419 
   7420  <p>
   7421  Guice Servlet allows you to register several instances of {@code ServletModule} to your
   7422  injector. The order in which these modules are installed determines the dispatch order
   7423  of filters and the precedence order of servlets. For example, if you had two servlet modules,
   7424  {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped
   7425  to the same URI pattern, {@code "/*"}:
   7426 
   7427  <p>
   7428  In {@code RpcModule}:
   7429  <pre>
   7430      filter("/*").through(RpcFilter.class);
   7431  </pre>
   7432 
   7433  In {@code WebServiceModule}:
   7434  <pre>
   7435      filter("/*").through(WebServiceFilter.class);
   7436  </pre>
   7437 
   7438  Then the order in which these filters are dispatched is determined by the order in which
   7439  the modules are installed:
   7440 
   7441  <pre>
   7442    <b>install(new WebServiceModule());</b>
   7443    install(new RpcModule());
   7444  </pre>
   7445 
   7446  In the case shown above {@code WebServiceFilter} will run first.
   7447  
   7448  @since 2.0]]>
   7449       </doc>
   7450     </method>
   7451     <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   7452       abstract="false" native="false" synchronized="false"
   7453       static="false" final="true" visibility="protected"
   7454       deprecated="not deprecated">
   7455       <param name="urlPattern" type="java.lang.String"/>
   7456       <param name="morePatterns" type="java.lang.String[]"/>
   7457       <doc>
   7458       <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
   7459  @since 2.0]]>
   7460       </doc>
   7461     </method>
   7462     <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   7463       abstract="false" native="false" synchronized="false"
   7464       static="false" final="true" visibility="protected"
   7465       deprecated="not deprecated">
   7466       <param name="urlPatterns" type="java.lang.Iterable&lt;java.lang.String&gt;"/>
   7467       <doc>
   7468       <![CDATA[@param urlPatterns Any Servlet-style patterns. examples: /*, /html/*, *.html, etc.
   7469  @since 4.1]]>
   7470       </doc>
   7471     </method>
   7472     <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   7473       abstract="false" native="false" synchronized="false"
   7474       static="false" final="true" visibility="protected"
   7475       deprecated="not deprecated">
   7476       <param name="regex" type="java.lang.String"/>
   7477       <param name="regexes" type="java.lang.String[]"/>
   7478       <doc>
   7479       <![CDATA[@param regex Any Java-style regular expression.
   7480  @since 2.0]]>
   7481       </doc>
   7482     </method>
   7483     <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   7484       abstract="false" native="false" synchronized="false"
   7485       static="false" final="true" visibility="protected"
   7486       deprecated="not deprecated">
   7487       <param name="regexes" type="java.lang.Iterable&lt;java.lang.String&gt;"/>
   7488       <doc>
   7489       <![CDATA[@param regexes Any Java-style regular expressions.
   7490  @since 4.1]]>
   7491       </doc>
   7492     </method>
   7493     <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   7494       abstract="false" native="false" synchronized="false"
   7495       static="false" final="true" visibility="protected"
   7496       deprecated="not deprecated">
   7497       <param name="urlPattern" type="java.lang.String"/>
   7498       <param name="morePatterns" type="java.lang.String[]"/>
   7499       <doc>
   7500       <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
   7501  @since 2.0]]>
   7502       </doc>
   7503     </method>
   7504     <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   7505       abstract="false" native="false" synchronized="false"
   7506       static="false" final="true" visibility="protected"
   7507       deprecated="not deprecated">
   7508       <param name="urlPatterns" type="java.lang.Iterable&lt;java.lang.String&gt;"/>
   7509       <doc>
   7510       <![CDATA[@param urlPatterns Any Servlet-style patterns. examples: /*, /html/*, *.html, etc.
   7511  @since 4.1]]>
   7512       </doc>
   7513     </method>
   7514     <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   7515       abstract="false" native="false" synchronized="false"
   7516       static="false" final="true" visibility="protected"
   7517       deprecated="not deprecated">
   7518       <param name="regex" type="java.lang.String"/>
   7519       <param name="regexes" type="java.lang.String[]"/>
   7520       <doc>
   7521       <![CDATA[@param regex Any Java-style regular expression.
   7522  @since 2.0]]>
   7523       </doc>
   7524     </method>
   7525     <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   7526       abstract="false" native="false" synchronized="false"
   7527       static="false" final="true" visibility="protected"
   7528       deprecated="not deprecated">
   7529       <param name="regexes" type="java.lang.Iterable&lt;java.lang.String&gt;"/>
   7530       <doc>
   7531       <![CDATA[@param regexes Any Java-style regular expressions.
   7532  @since 4.1]]>
   7533       </doc>
   7534     </method>
   7535     <method name="getServletContext" return="javax.servlet.ServletContext"
   7536       abstract="false" native="false" synchronized="false"
   7537       static="false" final="true" visibility="protected"
   7538       deprecated="not deprecated">
   7539       <doc>
   7540       <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to
   7541  create your injector. Otherwise, it returns null.
   7542  @return The current servlet context.
   7543  @since 3.0]]>
   7544       </doc>
   7545     </method>
   7546     <doc>
   7547     <![CDATA[Configures the servlet scopes and creates bindings for the servlet API
   7548  objects so you can inject the request, response, session, etc.
   7549 
   7550  <p>
   7551  You should subclass this module to register servlets and
   7552  filters in the {@link #configureServlets()} method.
   7553 
   7554  @author crazybob (a] google.com (Bob Lee)
   7555  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   7556     </doc>
   7557   </class>
   7558   <!-- end class com.google.inject.servlet.ServletModule -->
   7559   <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
   7560   <interface name="ServletModule.FilterKeyBindingBuilder"    abstract="true"
   7561     static="true" final="false" visibility="public"
   7562     deprecated="not deprecated">
   7563     <method name="through"
   7564       abstract="true" native="false" synchronized="false"
   7565       static="false" final="false" visibility="public"
   7566       deprecated="not deprecated">
   7567       <param name="filterKey" type="java.lang.Class&lt;? extends javax.servlet.Filter&gt;"/>
   7568     </method>
   7569     <method name="through"
   7570       abstract="true" native="false" synchronized="false"
   7571       static="false" final="false" visibility="public"
   7572       deprecated="not deprecated">
   7573       <param name="filterKey" type="com.google.inject.Key&lt;? extends javax.servlet.Filter&gt;"/>
   7574     </method>
   7575     <method name="through"
   7576       abstract="true" native="false" synchronized="false"
   7577       static="false" final="false" visibility="public"
   7578       deprecated="not deprecated">
   7579       <param name="filter" type="javax.servlet.Filter"/>
   7580       <doc>
   7581       <![CDATA[@since 3.0]]>
   7582       </doc>
   7583     </method>
   7584     <method name="through"
   7585       abstract="true" native="false" synchronized="false"
   7586       static="false" final="false" visibility="public"
   7587       deprecated="not deprecated">
   7588       <param name="filterKey" type="java.lang.Class&lt;? extends javax.servlet.Filter&gt;"/>
   7589       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7590     </method>
   7591     <method name="through"
   7592       abstract="true" native="false" synchronized="false"
   7593       static="false" final="false" visibility="public"
   7594       deprecated="not deprecated">
   7595       <param name="filterKey" type="com.google.inject.Key&lt;? extends javax.servlet.Filter&gt;"/>
   7596       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7597     </method>
   7598     <method name="through"
   7599       abstract="true" native="false" synchronized="false"
   7600       static="false" final="false" visibility="public"
   7601       deprecated="not deprecated">
   7602       <param name="filter" type="javax.servlet.Filter"/>
   7603       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7604       <doc>
   7605       <![CDATA[@since 3.0]]>
   7606       </doc>
   7607     </method>
   7608     <doc>
   7609     <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
   7610 
   7611  @since 2.0]]>
   7612     </doc>
   7613   </interface>
   7614   <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
   7615   <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
   7616   <interface name="ServletModule.ServletKeyBindingBuilder"    abstract="true"
   7617     static="true" final="false" visibility="public"
   7618     deprecated="not deprecated">
   7619     <method name="with"
   7620       abstract="true" native="false" synchronized="false"
   7621       static="false" final="false" visibility="public"
   7622       deprecated="not deprecated">
   7623       <param name="servletKey" type="java.lang.Class&lt;? extends javax.servlet.http.HttpServlet&gt;"/>
   7624     </method>
   7625     <method name="with"
   7626       abstract="true" native="false" synchronized="false"
   7627       static="false" final="false" visibility="public"
   7628       deprecated="not deprecated">
   7629       <param name="servletKey" type="com.google.inject.Key&lt;? extends javax.servlet.http.HttpServlet&gt;"/>
   7630     </method>
   7631     <method name="with"
   7632       abstract="true" native="false" synchronized="false"
   7633       static="false" final="false" visibility="public"
   7634       deprecated="not deprecated">
   7635       <param name="servlet" type="javax.servlet.http.HttpServlet"/>
   7636       <doc>
   7637       <![CDATA[@since 3.0]]>
   7638       </doc>
   7639     </method>
   7640     <method name="with"
   7641       abstract="true" native="false" synchronized="false"
   7642       static="false" final="false" visibility="public"
   7643       deprecated="not deprecated">
   7644       <param name="servletKey" type="java.lang.Class&lt;? extends javax.servlet.http.HttpServlet&gt;"/>
   7645       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7646     </method>
   7647     <method name="with"
   7648       abstract="true" native="false" synchronized="false"
   7649       static="false" final="false" visibility="public"
   7650       deprecated="not deprecated">
   7651       <param name="servletKey" type="com.google.inject.Key&lt;? extends javax.servlet.http.HttpServlet&gt;"/>
   7652       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7653     </method>
   7654     <method name="with"
   7655       abstract="true" native="false" synchronized="false"
   7656       static="false" final="false" visibility="public"
   7657       deprecated="not deprecated">
   7658       <param name="servlet" type="javax.servlet.http.HttpServlet"/>
   7659       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7660       <doc>
   7661       <![CDATA[@since 3.0]]>
   7662       </doc>
   7663     </method>
   7664     <doc>
   7665     <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
   7666 
   7667  @since 2.0]]>
   7668     </doc>
   7669   </interface>
   7670   <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
   7671   <!-- start interface com.google.inject.servlet.ServletModuleBinding -->
   7672   <interface name="ServletModuleBinding"    abstract="true"
   7673     static="false" final="false" visibility="public"
   7674     deprecated="not deprecated">
   7675     <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType"
   7676       abstract="true" native="false" synchronized="false"
   7677       static="false" final="false" visibility="public"
   7678       deprecated="not deprecated">
   7679       <doc>
   7680       <![CDATA[Returns the pattern type that this binding was created with.]]>
   7681       </doc>
   7682     </method>
   7683     <method name="getPattern" return="java.lang.String"
   7684       abstract="true" native="false" synchronized="false"
   7685       static="false" final="false" visibility="public"
   7686       deprecated="not deprecated">
   7687       <doc>
   7688       <![CDATA[Returns the pattern used to match against the binding.]]>
   7689       </doc>
   7690     </method>
   7691     <method name="getInitParams" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   7692       abstract="true" native="false" synchronized="false"
   7693       static="false" final="false" visibility="public"
   7694       deprecated="not deprecated">
   7695       <doc>
   7696       <![CDATA[Returns any context params supplied when creating the binding.]]>
   7697       </doc>
   7698     </method>
   7699     <method name="matchesUri" return="boolean"
   7700       abstract="true" native="false" synchronized="false"
   7701       static="false" final="false" visibility="public"
   7702       deprecated="not deprecated">
   7703       <param name="uri" type="java.lang.String"/>
   7704       <doc>
   7705       <![CDATA[Returns true if the given URI will match this binding.]]>
   7706       </doc>
   7707     </method>
   7708     <doc>
   7709     <![CDATA[A binding created by {@link ServletModule}.
   7710  
   7711  @author sameb (a] google.com (Sam Berlin)
   7712  @since 3.0]]>
   7713     </doc>
   7714   </interface>
   7715   <!-- end interface com.google.inject.servlet.ServletModuleBinding -->
   7716   <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor -->
   7717   <interface name="ServletModuleTargetVisitor"    abstract="true"
   7718     static="false" final="false" visibility="public"
   7719     deprecated="not deprecated">
   7720     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   7721     <method name="visit" return="V"
   7722       abstract="true" native="false" synchronized="false"
   7723       static="false" final="false" visibility="public"
   7724       deprecated="not deprecated">
   7725       <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/>
   7726       <doc>
   7727       <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where
   7728  {@link FilterKeyBindingBuilder#through} is called with a Class or Key.
   7729  
   7730  If multiple patterns were specified, this will be called multiple times.]]>
   7731       </doc>
   7732     </method>
   7733     <method name="visit" return="V"
   7734       abstract="true" native="false" synchronized="false"
   7735       static="false" final="false" visibility="public"
   7736       deprecated="not deprecated">
   7737       <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/>
   7738       <doc>
   7739       <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where
   7740  {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}.
   7741  
   7742  If multiple patterns were specified, this will be called multiple times.]]>
   7743       </doc>
   7744     </method>
   7745     <method name="visit" return="V"
   7746       abstract="true" native="false" synchronized="false"
   7747       static="false" final="false" visibility="public"
   7748       deprecated="not deprecated">
   7749       <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/>
   7750       <doc>
   7751       <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
   7752  {@link ServletKeyBindingBuilder#with}, is called with a Class or Key.
   7753  
   7754  If multiple patterns were specified, this will be called multiple times.]]>
   7755       </doc>
   7756     </method>
   7757     <method name="visit" return="V"
   7758       abstract="true" native="false" synchronized="false"
   7759       static="false" final="false" visibility="public"
   7760       deprecated="not deprecated">
   7761       <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/>
   7762       <doc>
   7763       <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 
   7764  {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}.
   7765  
   7766  If multiple patterns were specified, this will be called multiple times.]]>
   7767       </doc>
   7768     </method>
   7769     <doc>
   7770     <![CDATA[A visitor for the servlet extension.
   7771  
   7772  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   7773  {@link ServletModule} will be visited through this interface.
   7774  
   7775  @since 3.0
   7776  @author sameb (a] google.com (Sam Berlin)]]>
   7777     </doc>
   7778   </interface>
   7779   <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor -->
   7780   <!-- start class com.google.inject.servlet.ServletScopes -->
   7781   <class name="ServletScopes" extends="java.lang.Object"
   7782     abstract="false"
   7783     static="false" final="false" visibility="public"
   7784     deprecated="not deprecated">
   7785     <method name="continueRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7786       abstract="false" native="false" synchronized="false"
   7787       static="true" final="false" visibility="public"
   7788       deprecated="You probably want to use {@code transferRequest} instead">
   7789       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7790       <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
   7791       <doc>
   7792       <![CDATA[Wraps the given callable in a contextual callable that "continues" the
   7793  HTTP request in another thread. This acts as a way of transporting
   7794  request context data from the request processing thread to to worker
   7795  threads.
   7796  <p>
   7797  There are some limitations:
   7798  <ul>
   7799    <li>Derived objects (i.e. anything marked @RequestScoped will not be
   7800       transported.</li>
   7801    <li>State changes to the HttpServletRequest after this method is called
   7802       will not be seen in the continued thread.</li>
   7803    <li>Only the HttpServletRequest, ServletContext and request parameter
   7804       map are available in the continued thread. The response and session
   7805       are not available.</li>
   7806  </ul>
   7807 
   7808  <p>The returned callable will throw a {@link ScopingException} when called
   7809  if the HTTP request scope is still active on the current thread.
   7810 
   7811  @param callable code to be executed in another thread, which depends on
   7812      the request scope.
   7813  @param seedMap the initial set of scoped instances for Guice to seed the
   7814      request scope with.  To seed a key with null, use {@code null} as
   7815      the value.
   7816  @return a callable that will invoke the given callable, making the request
   7817      context available to it.
   7818  @throws OutOfScopeException if this method is called from a non-request
   7819      thread, or if the request has completed.
   7820  
   7821  @since 3.0
   7822  @deprecated You probably want to use {@code transferRequest} instead]]>
   7823       </doc>
   7824     </method>
   7825     <method name="transferRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7826       abstract="false" native="false" synchronized="false"
   7827       static="true" final="false" visibility="public"
   7828       deprecated="not deprecated">
   7829       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7830       <doc>
   7831       <![CDATA[Wraps the given callable in a contextual callable that "transfers" the
   7832  request to another thread. This acts as a way of transporting
   7833  request context data from the current thread to a future thread.
   7834 
   7835  <p>As opposed to {@link #continueRequest}, this method propagates all
   7836  existing scoped objects. The primary use case is in server implementations
   7837  where you can detach the request processing thread while waiting for data,
   7838  and reattach to a different thread to finish processing at a later time.
   7839 
   7840  <p>Because request-scoped objects are not typically thread-safe, the
   7841  callable returned by this method must not be run on a different thread
   7842  until the current request scope has terminated. The returned callable will
   7843  block until the current thread has released the request scope.
   7844 
   7845  @param callable code to be executed in another thread, which depends on
   7846      the request scope.
   7847  @return a callable that will invoke the given callable, making the request
   7848      context available to it.
   7849  @throws OutOfScopeException if this method is called from a non-request
   7850      thread, or if the request has completed.
   7851  @since 4.0]]>
   7852       </doc>
   7853     </method>
   7854     <method name="transferRequest" return="com.google.inject.servlet.RequestScoper"
   7855       abstract="false" native="false" synchronized="false"
   7856       static="true" final="false" visibility="public"
   7857       deprecated="not deprecated">
   7858       <doc>
   7859       <![CDATA[Returns an object that "transfers" the request to another thread. This acts
   7860  as a way of transporting request context data from the current thread to a
   7861  future thread. The transferred scope is the one active for the thread that
   7862  calls this method. A later call to {@code open()} activates the transferred
   7863  the scope, including propagating any objects scoped at that time.
   7864 
   7865  <p>As opposed to {@link #continueRequest}, this method propagates all
   7866  existing scoped objects. The primary use case is in server implementations
   7867  where you can detach the request processing thread while waiting for data,
   7868  and reattach to a different thread to finish processing at a later time.
   7869 
   7870  <p>Because request-scoped objects are not typically thread-safe, it is
   7871  important to avoid applying the same request scope concurrently. The
   7872  returned Scoper will block on open until the current thread has released
   7873  the request scope.
   7874 
   7875  @return an object that when opened will initiate the request scope
   7876  @throws OutOfScopeException if this method is called from a non-request
   7877      thread, or if the request has completed.
   7878  @since 4.1]]>
   7879       </doc>
   7880     </method>
   7881     <method name="isRequestScoped" return="boolean"
   7882       abstract="false" native="false" synchronized="false"
   7883       static="true" final="false" visibility="public"
   7884       deprecated="not deprecated">
   7885       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   7886       <doc>
   7887       <![CDATA[Returns true if {@code binding} is request-scoped. If the binding is a
   7888  {@link com.google.inject.spi.LinkedKeyBinding linked key binding} and
   7889  belongs to an injector (i. e. it was retrieved via
   7890  {@link Injector#getBinding Injector.getBinding()}), then this method will
   7891  also return true if the target binding is request-scoped.
   7892 
   7893  @since 4.0]]>
   7894       </doc>
   7895     </method>
   7896     <method name="scopeRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7897       abstract="false" native="false" synchronized="false"
   7898       static="true" final="false" visibility="public"
   7899       deprecated="not deprecated">
   7900       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7901       <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
   7902       <doc>
   7903       <![CDATA[Scopes the given callable inside a request scope. This is not the same
   7904  as the HTTP request scope, but is used if no HTTP request scope is in
   7905  progress. In this way, keys can be scoped as @RequestScoped and exist
   7906  in non-HTTP requests (for example: RPC requests) as well as in HTTP
   7907  request threads.
   7908 
   7909  <p>The returned callable will throw a {@link ScopingException} when called
   7910  if there is a request scope already active on the current thread.
   7911 
   7912  @param callable code to be executed which depends on the request scope.
   7913      Typically in another thread, but not necessarily so.
   7914  @param seedMap the initial set of scoped instances for Guice to seed the
   7915      request scope with.  To seed a key with null, use {@code null} as
   7916      the value.
   7917  @return a callable that when called will run inside the a request scope
   7918      that exposes the instances in the {@code seedMap} as scoped keys.
   7919  @since 3.0]]>
   7920       </doc>
   7921     </method>
   7922     <method name="scopeRequest" return="com.google.inject.servlet.RequestScoper"
   7923       abstract="false" native="false" synchronized="false"
   7924       static="true" final="false" visibility="public"
   7925       deprecated="not deprecated">
   7926       <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
   7927       <doc>
   7928       <![CDATA[Returns an object that will apply request scope to a block of code. This is
   7929  not the same as the HTTP request scope, but is used if no HTTP request
   7930  scope is in progress. In this way, keys can be scoped as @RequestScoped and
   7931  exist in non-HTTP requests (for example: RPC requests) as well as in HTTP
   7932  request threads.
   7933 
   7934  <p>The returned object will throw a {@link ScopingException} when opened
   7935  if there is a request scope already active on the current thread.
   7936 
   7937  @param seedMap the initial set of scoped instances for Guice to seed the
   7938      request scope with.  To seed a key with null, use {@code null} as
   7939      the value.
   7940  @return an object that when opened will initiate the request scope
   7941  @since 4.1]]>
   7942       </doc>
   7943     </method>
   7944     <field name="REQUEST" type="com.google.inject.Scope"
   7945       transient="false" volatile="false"
   7946       static="true" final="true" visibility="public"
   7947       deprecated="not deprecated">
   7948       <doc>
   7949       <![CDATA[HTTP servlet request scope.]]>
   7950       </doc>
   7951     </field>
   7952     <field name="SESSION" type="com.google.inject.Scope"
   7953       transient="false" volatile="false"
   7954       static="true" final="true" visibility="public"
   7955       deprecated="not deprecated">
   7956       <doc>
   7957       <![CDATA[HTTP session scope.]]>
   7958       </doc>
   7959     </field>
   7960     <doc>
   7961     <![CDATA[Servlet scopes.
   7962 
   7963  @author crazybob (a] google.com (Bob Lee)]]>
   7964     </doc>
   7965   </class>
   7966   <!-- end class com.google.inject.servlet.ServletScopes -->
   7967   <!-- start class com.google.inject.servlet.SessionScoped -->
   7968   <class name="SessionScoped"    abstract="true"
   7969     static="false" final="false" visibility="public"
   7970     deprecated="not deprecated">
   7971     <implements name="java.lang.annotation.Annotation"/>
   7972     <doc>
   7973     <![CDATA[Apply this to implementation classes when you want one instance per session.
   7974 
   7975  @see com.google.inject.Scopes#SINGLETON
   7976  @author crazybob (a] google.com (Bob Lee)]]>
   7977     </doc>
   7978   </class>
   7979   <!-- end class com.google.inject.servlet.SessionScoped -->
   7980   <!-- start class com.google.inject.servlet.UriPatternType -->
   7981   <class name="UriPatternType" extends="java.lang.Enum&lt;com.google.inject.servlet.UriPatternType&gt;"
   7982     abstract="false"
   7983     static="false" final="true" visibility="public"
   7984     deprecated="not deprecated">
   7985     <method name="values" return="com.google.inject.servlet.UriPatternType[]"
   7986       abstract="false" native="false" synchronized="false"
   7987       static="true" final="false" visibility="public"
   7988       deprecated="not deprecated">
   7989     </method>
   7990     <method name="valueOf" return="com.google.inject.servlet.UriPatternType"
   7991       abstract="false" native="false" synchronized="false"
   7992       static="true" final="false" visibility="public"
   7993       deprecated="not deprecated">
   7994       <param name="name" type="java.lang.String"/>
   7995     </method>
   7996     <doc>
   7997     <![CDATA[An enumeration of the available URI-pattern matching styles
   7998  
   7999  @since 3.0]]>
   8000     </doc>
   8001   </class>
   8002   <!-- end class com.google.inject.servlet.UriPatternType -->
   8003 </package>
   8004 <package name="com.google.inject.spi">
   8005   <!-- start interface com.google.inject.spi.BindingScopingVisitor -->
   8006   <interface name="BindingScopingVisitor"    abstract="true"
   8007     static="false" final="false" visibility="public"
   8008     deprecated="not deprecated">
   8009     <method name="visitEagerSingleton" return="V"
   8010       abstract="true" native="false" synchronized="false"
   8011       static="false" final="false" visibility="public"
   8012       deprecated="not deprecated">
   8013       <doc>
   8014       <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and
   8015  injector bindings.]]>
   8016       </doc>
   8017     </method>
   8018     <method name="visitScope" return="V"
   8019       abstract="true" native="false" synchronized="false"
   8020       static="false" final="false" visibility="public"
   8021       deprecated="not deprecated">
   8022       <param name="scope" type="com.google.inject.Scope"/>
   8023       <doc>
   8024       <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]>
   8025       </doc>
   8026     </method>
   8027     <method name="visitScopeAnnotation" return="V"
   8028       abstract="true" native="false" synchronized="false"
   8029       static="false" final="false" visibility="public"
   8030       deprecated="not deprecated">
   8031       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   8032       <doc>
   8033       <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance
   8034  that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class,
   8035  Scope) Binder.bindScope()}.]]>
   8036       </doc>
   8037     </method>
   8038     <method name="visitNoScoping" return="V"
   8039       abstract="true" native="false" synchronized="false"
   8040       static="false" final="false" visibility="public"
   8041       deprecated="not deprecated">
   8042       <doc>
   8043       <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the
   8044  injector should use scoping annotations to find a scope. On an injector, it indicates that
   8045  no scope is applied to the binding. An unscoped binding will behave like a scoped one when it
   8046  is linked to a scoped binding.]]>
   8047       </doc>
   8048     </method>
   8049     <doc>
   8050     <![CDATA[Visits each of the strategies used to scope an injection.
   8051 
   8052  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8053      {@code return null} if no return type is needed.
   8054  @since 2.0]]>
   8055     </doc>
   8056   </interface>
   8057   <!-- end interface com.google.inject.spi.BindingScopingVisitor -->
   8058   <!-- start interface com.google.inject.spi.BindingTargetVisitor -->
   8059   <interface name="BindingTargetVisitor"    abstract="true"
   8060     static="false" final="false" visibility="public"
   8061     deprecated="not deprecated">
   8062     <method name="visit" return="V"
   8063       abstract="true" native="false" synchronized="false"
   8064       static="false" final="false" visibility="public"
   8065       deprecated="not deprecated">
   8066       <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
   8067       <doc>
   8068       <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is
   8069  found in both module and injector bindings.]]>
   8070       </doc>
   8071     </method>
   8072     <method name="visit" return="V"
   8073       abstract="true" native="false" synchronized="false"
   8074       static="false" final="false" visibility="public"
   8075       deprecated="not deprecated">
   8076       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
   8077       <doc>
   8078       <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve
   8079  injections. This target is found in both module and injector bindings.]]>
   8080       </doc>
   8081     </method>
   8082     <method name="visit" return="V"
   8083       abstract="true" native="false" synchronized="false"
   8084       static="false" final="false" visibility="public"
   8085       deprecated="not deprecated">
   8086       <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
   8087       <doc>
   8088       <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then
   8089  that provider's {@code get} method is invoked. This target is found in both module and injector
   8090  bindings.]]>
   8091       </doc>
   8092     </method>
   8093     <method name="visit" return="V"
   8094       abstract="true" native="false" synchronized="false"
   8095       static="false" final="false" visibility="public"
   8096       deprecated="not deprecated">
   8097       <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
   8098       <doc>
   8099       <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This
   8100  target is found in both module and injector bindings.]]>
   8101       </doc>
   8102     </method>
   8103     <method name="visit" return="V"
   8104       abstract="true" native="false" synchronized="false"
   8105       static="false" final="false" visibility="public"
   8106       deprecated="not deprecated">
   8107       <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
   8108       <doc>
   8109       <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only
   8110  found in injector bindings.]]>
   8111       </doc>
   8112     </method>
   8113     <method name="visit" return="V"
   8114       abstract="true" native="false" synchronized="false"
   8115       static="false" final="false" visibility="public"
   8116       deprecated="not deprecated">
   8117       <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
   8118       <doc>
   8119       <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates
   8120  that the injector should use its implicit binding strategies to resolve injections.]]>
   8121       </doc>
   8122     </method>
   8123     <method name="visit" return="V"
   8124       abstract="true" native="false" synchronized="false"
   8125       static="false" final="false" visibility="public"
   8126       deprecated="not deprecated">
   8127       <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
   8128       <doc>
   8129       <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking
   8130  {@code constructor}. This target is found only on injector bindings.]]>
   8131       </doc>
   8132     </method>
   8133     <method name="visit" return="V"
   8134       abstract="true" native="false" synchronized="false"
   8135       static="false" final="false" visibility="public"
   8136       deprecated="not deprecated">
   8137       <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
   8138       <doc>
   8139       <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding
   8140  has the same binding annotation but a different type. This target is found only on injector
   8141  bindings.]]>
   8142       </doc>
   8143     </method>
   8144     <method name="visit" return="V"
   8145       abstract="true" native="false" synchronized="false"
   8146       static="false" final="false" visibility="public"
   8147       deprecated="not deprecated">
   8148       <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
   8149       <doc>
   8150       <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the
   8151  provided type. This target is found only on injector bindings.]]>
   8152       </doc>
   8153     </method>
   8154     <doc>
   8155     <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection.
   8156 
   8157  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8158      {@code return null} if no return type is needed.
   8159  @since 2.0]]>
   8160     </doc>
   8161   </interface>
   8162   <!-- end interface com.google.inject.spi.BindingTargetVisitor -->
   8163   <!-- start interface com.google.inject.spi.ConstructorBinding -->
   8164   <interface name="ConstructorBinding"    abstract="true"
   8165     static="false" final="false" visibility="public"
   8166     deprecated="not deprecated">
   8167     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8168     <implements name="com.google.inject.spi.HasDependencies"/>
   8169     <method name="getConstructor" return="com.google.inject.spi.InjectionPoint"
   8170       abstract="true" native="false" synchronized="false"
   8171       static="false" final="false" visibility="public"
   8172       deprecated="not deprecated">
   8173       <doc>
   8174       <![CDATA[Gets the constructor this binding injects.]]>
   8175       </doc>
   8176     </method>
   8177     <method name="getInjectableMembers" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8178       abstract="true" native="false" synchronized="false"
   8179       static="false" final="false" visibility="public"
   8180       deprecated="not deprecated">
   8181       <doc>
   8182       <![CDATA[Returns all instance method and field injection points on {@code type}.
   8183 
   8184  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8185       fields are returned and then all methods. Within the fields, supertype fields are returned
   8186       before subtype fields. Similarly, supertype methods are returned before subtype methods.]]>
   8187       </doc>
   8188     </method>
   8189     <method name="getMethodInterceptors" return="java.util.Map&lt;java.lang.reflect.Method, java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;&gt;"
   8190       abstract="true" native="false" synchronized="false"
   8191       static="false" final="false" visibility="public"
   8192       deprecated="not deprecated">
   8193       <doc>
   8194       <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied.
   8195 
   8196  @return a possibly empty map]]>
   8197       </doc>
   8198     </method>
   8199     <doc>
   8200     <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is
   8201  instantiated by invoking the constructor.
   8202 
   8203  @author jessewilson (a] google.com (Jesse Wilson)
   8204  @since 2.0]]>
   8205     </doc>
   8206   </interface>
   8207   <!-- end interface com.google.inject.spi.ConstructorBinding -->
   8208   <!-- start interface com.google.inject.spi.ConvertedConstantBinding -->
   8209   <interface name="ConvertedConstantBinding"    abstract="true"
   8210     static="false" final="false" visibility="public"
   8211     deprecated="not deprecated">
   8212     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8213     <implements name="com.google.inject.spi.HasDependencies"/>
   8214     <method name="getValue" return="T"
   8215       abstract="true" native="false" synchronized="false"
   8216       static="false" final="false" visibility="public"
   8217       deprecated="not deprecated">
   8218       <doc>
   8219       <![CDATA[Returns the converted value.]]>
   8220       </doc>
   8221     </method>
   8222     <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding"
   8223       abstract="true" native="false" synchronized="false"
   8224       static="false" final="false" visibility="public"
   8225       deprecated="not deprecated">
   8226       <doc>
   8227       <![CDATA[Returns the type converter binding used to convert the constant.
   8228  
   8229  @since 3.0]]>
   8230       </doc>
   8231     </method>
   8232     <method name="getSourceKey" return="com.google.inject.Key&lt;java.lang.String&gt;"
   8233       abstract="true" native="false" synchronized="false"
   8234       static="false" final="false" visibility="public"
   8235       deprecated="not deprecated">
   8236       <doc>
   8237       <![CDATA[Returns the key for the source binding. That binding can be retrieved from an injector using
   8238  {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
   8239       </doc>
   8240     </method>
   8241     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   8242       abstract="true" native="false" synchronized="false"
   8243       static="false" final="false" visibility="public"
   8244       deprecated="not deprecated">
   8245       <doc>
   8246       <![CDATA[Returns a singleton set containing only the converted key.]]>
   8247       </doc>
   8248     </method>
   8249     <doc>
   8250     <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same
   8251  binding annotation but a different type.
   8252 
   8253  @author jessewilson (a] google.com (Jesse Wilson)
   8254  @since 2.0]]>
   8255     </doc>
   8256   </interface>
   8257   <!-- end interface com.google.inject.spi.ConvertedConstantBinding -->
   8258   <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor -->
   8259   <class name="DefaultBindingScopingVisitor" extends="java.lang.Object"
   8260     abstract="false"
   8261     static="false" final="false" visibility="public"
   8262     deprecated="not deprecated">
   8263     <implements name="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
   8264     <constructor name="DefaultBindingScopingVisitor"
   8265       static="false" final="false" visibility="public"
   8266       deprecated="not deprecated">
   8267     </constructor>
   8268     <method name="visitOther" return="V"
   8269       abstract="false" native="false" synchronized="false"
   8270       static="false" final="false" visibility="protected"
   8271       deprecated="not deprecated">
   8272       <doc>
   8273       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   8274       </doc>
   8275     </method>
   8276     <method name="visitEagerSingleton" return="V"
   8277       abstract="false" native="false" synchronized="false"
   8278       static="false" final="false" visibility="public"
   8279       deprecated="not deprecated">
   8280     </method>
   8281     <method name="visitScope" return="V"
   8282       abstract="false" native="false" synchronized="false"
   8283       static="false" final="false" visibility="public"
   8284       deprecated="not deprecated">
   8285       <param name="scope" type="com.google.inject.Scope"/>
   8286     </method>
   8287     <method name="visitScopeAnnotation" return="V"
   8288       abstract="false" native="false" synchronized="false"
   8289       static="false" final="false" visibility="public"
   8290       deprecated="not deprecated">
   8291       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   8292     </method>
   8293     <method name="visitNoScoping" return="V"
   8294       abstract="false" native="false" synchronized="false"
   8295       static="false" final="false" visibility="public"
   8296       deprecated="not deprecated">
   8297     </method>
   8298     <doc>
   8299     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
   8300  {@link #visitOther()}, returning its result.
   8301 
   8302  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8303      {@code return null} if no return type is needed.
   8304  
   8305  @author jessewilson (a] google.com (Jesse Wilson)
   8306  @since 2.0]]>
   8307     </doc>
   8308   </class>
   8309   <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor -->
   8310   <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor -->
   8311   <class name="DefaultBindingTargetVisitor" extends="java.lang.Object"
   8312     abstract="true"
   8313     static="false" final="false" visibility="public"
   8314     deprecated="not deprecated">
   8315     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   8316     <constructor name="DefaultBindingTargetVisitor"
   8317       static="false" final="false" visibility="public"
   8318       deprecated="not deprecated">
   8319     </constructor>
   8320     <method name="visitOther" return="V"
   8321       abstract="false" native="false" synchronized="false"
   8322       static="false" final="false" visibility="protected"
   8323       deprecated="not deprecated">
   8324       <param name="binding" type="com.google.inject.Binding&lt;? extends T&gt;"/>
   8325       <doc>
   8326       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   8327       </doc>
   8328     </method>
   8329     <method name="visit" return="V"
   8330       abstract="false" native="false" synchronized="false"
   8331       static="false" final="false" visibility="public"
   8332       deprecated="not deprecated">
   8333       <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
   8334     </method>
   8335     <method name="visit" return="V"
   8336       abstract="false" native="false" synchronized="false"
   8337       static="false" final="false" visibility="public"
   8338       deprecated="not deprecated">
   8339       <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
   8340     </method>
   8341     <method name="visit" return="V"
   8342       abstract="false" native="false" synchronized="false"
   8343       static="false" final="false" visibility="public"
   8344       deprecated="not deprecated">
   8345       <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
   8346     </method>
   8347     <method name="visit" return="V"
   8348       abstract="false" native="false" synchronized="false"
   8349       static="false" final="false" visibility="public"
   8350       deprecated="not deprecated">
   8351       <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
   8352     </method>
   8353     <method name="visit" return="V"
   8354       abstract="false" native="false" synchronized="false"
   8355       static="false" final="false" visibility="public"
   8356       deprecated="not deprecated">
   8357       <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
   8358     </method>
   8359     <method name="visit" return="V"
   8360       abstract="false" native="false" synchronized="false"
   8361       static="false" final="false" visibility="public"
   8362       deprecated="not deprecated">
   8363       <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
   8364     </method>
   8365     <method name="visit" return="V"
   8366       abstract="false" native="false" synchronized="false"
   8367       static="false" final="false" visibility="public"
   8368       deprecated="not deprecated">
   8369       <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
   8370     </method>
   8371     <method name="visit" return="V"
   8372       abstract="false" native="false" synchronized="false"
   8373       static="false" final="false" visibility="public"
   8374       deprecated="not deprecated">
   8375       <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
   8376     </method>
   8377     <method name="visit" return="V"
   8378       abstract="false" native="false" synchronized="false"
   8379       static="false" final="false" visibility="public"
   8380       deprecated="not deprecated">
   8381       <param name="providerBinding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
   8382     </method>
   8383     <doc>
   8384     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link
   8385  #visitOther(Binding)}, returning its result.
   8386 
   8387  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8388      {@code return null} if no return type is needed.
   8389 
   8390  @author jessewilson (a] google.com (Jesse Wilson)
   8391  @since 2.0]]>
   8392     </doc>
   8393   </class>
   8394   <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor -->
   8395   <!-- start class com.google.inject.spi.DefaultElementVisitor -->
   8396   <class name="DefaultElementVisitor" extends="java.lang.Object"
   8397     abstract="true"
   8398     static="false" final="false" visibility="public"
   8399     deprecated="not deprecated">
   8400     <implements name="com.google.inject.spi.ElementVisitor&lt;V&gt;"/>
   8401     <constructor name="DefaultElementVisitor"
   8402       static="false" final="false" visibility="public"
   8403       deprecated="not deprecated">
   8404     </constructor>
   8405     <method name="visitOther" return="V"
   8406       abstract="false" native="false" synchronized="false"
   8407       static="false" final="false" visibility="protected"
   8408       deprecated="not deprecated">
   8409       <param name="element" type="com.google.inject.spi.Element"/>
   8410       <doc>
   8411       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   8412       </doc>
   8413     </method>
   8414     <method name="visit" return="V"
   8415       abstract="false" native="false" synchronized="false"
   8416       static="false" final="false" visibility="public"
   8417       deprecated="not deprecated">
   8418       <param name="message" type="com.google.inject.spi.Message"/>
   8419     </method>
   8420     <method name="visit" return="V"
   8421       abstract="false" native="false" synchronized="false"
   8422       static="false" final="false" visibility="public"
   8423       deprecated="not deprecated">
   8424       <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
   8425     </method>
   8426     <method name="visit" return="V"
   8427       abstract="false" native="false" synchronized="false"
   8428       static="false" final="false" visibility="public"
   8429       deprecated="not deprecated">
   8430       <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/>
   8431     </method>
   8432     <method name="visit" return="V"
   8433       abstract="false" native="false" synchronized="false"
   8434       static="false" final="false" visibility="public"
   8435       deprecated="not deprecated">
   8436       <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/>
   8437     </method>
   8438     <method name="visit" return="V"
   8439       abstract="false" native="false" synchronized="false"
   8440       static="false" final="false" visibility="public"
   8441       deprecated="not deprecated">
   8442       <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/>
   8443     </method>
   8444     <method name="visit" return="V"
   8445       abstract="false" native="false" synchronized="false"
   8446       static="false" final="false" visibility="public"
   8447       deprecated="not deprecated">
   8448       <param name="providerLookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
   8449     </method>
   8450     <method name="visit" return="V"
   8451       abstract="false" native="false" synchronized="false"
   8452       static="false" final="false" visibility="public"
   8453       deprecated="not deprecated">
   8454       <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
   8455     </method>
   8456     <method name="visit" return="V"
   8457       abstract="false" native="false" synchronized="false"
   8458       static="false" final="false" visibility="public"
   8459       deprecated="not deprecated">
   8460       <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/>
   8461     </method>
   8462     <method name="visit" return="V"
   8463       abstract="false" native="false" synchronized="false"
   8464       static="false" final="false" visibility="public"
   8465       deprecated="not deprecated">
   8466       <param name="privateElements" type="com.google.inject.spi.PrivateElements"/>
   8467     </method>
   8468     <method name="visit" return="V"
   8469       abstract="false" native="false" synchronized="false"
   8470       static="false" final="false" visibility="public"
   8471       deprecated="not deprecated">
   8472       <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
   8473     </method>
   8474     <method name="visit" return="V"
   8475       abstract="false" native="false" synchronized="false"
   8476       static="false" final="false" visibility="public"
   8477       deprecated="not deprecated">
   8478       <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
   8479     </method>
   8480     <method name="visit" return="V"
   8481       abstract="false" native="false" synchronized="false"
   8482       static="false" final="false" visibility="public"
   8483       deprecated="not deprecated">
   8484       <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/>
   8485     </method>
   8486     <method name="visit" return="V"
   8487       abstract="false" native="false" synchronized="false"
   8488       static="false" final="false" visibility="public"
   8489       deprecated="not deprecated">
   8490       <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
   8491     </method>
   8492     <method name="visit" return="V"
   8493       abstract="false" native="false" synchronized="false"
   8494       static="false" final="false" visibility="public"
   8495       deprecated="not deprecated">
   8496       <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
   8497     </method>
   8498     <method name="visit" return="V"
   8499       abstract="false" native="false" synchronized="false"
   8500       static="false" final="false" visibility="public"
   8501       deprecated="not deprecated">
   8502       <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/>
   8503     </method>
   8504     <method name="visit" return="V"
   8505       abstract="false" native="false" synchronized="false"
   8506       static="false" final="false" visibility="public"
   8507       deprecated="not deprecated">
   8508       <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/>
   8509     </method>
   8510     <method name="visit" return="V"
   8511       abstract="false" native="false" synchronized="false"
   8512       static="false" final="false" visibility="public"
   8513       deprecated="not deprecated">
   8514       <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/>
   8515     </method>
   8516     <doc>
   8517     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
   8518  {@link #visitOther(Element)}, returning its result.
   8519 
   8520  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8521      {@code return null} if no return type is needed.
   8522 
   8523  @author sberlin (a] gmail.com (Sam Berlin)
   8524  @since 2.0]]>
   8525     </doc>
   8526   </class>
   8527   <!-- end class com.google.inject.spi.DefaultElementVisitor -->
   8528   <!-- start class com.google.inject.spi.Dependency -->
   8529   <class name="Dependency" extends="java.lang.Object"
   8530     abstract="false"
   8531     static="false" final="true" visibility="public"
   8532     deprecated="not deprecated">
   8533     <method name="get" return="com.google.inject.spi.Dependency&lt;T&gt;"
   8534       abstract="false" native="false" synchronized="false"
   8535       static="true" final="false" visibility="public"
   8536       deprecated="not deprecated">
   8537       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   8538       <doc>
   8539       <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is
   8540  nullable.]]>
   8541       </doc>
   8542     </method>
   8543     <method name="forInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   8544       abstract="false" native="false" synchronized="false"
   8545       static="true" final="false" visibility="public"
   8546       deprecated="not deprecated">
   8547       <param name="injectionPoints" type="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"/>
   8548       <doc>
   8549       <![CDATA[Returns the dependencies from the given injection points.]]>
   8550       </doc>
   8551     </method>
   8552     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   8553       abstract="false" native="false" synchronized="false"
   8554       static="false" final="false" visibility="public"
   8555       deprecated="not deprecated">
   8556       <doc>
   8557       <![CDATA[Returns the key to the binding that satisfies this dependency.]]>
   8558       </doc>
   8559     </method>
   8560     <method name="isNullable" return="boolean"
   8561       abstract="false" native="false" synchronized="false"
   8562       static="false" final="false" visibility="public"
   8563       deprecated="not deprecated">
   8564       <doc>
   8565       <![CDATA[Returns true if null is a legal value for this dependency.]]>
   8566       </doc>
   8567     </method>
   8568     <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
   8569       abstract="false" native="false" synchronized="false"
   8570       static="false" final="false" visibility="public"
   8571       deprecated="not deprecated">
   8572       <doc>
   8573       <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't
   8574  attached to a particular injection point.]]>
   8575       </doc>
   8576     </method>
   8577     <method name="getParameterIndex" return="int"
   8578       abstract="false" native="false" synchronized="false"
   8579       static="false" final="false" visibility="public"
   8580       deprecated="not deprecated">
   8581       <doc>
   8582       <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if
   8583  this dependency does not belong to a parameter list. Only method and constuctor dependencies
   8584  are elements in a parameter list.]]>
   8585       </doc>
   8586     </method>
   8587     <method name="hashCode" return="int"
   8588       abstract="false" native="false" synchronized="false"
   8589       static="false" final="false" visibility="public"
   8590       deprecated="not deprecated">
   8591     </method>
   8592     <method name="equals" return="boolean"
   8593       abstract="false" native="false" synchronized="false"
   8594       static="false" final="false" visibility="public"
   8595       deprecated="not deprecated">
   8596       <param name="o" type="java.lang.Object"/>
   8597     </method>
   8598     <method name="toString" return="java.lang.String"
   8599       abstract="false" native="false" synchronized="false"
   8600       static="false" final="false" visibility="public"
   8601       deprecated="not deprecated">
   8602     </method>
   8603     <doc>
   8604     <![CDATA[A variable that can be resolved by an injector.
   8605 
   8606  <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one
   8607  that's attached to a constructor, method or field.
   8608 
   8609  @author crazybob (a] google.com (Bob Lee)
   8610  @author jessewilson (a] google.com (Jesse Wilson)
   8611  @since 2.0]]>
   8612     </doc>
   8613   </class>
   8614   <!-- end class com.google.inject.spi.Dependency -->
   8615   <!-- start class com.google.inject.spi.DependencyAndSource -->
   8616   <class name="DependencyAndSource" extends="java.lang.Object"
   8617     abstract="false"
   8618     static="false" final="true" visibility="public"
   8619     deprecated="not deprecated">
   8620     <constructor name="DependencyAndSource" type="com.google.inject.spi.Dependency&lt;?&gt;, java.lang.Object"
   8621       static="false" final="false" visibility="public"
   8622       deprecated="not deprecated">
   8623     </constructor>
   8624     <method name="getDependency" return="com.google.inject.spi.Dependency&lt;?&gt;"
   8625       abstract="false" native="false" synchronized="false"
   8626       static="false" final="false" visibility="public"
   8627       deprecated="not deprecated">
   8628       <doc>
   8629       <![CDATA[Returns the Dependency, if one exists. For anything that can be referenced
   8630  by {@link Injector#getBinding}, a dependency exists. A dependency will not
   8631  exist (and this will return null) for types initialized with
   8632  {@link Binder#requestInjection} or {@link Injector#injectMembers(Object)},
   8633  nor will it exist for objects injected into Providers bound with
   8634  LinkedBindingBuilder#toProvider(Provider).]]>
   8635       </doc>
   8636     </method>
   8637     <method name="getBindingSource" return="java.lang.String"
   8638       abstract="false" native="false" synchronized="false"
   8639       static="false" final="false" visibility="public"
   8640       deprecated="not deprecated">
   8641       <doc>
   8642       <![CDATA[Returns a string describing where this dependency was bound. If the binding
   8643  was just-in-time, there is no valid binding source, so this describes the
   8644  class in question.]]>
   8645       </doc>
   8646     </method>
   8647     <method name="toString" return="java.lang.String"
   8648       abstract="false" native="false" synchronized="false"
   8649       static="false" final="false" visibility="public"
   8650       deprecated="not deprecated">
   8651     </method>
   8652     <doc>
   8653     <![CDATA[A combination of a {@link Dependency} and the {@link Binding#getSource()
   8654  source} where the dependency was bound.
   8655  
   8656  @author sameb (a] google.com (Sam Berlin)
   8657  @since 4.0]]>
   8658     </doc>
   8659   </class>
   8660   <!-- end class com.google.inject.spi.DependencyAndSource -->
   8661   <!-- start class com.google.inject.spi.DisableCircularProxiesOption -->
   8662   <class name="DisableCircularProxiesOption" extends="java.lang.Object"
   8663     abstract="false"
   8664     static="false" final="true" visibility="public"
   8665     deprecated="not deprecated">
   8666     <implements name="com.google.inject.spi.Element"/>
   8667     <method name="getSource" return="java.lang.Object"
   8668       abstract="false" native="false" synchronized="false"
   8669       static="false" final="false" visibility="public"
   8670       deprecated="not deprecated">
   8671     </method>
   8672     <method name="applyTo"
   8673       abstract="false" native="false" synchronized="false"
   8674       static="false" final="false" visibility="public"
   8675       deprecated="not deprecated">
   8676       <param name="binder" type="com.google.inject.Binder"/>
   8677     </method>
   8678     <method name="acceptVisitor" return="T"
   8679       abstract="false" native="false" synchronized="false"
   8680       static="false" final="false" visibility="public"
   8681       deprecated="not deprecated">
   8682       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8683     </method>
   8684     <doc>
   8685     <![CDATA[A request to disable circular proxies.
   8686 
   8687  @author sameb (a] google.com (Sam Berlin)
   8688  @since 3.0]]>
   8689     </doc>
   8690   </class>
   8691   <!-- end class com.google.inject.spi.DisableCircularProxiesOption -->
   8692   <!-- start interface com.google.inject.spi.Element -->
   8693   <interface name="Element"    abstract="true"
   8694     static="false" final="false" visibility="public"
   8695     deprecated="not deprecated">
   8696     <method name="getSource" return="java.lang.Object"
   8697       abstract="true" native="false" synchronized="false"
   8698       static="false" final="false" visibility="public"
   8699       deprecated="not deprecated">
   8700       <doc>
   8701       <![CDATA[Returns an arbitrary object containing information about the "place" where this element was
   8702  configured. Used by Guice in the production of descriptive error messages.
   8703 
   8704  <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
   8705  example. Tools should simply call {@code toString()} on the source object if the type is
   8706  unfamiliar.]]>
   8707       </doc>
   8708     </method>
   8709     <method name="acceptVisitor" return="T"
   8710       abstract="true" native="false" synchronized="false"
   8711       static="false" final="false" visibility="public"
   8712       deprecated="not deprecated">
   8713       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8714       <doc>
   8715       <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type.
   8716 
   8717  @param visitor to call back on]]>
   8718       </doc>
   8719     </method>
   8720     <method name="applyTo"
   8721       abstract="true" native="false" synchronized="false"
   8722       static="false" final="false" visibility="public"
   8723       deprecated="not deprecated">
   8724       <param name="binder" type="com.google.inject.Binder"/>
   8725       <doc>
   8726       <![CDATA[Writes this module element to the given binder (optional operation).
   8727 
   8728  @param binder to apply configuration element to
   8729  @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this
   8730      element.]]>
   8731       </doc>
   8732     </method>
   8733     <doc>
   8734     <![CDATA[A core component of a module or injector.
   8735 
   8736  <p>The elements of a module can be inspected, validated and rewritten. Use {@link
   8737  Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements
   8738  from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them.
   8739  This can be used for static analysis and generation of Guice modules.
   8740 
   8741  <p>The elements of an injector can be inspected and exercised. Use {@link
   8742  com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors.
   8743 
   8744  @author jessewilson (a] google.com (Jesse Wilson)
   8745  @author crazybob (a] google.com (Bob Lee)
   8746  @since 2.0]]>
   8747     </doc>
   8748   </interface>
   8749   <!-- end interface com.google.inject.spi.Element -->
   8750   <!-- start class com.google.inject.spi.Elements -->
   8751   <class name="Elements" extends="java.lang.Object"
   8752     abstract="false"
   8753     static="false" final="true" visibility="public"
   8754     deprecated="not deprecated">
   8755     <constructor name="Elements"
   8756       static="false" final="false" visibility="public"
   8757       deprecated="not deprecated">
   8758     </constructor>
   8759     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8760       abstract="false" native="false" synchronized="false"
   8761       static="true" final="false" visibility="public"
   8762       deprecated="not deprecated">
   8763       <param name="modules" type="com.google.inject.Module[]"/>
   8764       <doc>
   8765       <![CDATA[Records the elements executed by {@code modules}.]]>
   8766       </doc>
   8767     </method>
   8768     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8769       abstract="false" native="false" synchronized="false"
   8770       static="true" final="false" visibility="public"
   8771       deprecated="not deprecated">
   8772       <param name="stage" type="com.google.inject.Stage"/>
   8773       <param name="modules" type="com.google.inject.Module[]"/>
   8774       <doc>
   8775       <![CDATA[Records the elements executed by {@code modules}.]]>
   8776       </doc>
   8777     </method>
   8778     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8779       abstract="false" native="false" synchronized="false"
   8780       static="true" final="false" visibility="public"
   8781       deprecated="not deprecated">
   8782       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   8783       <doc>
   8784       <![CDATA[Records the elements executed by {@code modules}.]]>
   8785       </doc>
   8786     </method>
   8787     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8788       abstract="false" native="false" synchronized="false"
   8789       static="true" final="false" visibility="public"
   8790       deprecated="not deprecated">
   8791       <param name="stage" type="com.google.inject.Stage"/>
   8792       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   8793       <doc>
   8794       <![CDATA[Records the elements executed by {@code modules}.]]>
   8795       </doc>
   8796     </method>
   8797     <method name="getModule" return="com.google.inject.Module"
   8798       abstract="false" native="false" synchronized="false"
   8799       static="true" final="false" visibility="public"
   8800       deprecated="not deprecated">
   8801       <param name="elements" type="java.lang.Iterable&lt;? extends com.google.inject.spi.Element&gt;"/>
   8802       <doc>
   8803       <![CDATA[Returns the module composed of {@code elements}.]]>
   8804       </doc>
   8805     </method>
   8806     <doc>
   8807     <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link
   8808  Element#applyTo(Binder) rewritten}.
   8809 
   8810  @author jessewilson (a] google.com (Jesse Wilson)
   8811  @since 2.0]]>
   8812     </doc>
   8813   </class>
   8814   <!-- end class com.google.inject.spi.Elements -->
   8815   <!-- start class com.google.inject.spi.ElementSource -->
   8816   <class name="ElementSource" extends="java.lang.Object"
   8817     abstract="false"
   8818     static="false" final="true" visibility="public"
   8819     deprecated="not deprecated">
   8820     <method name="getOriginalElementSource" return="com.google.inject.spi.ElementSource"
   8821       abstract="false" native="false" synchronized="false"
   8822       static="false" final="false" visibility="public"
   8823       deprecated="not deprecated">
   8824       <doc>
   8825       <![CDATA[Returns the {@link ElementSource} of the element this was created or copied from. If this was
   8826  not created or copied from another element, returns {@code null}.]]>
   8827       </doc>
   8828     </method>
   8829     <method name="getDeclaringSource" return="java.lang.Object"
   8830       abstract="false" native="false" synchronized="false"
   8831       static="false" final="false" visibility="public"
   8832       deprecated="not deprecated">
   8833       <doc>
   8834       <![CDATA[Returns a single location in source code that defines the element. It can be any object
   8835  such as {@link java.lang.reflect.Constructor}, {@link java.lang.reflect.Method},
   8836  {@link java.lang.reflect.Field}, {@link StackTraceElement}, etc. For
   8837  example, if the element is created from a method annotated by {@literal @Provides}, the
   8838  declaring source of element would be the method itself.]]>
   8839       </doc>
   8840     </method>
   8841     <method name="getModuleClassNames" return="java.util.List&lt;java.lang.String&gt;"
   8842       abstract="false" native="false" synchronized="false"
   8843       static="false" final="false" visibility="public"
   8844       deprecated="not deprecated">
   8845       <doc>
   8846       <![CDATA[Returns the class names of modules involved in creating this {@link Element}. The first
   8847  element (index 0) is the class name of module that defined the element, and the last element
   8848  is the class name of root module.]]>
   8849       </doc>
   8850     </method>
   8851     <method name="getModuleConfigurePositionsInStackTrace" return="java.util.List&lt;java.lang.Integer&gt;"
   8852       abstract="false" native="false" synchronized="false"
   8853       static="false" final="false" visibility="public"
   8854       deprecated="not deprecated">
   8855       <doc>
   8856       <![CDATA[Returns the position of {@link com.google.inject.Module#configure configure(Binder)} method
   8857  call in the {@link #getStackTrace stack trace} for modules that their classes returned by
   8858  {@link #getModuleClassNames}. For example, if the stack trace looks like the following:
   8859  <p>
   8860  {@code
   8861   0 - Binder.bind(),
   8862   1 - ModuleTwo.configure(),
   8863   2 - Binder.install(),
   8864   3 - ModuleOne.configure(),
   8865   4 - theRest(). 
   8866  }
   8867  <p>
   8868  1 and 3 are returned.
   8869  <p>
   8870  In the cases where stack trace is not available (i.e., the stack trace was not collected),
   8871  it returns -1 for all module positions.]]>
   8872       </doc>
   8873     </method>
   8874     <method name="getStackTrace" return="java.lang.StackTraceElement[]"
   8875       abstract="false" native="false" synchronized="false"
   8876       static="false" final="false" visibility="public"
   8877       deprecated="not deprecated">
   8878       <doc>
   8879       <![CDATA[Returns the sequence of method calls that ends at one of {@link com.google.inject.Binder}
   8880  {@code bindXXX()} methods and eventually defines the element. Note that
   8881  {@link #getStackTrace} lists {@link StackTraceElement StackTraceElements} in reverse
   8882  chronological order. The first element (index zero) is the last method call and the last
   8883  element is the first method invocation. In the cases where stack trace is not available
   8884  (i.e.,the stack trace was not collected), it returns an empty array.]]>
   8885       </doc>
   8886     </method>
   8887     <method name="toString" return="java.lang.String"
   8888       abstract="false" native="false" synchronized="false"
   8889       static="false" final="false" visibility="public"
   8890       deprecated="not deprecated">
   8891       <doc>
   8892       <![CDATA[Returns {@code getDeclaringSource().toString()} value.]]>
   8893       </doc>
   8894     </method>
   8895     <doc>
   8896     <![CDATA[Contains information about where and how an {@link Element element} was
   8897  bound.
   8898  <p>
   8899  The {@link #getDeclaringSource() declaring source} refers to a location in
   8900  source code that defines the Guice {@link Element element}. For example, if
   8901  the element is created from a method annotated by {@literal @Provides}, the
   8902  declaring source of element would be the method itself.
   8903  <p>
   8904  The {@link #getStackTrace()} refers to the sequence of calls ends at one of
   8905  {@link com.google.inject.Binder} {@code bindXXX()} methods and eventually
   8906  defines the element. Note that {@link #getStackTrace()} lists
   8907  {@link StackTraceElement StackTraceElements} in reverse chronological order.
   8908  The first element (index zero) is the last method call and the last element
   8909  is the first method invocation. By default, the stack trace is not collected.
   8910  The default behavior can be changed by setting the
   8911  {@code guice_include_stack_traces} flag value. The value can be either
   8912  {@code OFF}, {@code ONLY_FOR_DECLARING_SOURCE} or {@code COMPLETE}. Note that
   8913  collecting stack traces for every binding can cause a performance hit when
   8914  the injector is created.
   8915  <p>
   8916  The sequence of class names of {@link com.google.inject.Module modules}
   8917  involved in the element creation can be retrieved by
   8918  {@link #getModuleClassNames()}. Similar to {@link #getStackTrace()}, the
   8919  order is reverse chronological. The first module (index 0) is the module that
   8920  installs the {@link Element element}. The last module is the root module.
   8921  <p>
   8922  In order to support the cases where a Guice {@link Element element} is
   8923  created from another Guice {@link Element element} (original) (e.g., by
   8924  {@link Element#applyTo}), it also provides a reference to the original
   8925  element source ({@link #getOriginalElementSource()}).
   8926 
   8927  @since 4.0]]>
   8928     </doc>
   8929   </class>
   8930   <!-- end class com.google.inject.spi.ElementSource -->
   8931   <!-- start interface com.google.inject.spi.ElementVisitor -->
   8932   <interface name="ElementVisitor"    abstract="true"
   8933     static="false" final="false" visibility="public"
   8934     deprecated="not deprecated">
   8935     <method name="visit" return="V"
   8936       abstract="true" native="false" synchronized="false"
   8937       static="false" final="false" visibility="public"
   8938       deprecated="not deprecated">
   8939       <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
   8940       <doc>
   8941       <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting
   8942  instances of the type.]]>
   8943       </doc>
   8944     </method>
   8945     <method name="visit" return="V"
   8946       abstract="true" native="false" synchronized="false"
   8947       static="false" final="false" visibility="public"
   8948       deprecated="not deprecated">
   8949       <param name="binding" type="com.google.inject.spi.InterceptorBinding"/>
   8950       <doc>
   8951       <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]>
   8952       </doc>
   8953     </method>
   8954     <method name="visit" return="V"
   8955       abstract="true" native="false" synchronized="false"
   8956       static="false" final="false" visibility="public"
   8957       deprecated="not deprecated">
   8958       <param name="binding" type="com.google.inject.spi.ScopeBinding"/>
   8959       <doc>
   8960       <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]>
   8961       </doc>
   8962     </method>
   8963     <method name="visit" return="V"
   8964       abstract="true" native="false" synchronized="false"
   8965       static="false" final="false" visibility="public"
   8966       deprecated="not deprecated">
   8967       <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/>
   8968       <doc>
   8969       <![CDATA[Visit a registration of type converters for matching target types.]]>
   8970       </doc>
   8971     </method>
   8972     <method name="visit" return="V"
   8973       abstract="true" native="false" synchronized="false"
   8974       static="false" final="false" visibility="public"
   8975       deprecated="not deprecated">
   8976       <param name="request" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
   8977       <doc>
   8978       <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]>
   8979       </doc>
   8980     </method>
   8981     <method name="visit" return="V"
   8982       abstract="true" native="false" synchronized="false"
   8983       static="false" final="false" visibility="public"
   8984       deprecated="not deprecated">
   8985       <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/>
   8986       <doc>
   8987       <![CDATA[Visit a request to inject the static fields and methods of type.]]>
   8988       </doc>
   8989     </method>
   8990     <method name="visit" return="V"
   8991       abstract="true" native="false" synchronized="false"
   8992       static="false" final="false" visibility="public"
   8993       deprecated="not deprecated">
   8994       <param name="lookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
   8995       <doc>
   8996       <![CDATA[Visit a lookup of the provider for a type.]]>
   8997       </doc>
   8998     </method>
   8999     <method name="visit" return="V"
   9000       abstract="true" native="false" synchronized="false"
   9001       static="false" final="false" visibility="public"
   9002       deprecated="not deprecated">
   9003       <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
   9004       <doc>
   9005       <![CDATA[Visit a lookup of the members injector.]]>
   9006       </doc>
   9007     </method>
   9008     <method name="visit" return="V"
   9009       abstract="true" native="false" synchronized="false"
   9010       static="false" final="false" visibility="public"
   9011       deprecated="not deprecated">
   9012       <param name="message" type="com.google.inject.spi.Message"/>
   9013       <doc>
   9014       <![CDATA[Visit an error message and the context in which it occured.]]>
   9015       </doc>
   9016     </method>
   9017     <method name="visit" return="V"
   9018       abstract="true" native="false" synchronized="false"
   9019       static="false" final="false" visibility="public"
   9020       deprecated="not deprecated">
   9021       <param name="elements" type="com.google.inject.spi.PrivateElements"/>
   9022       <doc>
   9023       <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder
   9024  private binder}.]]>
   9025       </doc>
   9026     </method>
   9027     <method name="visit" return="V"
   9028       abstract="true" native="false" synchronized="false"
   9029       static="false" final="false" visibility="public"
   9030       deprecated="not deprecated">
   9031       <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
   9032       <doc>
   9033       <![CDATA[Visit an injectable type listener binding.]]>
   9034       </doc>
   9035     </method>
   9036     <method name="visit" return="V"
   9037       abstract="true" native="false" synchronized="false"
   9038       static="false" final="false" visibility="public"
   9039       deprecated="not deprecated">
   9040       <param name="binding" type="com.google.inject.spi.ProvisionListenerBinding"/>
   9041       <doc>
   9042       <![CDATA[Visit a provision listener binding.
   9043 
   9044  @since 4.0]]>
   9045       </doc>
   9046     </method>
   9047     <method name="visit" return="V"
   9048       abstract="true" native="false" synchronized="false"
   9049       static="false" final="false" visibility="public"
   9050       deprecated="not deprecated">
   9051       <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
   9052       <doc>
   9053       <![CDATA[Visit a require explicit bindings command.
   9054  
   9055  @since 3.0]]>
   9056       </doc>
   9057     </method>
   9058     <method name="visit" return="V"
   9059       abstract="true" native="false" synchronized="false"
   9060       static="false" final="false" visibility="public"
   9061       deprecated="not deprecated">
   9062       <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
   9063       <doc>
   9064       <![CDATA[Visit a disable circular proxies command.
   9065  
   9066  @since 3.0]]>
   9067       </doc>
   9068     </method>
   9069     <method name="visit" return="V"
   9070       abstract="true" native="false" synchronized="false"
   9071       static="false" final="false" visibility="public"
   9072       deprecated="not deprecated">
   9073       <param name="option" type="com.google.inject.spi.RequireAtInjectOnConstructorsOption"/>
   9074       <doc>
   9075       <![CDATA[Visit a require explicit {@literal @}{@link Inject} command.
   9076  
   9077  @since 4.0]]>
   9078       </doc>
   9079     </method>
   9080     <method name="visit" return="V"
   9081       abstract="true" native="false" synchronized="false"
   9082       static="false" final="false" visibility="public"
   9083       deprecated="not deprecated">
   9084       <param name="option" type="com.google.inject.spi.RequireExactBindingAnnotationsOption"/>
   9085       <doc>
   9086       <![CDATA[Visit a require exact binding annotations command.
   9087 
   9088  @since 4.0]]>
   9089       </doc>
   9090     </method>
   9091     <method name="visit" return="V"
   9092       abstract="true" native="false" synchronized="false"
   9093       static="false" final="false" visibility="public"
   9094       deprecated="not deprecated">
   9095       <param name="binding" type="com.google.inject.spi.ModuleAnnotatedMethodScannerBinding"/>
   9096       <doc>
   9097       <![CDATA[Visits a {@link Binder#scanModulesForAnnotatedMethods} command.
   9098 
   9099  @since 4.0]]>
   9100       </doc>
   9101     </method>
   9102     <doc>
   9103     <![CDATA[Visit elements.
   9104 
   9105  @param <V> any type to be returned by the visit method. Use {@link Void} with
   9106      {@code return null} if no return type is needed.
   9107  
   9108  @since 2.0]]>
   9109     </doc>
   9110   </interface>
   9111   <!-- end interface com.google.inject.spi.ElementVisitor -->
   9112   <!-- start interface com.google.inject.spi.ExposedBinding -->
   9113   <interface name="ExposedBinding"    abstract="true"
   9114     static="false" final="false" visibility="public"
   9115     deprecated="not deprecated">
   9116     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9117     <implements name="com.google.inject.spi.HasDependencies"/>
   9118     <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements"
   9119       abstract="true" native="false" synchronized="false"
   9120       static="false" final="false" visibility="public"
   9121       deprecated="not deprecated">
   9122       <doc>
   9123       <![CDATA[Returns the enclosed environment that holds the original binding.]]>
   9124       </doc>
   9125     </method>
   9126     <method name="applyTo"
   9127       abstract="true" native="false" synchronized="false"
   9128       static="false" final="false" visibility="public"
   9129       deprecated="not deprecated">
   9130       <param name="binder" type="com.google.inject.Binder"/>
   9131       <doc>
   9132       <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]>
   9133       </doc>
   9134     </method>
   9135     <doc>
   9136     <![CDATA[A binding to a key exposed from an enclosed private environment.
   9137 
   9138  @author jessewilson (a] google.com (Jesse Wilson)
   9139  @since 2.0]]>
   9140     </doc>
   9141   </interface>
   9142   <!-- end interface com.google.inject.spi.ExposedBinding -->
   9143   <!-- start interface com.google.inject.spi.HasDependencies -->
   9144   <interface name="HasDependencies"    abstract="true"
   9145     static="false" final="false" visibility="public"
   9146     deprecated="not deprecated">
   9147     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   9148       abstract="true" native="false" synchronized="false"
   9149       static="false" final="false" visibility="public"
   9150       deprecated="not deprecated">
   9151       <doc>
   9152       <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not
   9153  known statically, a dependency for the {@link com.google.inject.Injector Injector} will be
   9154  included in the returned set.
   9155  
   9156  @return a possibly empty set]]>
   9157       </doc>
   9158     </method>
   9159     <doc>
   9160     <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider
   9161  providers} and instances that expose their dependencies explicitly.
   9162 
   9163  @author jessewilson (a] google.com (Jesse Wilson)
   9164  @since 2.0]]>
   9165     </doc>
   9166   </interface>
   9167   <!-- end interface com.google.inject.spi.HasDependencies -->
   9168   <!-- start interface com.google.inject.spi.InjectionListener -->
   9169   <interface name="InjectionListener"    abstract="true"
   9170     static="false" final="false" visibility="public"
   9171     deprecated="not deprecated">
   9172     <method name="afterInjection"
   9173       abstract="true" native="false" synchronized="false"
   9174       static="false" final="false" visibility="public"
   9175       deprecated="not deprecated">
   9176       <param name="injectee" type="I"/>
   9177       <doc>
   9178       <![CDATA[Invoked by Guice after it injects the fields and methods of instance.
   9179 
   9180  @param injectee instance that Guice injected dependencies into]]>
   9181       </doc>
   9182     </method>
   9183     <doc>
   9184     <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further
   9185  injections, post-injection initialization, and more.
   9186 
   9187  @author crazybob (a] google.com (Bob Lee)
   9188  @author jessewilson (a] google.com (Jesse Wilson)
   9189  @since 2.0]]>
   9190     </doc>
   9191   </interface>
   9192   <!-- end interface com.google.inject.spi.InjectionListener -->
   9193   <!-- start class com.google.inject.spi.InjectionPoint -->
   9194   <class name="InjectionPoint" extends="java.lang.Object"
   9195     abstract="false"
   9196     static="false" final="true" visibility="public"
   9197     deprecated="not deprecated">
   9198     <method name="getMember" return="java.lang.reflect.Member"
   9199       abstract="false" native="false" synchronized="false"
   9200       static="false" final="false" visibility="public"
   9201       deprecated="not deprecated">
   9202       <doc>
   9203       <![CDATA[Returns the injected constructor, field, or method.]]>
   9204       </doc>
   9205     </method>
   9206     <method name="getDependencies" return="java.util.List&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   9207       abstract="false" native="false" synchronized="false"
   9208       static="false" final="false" visibility="public"
   9209       deprecated="not deprecated">
   9210       <doc>
   9211       <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or
   9212  constructor, the dependencies will correspond to that member's parameters. Field injection
   9213  points always have a single dependency for the field itself.
   9214 
   9215  @return a possibly-empty list]]>
   9216       </doc>
   9217     </method>
   9218     <method name="isOptional" return="boolean"
   9219       abstract="false" native="false" synchronized="false"
   9220       static="false" final="false" visibility="public"
   9221       deprecated="not deprecated">
   9222       <doc>
   9223       <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings
   9224  for all required dependencies. Both explicit bindings (as specified in a module), and implicit
   9225  bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default
   9226  constructors etc.) may be used to satisfy optional injection points.]]>
   9227       </doc>
   9228     </method>
   9229     <method name="isToolable" return="boolean"
   9230       abstract="false" native="false" synchronized="false"
   9231       static="false" final="false" visibility="public"
   9232       deprecated="not deprecated">
   9233       <doc>
   9234       <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}.
   9235  
   9236  @since 3.0]]>
   9237       </doc>
   9238     </method>
   9239     <method name="getDeclaringType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   9240       abstract="false" native="false" synchronized="false"
   9241       static="false" final="false" visibility="public"
   9242       deprecated="not deprecated">
   9243       <doc>
   9244       <![CDATA[Returns the generic type that defines this injection point. If the member exists on a
   9245  parameterized type, the result will include more type information than the member's {@link
   9246  Member#getDeclaringClass() raw declaring class}.
   9247  
   9248  @since 3.0]]>
   9249       </doc>
   9250     </method>
   9251     <method name="equals" return="boolean"
   9252       abstract="false" native="false" synchronized="false"
   9253       static="false" final="false" visibility="public"
   9254       deprecated="not deprecated">
   9255       <param name="o" type="java.lang.Object"/>
   9256     </method>
   9257     <method name="hashCode" return="int"
   9258       abstract="false" native="false" synchronized="false"
   9259       static="false" final="false" visibility="public"
   9260       deprecated="not deprecated">
   9261     </method>
   9262     <method name="toString" return="java.lang.String"
   9263       abstract="false" native="false" synchronized="false"
   9264       static="false" final="false" visibility="public"
   9265       deprecated="not deprecated">
   9266     </method>
   9267     <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
   9268       abstract="false" native="false" synchronized="false"
   9269       static="true" final="false" visibility="public"
   9270       deprecated="not deprecated">
   9271       <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
   9272       <doc>
   9273       <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code
   9274  constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a
   9275  type literal.
   9276 
   9277  @param constructor any single constructor present on {@code type}.
   9278  
   9279  @since 3.0]]>
   9280       </doc>
   9281     </method>
   9282     <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
   9283       abstract="false" native="false" synchronized="false"
   9284       static="true" final="false" visibility="public"
   9285       deprecated="not deprecated">
   9286       <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
   9287       <param name="type" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   9288       <doc>
   9289       <![CDATA[Returns a new injection point for the specified constructor of {@code type}.
   9290 
   9291  @param constructor any single constructor present on {@code type}.
   9292  @param type the concrete type that defines {@code constructor}.
   9293  
   9294  @since 3.0]]>
   9295       </doc>
   9296     </method>
   9297     <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
   9298       abstract="false" native="false" synchronized="false"
   9299       static="true" final="false" visibility="public"
   9300       deprecated="not deprecated">
   9301       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   9302       <doc>
   9303       <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
   9304 
   9305  @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
   9306      or a no-arguments constructor that is not private.
   9307  @throws ConfigurationException if there is no injectable constructor, more than one injectable
   9308      constructor, or if parameters of the injectable constructor are malformed, such as a
   9309      parameter with multiple binding annotations.]]>
   9310       </doc>
   9311     </method>
   9312     <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
   9313       abstract="false" native="false" synchronized="false"
   9314       static="true" final="false" visibility="public"
   9315       deprecated="not deprecated">
   9316       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   9317       <doc>
   9318       <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
   9319 
   9320  @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
   9321      or a no-arguments constructor that is not private.
   9322  @throws ConfigurationException if there is no injectable constructor, more than one injectable
   9323      constructor, or if parameters of the injectable constructor are malformed, such as a
   9324      parameter with multiple binding annotations.]]>
   9325       </doc>
   9326     </method>
   9327     <method name="forMethod" return="com.google.inject.spi.InjectionPoint"
   9328       abstract="false" native="false" synchronized="false"
   9329       static="true" final="false" visibility="public"
   9330       deprecated="not deprecated">
   9331       <param name="method" type="java.lang.reflect.Method"/>
   9332       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   9333       <doc>
   9334       <![CDATA[Returns a new injection point for the specified method of {@code type}.
   9335  This is useful for extensions that need to build dependency graphs from
   9336  arbitrary methods.
   9337 
   9338  @param method any single method present on {@code type}.
   9339  @param type the concrete type that defines {@code method}.
   9340 
   9341  @since 4.0]]>
   9342       </doc>
   9343     </method>
   9344     <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9345       abstract="false" native="false" synchronized="false"
   9346       static="true" final="false" visibility="public"
   9347       deprecated="not deprecated">
   9348       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   9349       <doc>
   9350       <![CDATA[Returns all static method and field injection points on {@code type}.
   9351 
   9352  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9353       fields are returned and then all methods. Within the fields, supertype fields are returned
   9354       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9355  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9356       a field with multiple binding annotations. The exception's {@link
   9357       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9358       of the valid injection points.]]>
   9359       </doc>
   9360     </method>
   9361     <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9362       abstract="false" native="false" synchronized="false"
   9363       static="true" final="false" visibility="public"
   9364       deprecated="not deprecated">
   9365       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   9366       <doc>
   9367       <![CDATA[Returns all static method and field injection points on {@code type}.
   9368 
   9369  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9370       fields are returned and then all methods. Within the fields, supertype fields are returned
   9371       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9372  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9373       a field with multiple binding annotations. The exception's {@link
   9374       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9375       of the valid injection points.]]>
   9376       </doc>
   9377     </method>
   9378     <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9379       abstract="false" native="false" synchronized="false"
   9380       static="true" final="false" visibility="public"
   9381       deprecated="not deprecated">
   9382       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   9383       <doc>
   9384       <![CDATA[Returns all instance method and field injection points on {@code type}.
   9385 
   9386  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9387       fields are returned and then all methods. Within the fields, supertype fields are returned
   9388       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9389  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9390       a field with multiple binding annotations. The exception's {@link
   9391       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9392       of the valid injection points.]]>
   9393       </doc>
   9394     </method>
   9395     <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9396       abstract="false" native="false" synchronized="false"
   9397       static="true" final="false" visibility="public"
   9398       deprecated="not deprecated">
   9399       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   9400       <doc>
   9401       <![CDATA[Returns all instance method and field injection points on {@code type}.
   9402 
   9403  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9404       fields are returned and then all methods. Within the fields, supertype fields are returned
   9405       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9406  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9407       a field with multiple binding annotations. The exception's {@link
   9408       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9409       of the valid injection points.]]>
   9410       </doc>
   9411     </method>
   9412     <doc>
   9413     <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the
   9414  {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may
   9415  omit the annotation.
   9416 
   9417  @author crazybob (a] google.com (Bob Lee)
   9418  @since 2.0]]>
   9419     </doc>
   9420   </class>
   9421   <!-- end class com.google.inject.spi.InjectionPoint -->
   9422   <!-- start class com.google.inject.spi.InjectionRequest -->
   9423   <class name="InjectionRequest" extends="java.lang.Object"
   9424     abstract="false"
   9425     static="false" final="true" visibility="public"
   9426     deprecated="not deprecated">
   9427     <implements name="com.google.inject.spi.Element"/>
   9428     <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;, T"
   9429       static="false" final="false" visibility="public"
   9430       deprecated="not deprecated">
   9431     </constructor>
   9432     <method name="getSource" return="java.lang.Object"
   9433       abstract="false" native="false" synchronized="false"
   9434       static="false" final="false" visibility="public"
   9435       deprecated="not deprecated">
   9436     </method>
   9437     <method name="getInstance" return="T"
   9438       abstract="false" native="false" synchronized="false"
   9439       static="false" final="false" visibility="public"
   9440       deprecated="not deprecated">
   9441     </method>
   9442     <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
   9443       abstract="false" native="false" synchronized="false"
   9444       static="false" final="false" visibility="public"
   9445       deprecated="not deprecated">
   9446     </method>
   9447     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9448       abstract="false" native="false" synchronized="false"
   9449       static="false" final="false" visibility="public"
   9450       deprecated="not deprecated">
   9451       <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
   9452       <doc>
   9453       <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill
   9454  this request.
   9455 
   9456  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9457       fields are returned and then all methods. Within the fields, supertype fields are returned
   9458       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9459  @throws ConfigurationException if there is a malformed injection point on the class of {@code
   9460       instance}, such as a field with multiple binding annotations. The exception's {@link
   9461       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9462       of the valid injection points.]]>
   9463       </doc>
   9464     </method>
   9465     <method name="acceptVisitor" return="R"
   9466       abstract="false" native="false" synchronized="false"
   9467       static="false" final="false" visibility="public"
   9468       deprecated="not deprecated">
   9469       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
   9470     </method>
   9471     <method name="applyTo"
   9472       abstract="false" native="false" synchronized="false"
   9473       static="false" final="false" visibility="public"
   9474       deprecated="not deprecated">
   9475       <param name="binder" type="com.google.inject.Binder"/>
   9476     </method>
   9477     <doc>
   9478     <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created
   9479  explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object)
   9480  requestInjection()} statements:
   9481  <pre>
   9482      requestInjection(serviceInstance);</pre>
   9483 
   9484  @author mikeward (a] google.com (Mike Ward)
   9485  @since 2.0]]>
   9486     </doc>
   9487   </class>
   9488   <!-- end class com.google.inject.spi.InjectionRequest -->
   9489   <!-- start interface com.google.inject.spi.InstanceBinding -->
   9490   <interface name="InstanceBinding"    abstract="true"
   9491     static="false" final="false" visibility="public"
   9492     deprecated="not deprecated">
   9493     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9494     <implements name="com.google.inject.spi.HasDependencies"/>
   9495     <method name="getInstance" return="T"
   9496       abstract="true" native="false" synchronized="false"
   9497       static="false" final="false" visibility="public"
   9498       deprecated="not deprecated">
   9499       <doc>
   9500       <![CDATA[Returns the user-supplied instance.]]>
   9501       </doc>
   9502     </method>
   9503     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9504       abstract="true" native="false" synchronized="false"
   9505       static="false" final="false" visibility="public"
   9506       deprecated="not deprecated">
   9507       <doc>
   9508       <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation
   9509  time only.
   9510 
   9511  @return a possibly empty set]]>
   9512       </doc>
   9513     </method>
   9514     <doc>
   9515     <![CDATA[A binding to a single instance. The same instance is returned for every injection.
   9516 
   9517  @author jessewilson (a] google.com (Jesse Wilson)
   9518  @since 2.0]]>
   9519     </doc>
   9520   </interface>
   9521   <!-- end interface com.google.inject.spi.InstanceBinding -->
   9522   <!-- start class com.google.inject.spi.InterceptorBinding -->
   9523   <class name="InterceptorBinding" extends="java.lang.Object"
   9524     abstract="false"
   9525     static="false" final="true" visibility="public"
   9526     deprecated="not deprecated">
   9527     <implements name="com.google.inject.spi.Element"/>
   9528     <method name="getSource" return="java.lang.Object"
   9529       abstract="false" native="false" synchronized="false"
   9530       static="false" final="false" visibility="public"
   9531       deprecated="not deprecated">
   9532     </method>
   9533     <method name="getClassMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"
   9534       abstract="false" native="false" synchronized="false"
   9535       static="false" final="false" visibility="public"
   9536       deprecated="not deprecated">
   9537     </method>
   9538     <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"
   9539       abstract="false" native="false" synchronized="false"
   9540       static="false" final="false" visibility="public"
   9541       deprecated="not deprecated">
   9542     </method>
   9543     <method name="getInterceptors" return="java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;"
   9544       abstract="false" native="false" synchronized="false"
   9545       static="false" final="false" visibility="public"
   9546       deprecated="not deprecated">
   9547     </method>
   9548     <method name="acceptVisitor" return="T"
   9549       abstract="false" native="false" synchronized="false"
   9550       static="false" final="false" visibility="public"
   9551       deprecated="not deprecated">
   9552       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9553     </method>
   9554     <method name="applyTo"
   9555       abstract="false" native="false" synchronized="false"
   9556       static="false" final="false" visibility="public"
   9557       deprecated="not deprecated">
   9558       <param name="binder" type="com.google.inject.Binder"/>
   9559     </method>
   9560     <doc>
   9561     <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created
   9562  explicitly in a module using {@link com.google.inject.Binder#bindInterceptor(
   9563  Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements:
   9564  <pre>
   9565      bindInterceptor(Matchers.subclassesOf(MyAction.class),
   9566          Matchers.annotatedWith(Transactional.class),
   9567          new MyTransactionInterceptor());</pre>
   9568 
   9569  or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher,
   9570  org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}.
   9571 
   9572  @author jessewilson (a] google.com (Jesse Wilson)
   9573  @since 2.0]]>
   9574     </doc>
   9575   </class>
   9576   <!-- end class com.google.inject.spi.InterceptorBinding -->
   9577   <!-- start interface com.google.inject.spi.LinkedKeyBinding -->
   9578   <interface name="LinkedKeyBinding"    abstract="true"
   9579     static="false" final="false" visibility="public"
   9580     deprecated="not deprecated">
   9581     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9582     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends T&gt;"
   9583       abstract="true" native="false" synchronized="false"
   9584       static="false" final="false" visibility="public"
   9585       deprecated="not deprecated">
   9586       <doc>
   9587       <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an
   9588  injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
   9589       </doc>
   9590     </method>
   9591     <doc>
   9592     <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections.
   9593 
   9594  @author jessewilson (a] google.com (Jesse Wilson)
   9595  @since 2.0]]>
   9596     </doc>
   9597   </interface>
   9598   <!-- end interface com.google.inject.spi.LinkedKeyBinding -->
   9599   <!-- start class com.google.inject.spi.MembersInjectorLookup -->
   9600   <class name="MembersInjectorLookup" extends="java.lang.Object"
   9601     abstract="false"
   9602     static="false" final="true" visibility="public"
   9603     deprecated="not deprecated">
   9604     <implements name="com.google.inject.spi.Element"/>
   9605     <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;"
   9606       static="false" final="false" visibility="public"
   9607       deprecated="not deprecated">
   9608     </constructor>
   9609     <method name="getSource" return="java.lang.Object"
   9610       abstract="false" native="false" synchronized="false"
   9611       static="false" final="false" visibility="public"
   9612       deprecated="not deprecated">
   9613     </method>
   9614     <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
   9615       abstract="false" native="false" synchronized="false"
   9616       static="false" final="false" visibility="public"
   9617       deprecated="not deprecated">
   9618       <doc>
   9619       <![CDATA[Gets the type containing the members to be injected.]]>
   9620       </doc>
   9621     </method>
   9622     <method name="acceptVisitor" return="T"
   9623       abstract="false" native="false" synchronized="false"
   9624       static="false" final="false" visibility="public"
   9625       deprecated="not deprecated">
   9626       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9627     </method>
   9628     <method name="initializeDelegate"
   9629       abstract="false" native="false" synchronized="false"
   9630       static="false" final="false" visibility="public"
   9631       deprecated="not deprecated">
   9632       <param name="delegate" type="com.google.inject.MembersInjector&lt;T&gt;"/>
   9633       <doc>
   9634       <![CDATA[Sets the actual members injector.
   9635 
   9636  @throws IllegalStateException if the delegate is already set]]>
   9637       </doc>
   9638     </method>
   9639     <method name="applyTo"
   9640       abstract="false" native="false" synchronized="false"
   9641       static="false" final="false" visibility="public"
   9642       deprecated="not deprecated">
   9643       <param name="binder" type="com.google.inject.Binder"/>
   9644     </method>
   9645     <method name="getDelegate" return="com.google.inject.MembersInjector&lt;T&gt;"
   9646       abstract="false" native="false" synchronized="false"
   9647       static="false" final="false" visibility="public"
   9648       deprecated="not deprecated">
   9649       <doc>
   9650       <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized.
   9651  The delegate will be initialized when this element is processed, or otherwise used to create
   9652  an injector.]]>
   9653       </doc>
   9654     </method>
   9655     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   9656       abstract="false" native="false" synchronized="false"
   9657       static="false" final="false" visibility="public"
   9658       deprecated="not deprecated">
   9659       <doc>
   9660       <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been
   9661  initialized, which usually happens when the injector is created. The members injector will
   9662  throw an {@code IllegalStateException} if you try to use it beforehand.]]>
   9663       </doc>
   9664     </method>
   9665     <doc>
   9666     <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using
   9667  {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements:
   9668  <pre>
   9669      MembersInjector&lt;PaymentService&gt; membersInjector
   9670          = getMembersInjector(PaymentService.class);</pre>
   9671 
   9672  @author crazybob (a] google.com (Bob Lee)
   9673  @since 2.0]]>
   9674     </doc>
   9675   </class>
   9676   <!-- end class com.google.inject.spi.MembersInjectorLookup -->
   9677   <!-- start class com.google.inject.spi.Message -->
   9678   <class name="Message" extends="java.lang.Object"
   9679     abstract="false"
   9680     static="false" final="true" visibility="public"
   9681     deprecated="not deprecated">
   9682     <implements name="java.io.Serializable"/>
   9683     <implements name="com.google.inject.spi.Element"/>
   9684     <constructor name="Message" type="java.util.List&lt;java.lang.Object&gt;, java.lang.String, java.lang.Throwable"
   9685       static="false" final="false" visibility="public"
   9686       deprecated="not deprecated">
   9687       <doc>
   9688       <![CDATA[@since 2.0]]>
   9689       </doc>
   9690     </constructor>
   9691     <constructor name="Message" type="java.lang.String, java.lang.Throwable"
   9692       static="false" final="false" visibility="public"
   9693       deprecated="not deprecated">
   9694       <doc>
   9695       <![CDATA[@since 4.0]]>
   9696       </doc>
   9697     </constructor>
   9698     <constructor name="Message" type="java.lang.Object, java.lang.String"
   9699       static="false" final="false" visibility="public"
   9700       deprecated="not deprecated">
   9701     </constructor>
   9702     <constructor name="Message" type="java.lang.String"
   9703       static="false" final="false" visibility="public"
   9704       deprecated="not deprecated">
   9705     </constructor>
   9706     <method name="getSource" return="java.lang.String"
   9707       abstract="false" native="false" synchronized="false"
   9708       static="false" final="false" visibility="public"
   9709       deprecated="not deprecated">
   9710     </method>
   9711     <method name="getSources" return="java.util.List&lt;java.lang.Object&gt;"
   9712       abstract="false" native="false" synchronized="false"
   9713       static="false" final="false" visibility="public"
   9714       deprecated="not deprecated">
   9715       <doc>
   9716       <![CDATA[@since 2.0]]>
   9717       </doc>
   9718     </method>
   9719     <method name="getMessage" return="java.lang.String"
   9720       abstract="false" native="false" synchronized="false"
   9721       static="false" final="false" visibility="public"
   9722       deprecated="not deprecated">
   9723       <doc>
   9724       <![CDATA[Gets the error message text.]]>
   9725       </doc>
   9726     </method>
   9727     <method name="acceptVisitor" return="T"
   9728       abstract="false" native="false" synchronized="false"
   9729       static="false" final="false" visibility="public"
   9730       deprecated="not deprecated">
   9731       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9732       <doc>
   9733       <![CDATA[@since 2.0]]>
   9734       </doc>
   9735     </method>
   9736     <method name="getCause" return="java.lang.Throwable"
   9737       abstract="false" native="false" synchronized="false"
   9738       static="false" final="false" visibility="public"
   9739       deprecated="not deprecated">
   9740       <doc>
   9741       <![CDATA[Returns the throwable that caused this message, or {@code null} if this
   9742  message was not caused by a throwable.
   9743 
   9744  @since 2.0]]>
   9745       </doc>
   9746     </method>
   9747     <method name="toString" return="java.lang.String"
   9748       abstract="false" native="false" synchronized="false"
   9749       static="false" final="false" visibility="public"
   9750       deprecated="not deprecated">
   9751     </method>
   9752     <method name="hashCode" return="int"
   9753       abstract="false" native="false" synchronized="false"
   9754       static="false" final="false" visibility="public"
   9755       deprecated="not deprecated">
   9756     </method>
   9757     <method name="equals" return="boolean"
   9758       abstract="false" native="false" synchronized="false"
   9759       static="false" final="false" visibility="public"
   9760       deprecated="not deprecated">
   9761       <param name="o" type="java.lang.Object"/>
   9762     </method>
   9763     <method name="applyTo"
   9764       abstract="false" native="false" synchronized="false"
   9765       static="false" final="false" visibility="public"
   9766       deprecated="not deprecated">
   9767       <param name="binder" type="com.google.inject.Binder"/>
   9768       <doc>
   9769       <![CDATA[@since 2.0]]>
   9770       </doc>
   9771     </method>
   9772     <doc>
   9773     <![CDATA[An error message and the context in which it occured. Messages are usually created internally by
   9774  Guice and its extensions. Messages can be created explicitly in a module using {@link
   9775  com.google.inject.Binder#addError(Throwable) addError()} statements:
   9776  <pre>
   9777      try {
   9778        bindPropertiesFromFile();
   9779      } catch (IOException e) {
   9780        addError(e);
   9781      }</pre>
   9782 
   9783  @author crazybob (a] google.com (Bob Lee)]]>
   9784     </doc>
   9785   </class>
   9786   <!-- end class com.google.inject.spi.Message -->
   9787   <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScanner -->
   9788   <class name="ModuleAnnotatedMethodScanner" extends="java.lang.Object"
   9789     abstract="true"
   9790     static="false" final="false" visibility="public"
   9791     deprecated="not deprecated">
   9792     <constructor name="ModuleAnnotatedMethodScanner"
   9793       static="false" final="false" visibility="public"
   9794       deprecated="not deprecated">
   9795     </constructor>
   9796     <method name="annotationClasses" return="java.util.Set&lt;? extends java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;&gt;"
   9797       abstract="true" native="false" synchronized="false"
   9798       static="false" final="false" visibility="public"
   9799       deprecated="not deprecated">
   9800       <doc>
   9801       <![CDATA[Returns the annotations this should scan for. Every method in the module that has one of these
   9802  annotations will create a Provider binding, with the return value of the binding being what's
   9803  provided and the parameters of the method being dependencies of the provider.]]>
   9804       </doc>
   9805     </method>
   9806     <method name="prepareMethod" return="com.google.inject.Key&lt;T&gt;"
   9807       abstract="true" native="false" synchronized="false"
   9808       static="false" final="false" visibility="public"
   9809       deprecated="not deprecated">
   9810       <param name="binder" type="com.google.inject.Binder"/>
   9811       <param name="annotation" type="java.lang.annotation.Annotation"/>
   9812       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   9813       <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/>
   9814       <doc>
   9815       <![CDATA[Prepares a method for binding. This {@code key} parameter is the key discovered from looking at
   9816  the binding annotation and return value of the method. Implementations can modify the key to
   9817  instead bind to another key. For example, Multibinder may want to change
   9818  {@code @SetProvides String provideFoo()} to bind into a unique Key within the multibinder
   9819  instead of binding {@code String}.
   9820 
   9821  <p>The injection point and annotation are provided in case the implementation wants to set the
   9822  key based on the property of the annotation or if any additional preparation is needed for any
   9823  of the dependencies. The annotation is guaranteed to be an instance of one the classes returned
   9824  by {@link #annotationClasses}.]]>
   9825       </doc>
   9826     </method>
   9827     <doc>
   9828     <![CDATA[Allows extensions to scan modules for annotated methods and bind those methods
   9829  as providers, similar to {@code @Provides} methods.
   9830 
   9831  @since 4.0]]>
   9832     </doc>
   9833   </class>
   9834   <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScanner -->
   9835   <!-- start class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding -->
   9836   <class name="ModuleAnnotatedMethodScannerBinding" extends="java.lang.Object"
   9837     abstract="false"
   9838     static="false" final="true" visibility="public"
   9839     deprecated="not deprecated">
   9840     <implements name="com.google.inject.spi.Element"/>
   9841     <constructor name="ModuleAnnotatedMethodScannerBinding" type="java.lang.Object, com.google.inject.spi.ModuleAnnotatedMethodScanner"
   9842       static="false" final="false" visibility="public"
   9843       deprecated="not deprecated">
   9844     </constructor>
   9845     <method name="getSource" return="java.lang.Object"
   9846       abstract="false" native="false" synchronized="false"
   9847       static="false" final="false" visibility="public"
   9848       deprecated="not deprecated">
   9849     </method>
   9850     <method name="getScanner" return="com.google.inject.spi.ModuleAnnotatedMethodScanner"
   9851       abstract="false" native="false" synchronized="false"
   9852       static="false" final="false" visibility="public"
   9853       deprecated="not deprecated">
   9854     </method>
   9855     <method name="acceptVisitor" return="T"
   9856       abstract="false" native="false" synchronized="false"
   9857       static="false" final="false" visibility="public"
   9858       deprecated="not deprecated">
   9859       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9860     </method>
   9861     <method name="applyTo"
   9862       abstract="false" native="false" synchronized="false"
   9863       static="false" final="false" visibility="public"
   9864       deprecated="not deprecated">
   9865       <param name="binder" type="com.google.inject.Binder"/>
   9866     </method>
   9867     <method name="toString" return="java.lang.String"
   9868       abstract="false" native="false" synchronized="false"
   9869       static="false" final="false" visibility="public"
   9870       deprecated="not deprecated">
   9871     </method>
   9872     <doc>
   9873     <![CDATA[Represents a call to {@link Binder#scanModulesForAnnotatedMethods} in a module.
   9874  
   9875  @author sameb (a] google.com (Sam Berlin)
   9876  @since 4.0]]>
   9877     </doc>
   9878   </class>
   9879   <!-- end class com.google.inject.spi.ModuleAnnotatedMethodScannerBinding -->
   9880   <!-- start interface com.google.inject.spi.PrivateElements -->
   9881   <interface name="PrivateElements"    abstract="true"
   9882     static="false" final="false" visibility="public"
   9883     deprecated="not deprecated">
   9884     <implements name="com.google.inject.spi.Element"/>
   9885     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&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 configuration information in this private environment.]]>
   9891       </doc>
   9892     </method>
   9893     <method name="getInjector" return="com.google.inject.Injector"
   9894       abstract="true" native="false" synchronized="false"
   9895       static="false" final="false" visibility="public"
   9896       deprecated="not deprecated">
   9897       <doc>
   9898       <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't
   9899  been used to create an injector.]]>
   9900       </doc>
   9901     </method>
   9902     <method name="getExposedKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   9903       abstract="true" native="false" synchronized="false"
   9904       static="false" final="false" visibility="public"
   9905       deprecated="not deprecated">
   9906       <doc>
   9907       <![CDATA[Returns the unique exposed keys for these private elements.]]>
   9908       </doc>
   9909     </method>
   9910     <method name="getExposedSource" return="java.lang.Object"
   9911       abstract="true" native="false" synchronized="false"
   9912       static="false" final="false" visibility="public"
   9913       deprecated="not deprecated">
   9914       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   9915       <doc>
   9916       <![CDATA[Returns an arbitrary object containing information about the "place" where this key was
   9917  exposed. Used by Guice in the production of descriptive error messages.
   9918 
   9919  <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
   9920  example. Tools should simply call {@code toString()} on the source object if the type is
   9921  unfamiliar.
   9922 
   9923  @param key one of the keys exposed by this module.]]>
   9924       </doc>
   9925     </method>
   9926     <doc>
   9927     <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by
   9928  default. See {@link com.google.inject.PrivateModule PrivateModule} for details.
   9929 
   9930  @author jessewilson (a] google.com (Jesse Wilson)
   9931  @since 2.0]]>
   9932     </doc>
   9933   </interface>
   9934   <!-- end interface com.google.inject.spi.PrivateElements -->
   9935   <!-- start interface com.google.inject.spi.ProviderBinding -->
   9936   <interface name="ProviderBinding"    abstract="true"
   9937     static="false" final="false" visibility="public"
   9938     deprecated="not deprecated">
   9939     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9940     <method name="getProvidedKey" return="com.google.inject.Key&lt;?&gt;"
   9941       abstract="true" native="false" synchronized="false"
   9942       static="false" final="false" visibility="public"
   9943       deprecated="not deprecated">
   9944       <doc>
   9945       <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding
   9946  can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key)
   9947  Injector.getBinding(providedKey)}]]>
   9948       </doc>
   9949     </method>
   9950     <doc>
   9951     <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding
   9952  is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly).
   9953 
   9954  @author jessewilson (a] google.com (Jesse Wilson)
   9955  @since 2.0]]>
   9956     </doc>
   9957   </interface>
   9958   <!-- end interface com.google.inject.spi.ProviderBinding -->
   9959   <!-- start interface com.google.inject.spi.ProviderInstanceBinding -->
   9960   <interface name="ProviderInstanceBinding"    abstract="true"
   9961     static="false" final="false" visibility="public"
   9962     deprecated="not deprecated">
   9963     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9964     <implements name="com.google.inject.spi.HasDependencies"/>
   9965     <method name="getProviderInstance" return="com.google.inject.Provider&lt;? extends T&gt;"
   9966       abstract="true" native="false" synchronized="false"
   9967       static="false" final="false" visibility="public"
   9968       deprecated="Use {@link #getUserSuppliedProvider} instead.">
   9969       <doc>
   9970       <![CDATA[If the user supplied a JSR330 binding, then this will wrap that one. To always return the
   9971  user-supplied provider, use {@link #getUserSuppliedProvider}.
   9972  
   9973  @deprecated Use {@link #getUserSuppliedProvider} instead.]]>
   9974       </doc>
   9975     </method>
   9976     <method name="getUserSuppliedProvider" return="javax.inject.Provider&lt;? extends T&gt;"
   9977       abstract="true" native="false" synchronized="false"
   9978       static="false" final="false" visibility="public"
   9979       deprecated="not deprecated">
   9980       <doc>
   9981       <![CDATA[Returns the user-supplied, unscoped provider.
   9982  @since 4.0]]>
   9983       </doc>
   9984     </method>
   9985     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9986       abstract="true" native="false" synchronized="false"
   9987       static="false" final="false" visibility="public"
   9988       deprecated="not deprecated">
   9989       <doc>
   9990       <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation
   9991  time only.
   9992 
   9993  @return a possibly empty set]]>
   9994       </doc>
   9995     </method>
   9996     <doc>
   9997     <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve
   9998  injections.
   9999 
   10000  @author jessewilson (a] google.com (Jesse Wilson)
   10001  @since 2.0]]>
   10002     </doc>
   10003   </interface>
   10004   <!-- end interface com.google.inject.spi.ProviderInstanceBinding -->
   10005   <!-- start interface com.google.inject.spi.ProviderKeyBinding -->
   10006   <interface name="ProviderKeyBinding"    abstract="true"
   10007     static="false" final="false" visibility="public"
   10008     deprecated="not deprecated">
   10009     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   10010     <method name="getProviderKey" return="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"
   10011       abstract="true" native="false" synchronized="false"
   10012       static="false" final="false" visibility="public"
   10013       deprecated="not deprecated">
   10014       <doc>
   10015       <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an
   10016  injector using {@link com.google.inject.Injector#getBinding(Key)
   10017  Injector.getBinding(providerKey)}]]>
   10018       </doc>
   10019     </method>
   10020     <doc>
   10021     <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that
   10022  provider's {@code get} method is invoked.
   10023 
   10024  @author jessewilson (a] google.com (Jesse Wilson)
   10025  @since 2.0]]>
   10026     </doc>
   10027   </interface>
   10028   <!-- end interface com.google.inject.spi.ProviderKeyBinding -->
   10029   <!-- start class com.google.inject.spi.ProviderLookup -->
   10030   <class name="ProviderLookup" extends="java.lang.Object"
   10031     abstract="false"
   10032     static="false" final="true" visibility="public"
   10033     deprecated="not deprecated">
   10034     <implements name="com.google.inject.spi.Element"/>
   10035     <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key&lt;T&gt;"
   10036       static="false" final="false" visibility="public"
   10037       deprecated="not deprecated">
   10038     </constructor>
   10039     <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.spi.Dependency&lt;T&gt;"
   10040       static="false" final="false" visibility="public"
   10041       deprecated="not deprecated">
   10042       <doc>
   10043       <![CDATA[@since 4.0]]>
   10044       </doc>
   10045     </constructor>
   10046     <method name="getSource" return="java.lang.Object"
   10047       abstract="false" native="false" synchronized="false"
   10048       static="false" final="false" visibility="public"
   10049       deprecated="not deprecated">
   10050     </method>
   10051     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   10052       abstract="false" native="false" synchronized="false"
   10053       static="false" final="false" visibility="public"
   10054       deprecated="not deprecated">
   10055     </method>
   10056     <method name="getDependency" return="com.google.inject.spi.Dependency&lt;T&gt;"
   10057       abstract="false" native="false" synchronized="false"
   10058       static="false" final="false" visibility="public"
   10059       deprecated="not deprecated">
   10060       <doc>
   10061       <![CDATA[@since 4.0]]>
   10062       </doc>
   10063     </method>
   10064     <method name="acceptVisitor" return="T"
   10065       abstract="false" native="false" synchronized="false"
   10066       static="false" final="false" visibility="public"
   10067       deprecated="not deprecated">
   10068       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10069     </method>
   10070     <method name="initializeDelegate"
   10071       abstract="false" native="false" synchronized="false"
   10072       static="false" final="false" visibility="public"
   10073       deprecated="not deprecated">
   10074       <param name="delegate" type="com.google.inject.Provider&lt;T&gt;"/>
   10075       <doc>
   10076       <![CDATA[Sets the actual provider.
   10077 
   10078  @throws IllegalStateException if the delegate is already set]]>
   10079       </doc>
   10080     </method>
   10081     <method name="applyTo"
   10082       abstract="false" native="false" synchronized="false"
   10083       static="false" final="false" visibility="public"
   10084       deprecated="not deprecated">
   10085       <param name="binder" type="com.google.inject.Binder"/>
   10086     </method>
   10087     <method name="getDelegate" return="com.google.inject.Provider&lt;T&gt;"
   10088       abstract="false" native="false" synchronized="false"
   10089       static="false" final="false" visibility="public"
   10090       deprecated="not deprecated">
   10091       <doc>
   10092       <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate
   10093  will be initialized when this element is processed, or otherwise used to create an injector.]]>
   10094       </doc>
   10095     </method>
   10096     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   10097       abstract="false" native="false" synchronized="false"
   10098       static="false" final="false" visibility="public"
   10099       deprecated="not deprecated">
   10100       <doc>
   10101       <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized,
   10102  which usually happens when the injector is created. The provider will throw an {@code
   10103  IllegalStateException} if you try to use it beforehand.]]>
   10104       </doc>
   10105     </method>
   10106     <doc>
   10107     <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using
   10108  {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements:
   10109  <pre>
   10110      Provider&lt;PaymentService&gt; paymentServiceProvider
   10111          = getProvider(PaymentService.class);</pre>
   10112 
   10113  @author jessewilson (a] google.com (Jesse Wilson)
   10114  @since 2.0]]>
   10115     </doc>
   10116   </class>
   10117   <!-- end class com.google.inject.spi.ProviderLookup -->
   10118   <!-- start interface com.google.inject.spi.ProviderWithDependencies -->
   10119   <interface name="ProviderWithDependencies"    abstract="true"
   10120     static="false" final="false" visibility="public"
   10121     deprecated="not deprecated">
   10122     <implements name="com.google.inject.Provider&lt;T&gt;"/>
   10123     <implements name="com.google.inject.spi.HasDependencies"/>
   10124     <doc>
   10125     <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that
   10126  aren't specified in injections, this interface should be used to expose all dependencies.
   10127 
   10128  @since 2.0]]>
   10129     </doc>
   10130   </interface>
   10131   <!-- end interface com.google.inject.spi.ProviderWithDependencies -->
   10132   <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor -->
   10133   <interface name="ProviderWithExtensionVisitor"    abstract="true"
   10134     static="false" final="false" visibility="public"
   10135     deprecated="not deprecated">
   10136     <implements name="com.google.inject.Provider&lt;T&gt;"/>
   10137     <method name="acceptExtensionVisitor" return="V"
   10138       abstract="true" native="false" synchronized="false"
   10139       static="false" final="false" visibility="public"
   10140       deprecated="not deprecated">
   10141       <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;B, V&gt;"/>
   10142       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends B&gt;"/>
   10143       <doc>
   10144       <![CDATA[Instructs the extension determine if the visitor is an instance of a custom
   10145  extension visitor, and if so, visit it using that method. If the visitor is
   10146  not an instance of the custom extension visitor, this method <b>MUST</b>
   10147  call visitor.visit(binding).
   10148  <p> 
   10149  Due to issues with generics, the type parameters of this method do not
   10150  relate to the type of the provider. In practice, the 'B' type will always
   10151  be a supertype of 'T'.]]>
   10152       </doc>
   10153     </method>
   10154     <doc>
   10155     <![CDATA[A Provider that is part of an extension which supports a custom
   10156  BindingTargetVisitor.
   10157  <p> 
   10158  When an extension binds a provider instance, the provider can implement this
   10159  interface to allow users using the
   10160  {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a
   10161  custom visitor designed for that extension. A typical implementation within
   10162  the extension would look like
   10163  <pre> 
   10164  &lt;V, B> V acceptExtensionVisitor(BindingTargetVisitor&lt;B, V> visitor, ProviderInstanceBinding&lt;? extends B> binding) {
   10165    if(visitor instanceof MyCustomExtensionVisitor) {
   10166      return ((MyCustomExtensionVisitor&lt;B, V>)visitor).visitCustomExtension(customProperties, binding);
   10167    } else {
   10168      return visitor.visit(binding);
   10169    }
   10170  }</pre> 
   10171  'MyCustomExtensionVisitor' in the example above would be an interface the
   10172  extension provides that users can implement in order to be notified of custom
   10173  extension information. These visitor interfaces must extend from
   10174  BindingTargetVisitor.
   10175 
   10176  @since 3.0
   10177  @author sameb (a] google.com (Sam Berlin)]]>
   10178     </doc>
   10179   </interface>
   10180   <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor -->
   10181   <!-- start interface com.google.inject.spi.ProvidesMethodBinding -->
   10182   <interface name="ProvidesMethodBinding"    abstract="true"
   10183     static="false" final="false" visibility="public"
   10184     deprecated="not deprecated">
   10185     <implements name="com.google.inject.spi.HasDependencies"/>
   10186     <method name="getMethod" return="java.lang.reflect.Method"
   10187       abstract="true" native="false" synchronized="false"
   10188       static="false" final="false" visibility="public"
   10189       deprecated="not deprecated">
   10190       <doc>
   10191       <![CDATA[Returns the method this binding uses.]]>
   10192       </doc>
   10193     </method>
   10194     <method name="getEnclosingInstance" return="java.lang.Object"
   10195       abstract="true" native="false" synchronized="false"
   10196       static="false" final="false" visibility="public"
   10197       deprecated="not deprecated">
   10198       <doc>
   10199       <![CDATA[Returns the instance of the object the method is defined in.]]>
   10200       </doc>
   10201     </method>
   10202     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   10203       abstract="true" native="false" synchronized="false"
   10204       static="false" final="false" visibility="public"
   10205       deprecated="not deprecated">
   10206       <doc>
   10207       <![CDATA[Returns the key of the binding.]]>
   10208       </doc>
   10209     </method>
   10210     <method name="getAnnotation" return="java.lang.annotation.Annotation"
   10211       abstract="true" native="false" synchronized="false"
   10212       static="false" final="false" visibility="public"
   10213       deprecated="not deprecated">
   10214       <doc>
   10215       <![CDATA[Returns the annotation that caused this binding to be created. For {@code @Provides} methods,
   10216  this is an instance of the {@code @Provides} annotation. For bindings from
   10217  {@link ModuleAnnotatedMethodScanner}, this is the annotation that caused the scanner to produce
   10218  the binding.]]>
   10219       </doc>
   10220     </method>
   10221     <doc>
   10222     <![CDATA[An {@literal @}{@link Provides} binding or binding produced by a
   10223  {@link ModuleAnnotatedMethodScanner}.
   10224 
   10225  @since 4.0
   10226  @author sameb (a] google.com (Sam Berlin)]]>
   10227     </doc>
   10228   </interface>
   10229   <!-- end interface com.google.inject.spi.ProvidesMethodBinding -->
   10230   <!-- start interface com.google.inject.spi.ProvidesMethodTargetVisitor -->
   10231   <interface name="ProvidesMethodTargetVisitor"    abstract="true"
   10232     static="false" final="false" visibility="public"
   10233     deprecated="not deprecated">
   10234     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   10235     <method name="visit" return="V"
   10236       abstract="true" native="false" synchronized="false"
   10237       static="false" final="false" visibility="public"
   10238       deprecated="not deprecated">
   10239       <param name="providesMethodBinding" type="com.google.inject.spi.ProvidesMethodBinding&lt;? extends T&gt;"/>
   10240       <doc>
   10241       <![CDATA[Visits an {@link ProvidesMethodBinding} created with an {@literal @}{@link Provides} method.]]>
   10242       </doc>
   10243     </method>
   10244     <doc>
   10245     <![CDATA[A visitor for the {@literal @}{@link Provides} bindings.
   10246  <p>
   10247  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   10248  {@code @Provides} will be visited through this interface.
   10249 
   10250  @since 4.0
   10251  @author sameb (a] google.com (Sam Berlin)]]>
   10252     </doc>
   10253   </interface>
   10254   <!-- end interface com.google.inject.spi.ProvidesMethodTargetVisitor -->
   10255   <!-- start interface com.google.inject.spi.ProvisionListener -->
   10256   <interface name="ProvisionListener"    abstract="true"
   10257     static="false" final="false" visibility="public"
   10258     deprecated="not deprecated">
   10259     <method name="onProvision"
   10260       abstract="true" native="false" synchronized="false"
   10261       static="false" final="false" visibility="public"
   10262       deprecated="not deprecated">
   10263       <param name="provision" type="com.google.inject.spi.ProvisionListener.ProvisionInvocation&lt;T&gt;"/>
   10264       <doc>
   10265       <![CDATA[Invoked by Guice when an object requires provisioning. Provisioning occurs
   10266  when Guice locates and injects the dependencies for a binding. For types
   10267  bound to a Provider, provisioning encapsulates the {@link Provider#get}
   10268  method. For toInstance or constant bindings, provisioning encapsulates
   10269  the injecting of {@literal @}{@code Inject}ed fields or methods.
   10270  For other types, provisioning encapsulates the construction of the
   10271  object. If a type is bound within a {@link Scope}, provisioning depends on
   10272  the scope. Types bound in Singleton scope will only be provisioned once.
   10273  Types bound in no scope will be provisioned every time they are injected.
   10274  Other scopes define their own behavior for provisioning.
   10275  <p>
   10276  To perform the provision, call {@link ProvisionInvocation#provision()}.
   10277  If you do not explicitly call provision, it will be automatically done after
   10278  this method returns.  It is an error to call provision more than once.]]>
   10279       </doc>
   10280     </method>
   10281     <doc>
   10282     <![CDATA[Listens for provisioning of objects. Useful for gathering timing information
   10283  about provisioning, post-provision initialization, and more.
   10284  
   10285  @author sameb (a] google.com (Sam Berlin)
   10286  @since 4.0]]>
   10287     </doc>
   10288   </interface>
   10289   <!-- end interface com.google.inject.spi.ProvisionListener -->
   10290   <!-- start class com.google.inject.spi.ProvisionListener.ProvisionInvocation -->
   10291   <class name="ProvisionListener.ProvisionInvocation" extends="java.lang.Object"
   10292     abstract="true"
   10293     static="true" final="false" visibility="public"
   10294     deprecated="not deprecated">
   10295     <constructor name="ProvisionInvocation"
   10296       static="false" final="false" visibility="public"
   10297       deprecated="not deprecated">
   10298     </constructor>
   10299     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   10300       abstract="true" native="false" synchronized="false"
   10301       static="false" final="false" visibility="public"
   10302       deprecated="not deprecated">
   10303       <doc>
   10304       <![CDATA[Returns the Binding this is provisioning.
   10305  <p>
   10306  You must not call {@link Provider#get()} on the provider returned by
   10307  {@link Binding#getProvider}, otherwise you will get confusing error messages.]]>
   10308       </doc>
   10309     </method>
   10310     <method name="provision" return="T"
   10311       abstract="true" native="false" synchronized="false"
   10312       static="false" final="false" visibility="public"
   10313       deprecated="not deprecated">
   10314       <doc>
   10315       <![CDATA[Performs the provision, returning the object provisioned.]]>
   10316       </doc>
   10317     </method>
   10318     <method name="getDependencyChain" return="java.util.List&lt;com.google.inject.spi.DependencyAndSource&gt;"
   10319       abstract="true" native="false" synchronized="false"
   10320       static="false" final="false" visibility="public"
   10321       deprecated="not deprecated">
   10322       <doc>
   10323       <![CDATA[Returns the dependency chain that led to this object being provisioned.]]>
   10324       </doc>
   10325     </method>
   10326     <doc>
   10327     <![CDATA[Encapsulates a single act of provisioning.
   10328 
   10329  @since 4.0]]>
   10330     </doc>
   10331   </class>
   10332   <!-- end class com.google.inject.spi.ProvisionListener.ProvisionInvocation -->
   10333   <!-- start class com.google.inject.spi.ProvisionListenerBinding -->
   10334   <class name="ProvisionListenerBinding" extends="java.lang.Object"
   10335     abstract="false"
   10336     static="false" final="true" visibility="public"
   10337     deprecated="not deprecated">
   10338     <implements name="com.google.inject.spi.Element"/>
   10339     <method name="getListeners" return="java.util.List&lt;com.google.inject.spi.ProvisionListener&gt;"
   10340       abstract="false" native="false" synchronized="false"
   10341       static="false" final="false" visibility="public"
   10342       deprecated="not deprecated">
   10343       <doc>
   10344       <![CDATA[Returns the registered listeners.]]>
   10345       </doc>
   10346     </method>
   10347     <method name="getBindingMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.Binding&lt;?&gt;&gt;"
   10348       abstract="false" native="false" synchronized="false"
   10349       static="false" final="false" visibility="public"
   10350       deprecated="not deprecated">
   10351       <doc>
   10352       <![CDATA[Returns the binding matcher which chooses which bindings the listener should be notified of.]]>
   10353       </doc>
   10354     </method>
   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="acceptVisitor" return="R"
   10361       abstract="false" native="false" synchronized="false"
   10362       static="false" final="false" visibility="public"
   10363       deprecated="not deprecated">
   10364       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
   10365     </method>
   10366     <method name="applyTo"
   10367       abstract="false" native="false" synchronized="false"
   10368       static="false" final="false" visibility="public"
   10369       deprecated="not deprecated">
   10370       <param name="binder" type="com.google.inject.Binder"/>
   10371     </method>
   10372     <doc>
   10373     <![CDATA[Binds keys (picked using a Matcher) to a provision listener. Listeners are created explicitly in
   10374  a module using {@link Binder#bindListener(Matcher, ProvisionListener...)} statements:
   10375 
   10376  @author sameb (a] google.com (Sam Berlin)
   10377  @since 4.0]]>
   10378     </doc>
   10379   </class>
   10380   <!-- end class com.google.inject.spi.ProvisionListenerBinding -->
   10381   <!-- start class com.google.inject.spi.RequireAtInjectOnConstructorsOption -->
   10382   <class name="RequireAtInjectOnConstructorsOption" extends="java.lang.Object"
   10383     abstract="false"
   10384     static="false" final="true" visibility="public"
   10385     deprecated="not deprecated">
   10386     <implements name="com.google.inject.spi.Element"/>
   10387     <method name="getSource" return="java.lang.Object"
   10388       abstract="false" native="false" synchronized="false"
   10389       static="false" final="false" visibility="public"
   10390       deprecated="not deprecated">
   10391     </method>
   10392     <method name="applyTo"
   10393       abstract="false" native="false" synchronized="false"
   10394       static="false" final="false" visibility="public"
   10395       deprecated="not deprecated">
   10396       <param name="binder" type="com.google.inject.Binder"/>
   10397     </method>
   10398     <method name="acceptVisitor" return="T"
   10399       abstract="false" native="false" synchronized="false"
   10400       static="false" final="false" visibility="public"
   10401       deprecated="not deprecated">
   10402       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10403     </method>
   10404     <doc>
   10405     <![CDATA[A request to require explicit {@literal @}{@link Inject} annotations on constructors.
   10406 
   10407  @author sameb (a] google.com (Sam Berlin)
   10408  @since 4.0]]>
   10409     </doc>
   10410   </class>
   10411   <!-- end class com.google.inject.spi.RequireAtInjectOnConstructorsOption -->
   10412   <!-- start class com.google.inject.spi.RequireExactBindingAnnotationsOption -->
   10413   <class name="RequireExactBindingAnnotationsOption" extends="java.lang.Object"
   10414     abstract="false"
   10415     static="false" final="true" visibility="public"
   10416     deprecated="not deprecated">
   10417     <implements name="com.google.inject.spi.Element"/>
   10418     <method name="getSource" return="java.lang.Object"
   10419       abstract="false" native="false" synchronized="false"
   10420       static="false" final="false" visibility="public"
   10421       deprecated="not deprecated">
   10422     </method>
   10423     <method name="applyTo"
   10424       abstract="false" native="false" synchronized="false"
   10425       static="false" final="false" visibility="public"
   10426       deprecated="not deprecated">
   10427       <param name="binder" type="com.google.inject.Binder"/>
   10428     </method>
   10429     <method name="acceptVisitor" return="T"
   10430       abstract="false" native="false" synchronized="false"
   10431       static="false" final="false" visibility="public"
   10432       deprecated="not deprecated">
   10433       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10434     </method>
   10435     <doc>
   10436     <![CDATA[A request to require exact binding annotations.
   10437 
   10438  @author sameb (a] google.com (Sam Berlin)
   10439  @since 4.0]]>
   10440     </doc>
   10441   </class>
   10442   <!-- end class com.google.inject.spi.RequireExactBindingAnnotationsOption -->
   10443   <!-- start class com.google.inject.spi.RequireExplicitBindingsOption -->
   10444   <class name="RequireExplicitBindingsOption" extends="java.lang.Object"
   10445     abstract="false"
   10446     static="false" final="true" visibility="public"
   10447     deprecated="not deprecated">
   10448     <implements name="com.google.inject.spi.Element"/>
   10449     <method name="getSource" return="java.lang.Object"
   10450       abstract="false" native="false" synchronized="false"
   10451       static="false" final="false" visibility="public"
   10452       deprecated="not deprecated">
   10453     </method>
   10454     <method name="applyTo"
   10455       abstract="false" native="false" synchronized="false"
   10456       static="false" final="false" visibility="public"
   10457       deprecated="not deprecated">
   10458       <param name="binder" type="com.google.inject.Binder"/>
   10459     </method>
   10460     <method name="acceptVisitor" return="T"
   10461       abstract="false" native="false" synchronized="false"
   10462       static="false" final="false" visibility="public"
   10463       deprecated="not deprecated">
   10464       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10465     </method>
   10466     <doc>
   10467     <![CDATA[A request to require explicit bindings.
   10468 
   10469  @author sameb (a] google.com (Sam Berlin)
   10470  @since 3.0]]>
   10471     </doc>
   10472   </class>
   10473   <!-- end class com.google.inject.spi.RequireExplicitBindingsOption -->
   10474   <!-- start class com.google.inject.spi.ScopeBinding -->
   10475   <class name="ScopeBinding" extends="java.lang.Object"
   10476     abstract="false"
   10477     static="false" final="true" visibility="public"
   10478     deprecated="not deprecated">
   10479     <implements name="com.google.inject.spi.Element"/>
   10480     <method name="getSource" return="java.lang.Object"
   10481       abstract="false" native="false" synchronized="false"
   10482       static="false" final="false" visibility="public"
   10483       deprecated="not deprecated">
   10484     </method>
   10485     <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   10486       abstract="false" native="false" synchronized="false"
   10487       static="false" final="false" visibility="public"
   10488       deprecated="not deprecated">
   10489     </method>
   10490     <method name="getScope" return="com.google.inject.Scope"
   10491       abstract="false" native="false" synchronized="false"
   10492       static="false" final="false" visibility="public"
   10493       deprecated="not deprecated">
   10494     </method>
   10495     <method name="acceptVisitor" return="T"
   10496       abstract="false" native="false" synchronized="false"
   10497       static="false" final="false" visibility="public"
   10498       deprecated="not deprecated">
   10499       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10500     </method>
   10501     <method name="applyTo"
   10502       abstract="false" native="false" synchronized="false"
   10503       static="false" final="false" visibility="public"
   10504       deprecated="not deprecated">
   10505       <param name="binder" type="com.google.inject.Binder"/>
   10506     </method>
   10507     <doc>
   10508     <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created
   10509  explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()}
   10510  statements:
   10511  <pre>
   10512      Scope recordScope = new RecordScope();
   10513      bindScope(RecordScoped.class, new RecordScope());</pre>
   10514 
   10515  @author jessewilson (a] google.com (Jesse Wilson)
   10516  @since 2.0]]>
   10517     </doc>
   10518   </class>
   10519   <!-- end class com.google.inject.spi.ScopeBinding -->
   10520   <!-- start class com.google.inject.spi.StaticInjectionRequest -->
   10521   <class name="StaticInjectionRequest" extends="java.lang.Object"
   10522     abstract="false"
   10523     static="false" final="true" visibility="public"
   10524     deprecated="not deprecated">
   10525     <implements name="com.google.inject.spi.Element"/>
   10526     <method name="getSource" return="java.lang.Object"
   10527       abstract="false" native="false" synchronized="false"
   10528       static="false" final="false" visibility="public"
   10529       deprecated="not deprecated">
   10530     </method>
   10531     <method name="getType" return="java.lang.Class&lt;?&gt;"
   10532       abstract="false" native="false" synchronized="false"
   10533       static="false" final="false" visibility="public"
   10534       deprecated="not deprecated">
   10535     </method>
   10536     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   10537       abstract="false" native="false" synchronized="false"
   10538       static="false" final="false" visibility="public"
   10539       deprecated="not deprecated">
   10540       <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
   10541       <doc>
   10542       <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this
   10543  request.
   10544 
   10545  @return a possibly empty set of injection points. The set has a specified iteration order. All
   10546       fields are returned and then all methods. Within the fields, supertype fields are returned
   10547       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   10548  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   10549       a field with multiple binding annotations. The exception's {@link
   10550       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   10551       of the valid injection points.]]>
   10552       </doc>
   10553     </method>
   10554     <method name="applyTo"
   10555       abstract="false" native="false" synchronized="false"
   10556       static="false" final="false" visibility="public"
   10557       deprecated="not deprecated">
   10558       <param name="binder" type="com.google.inject.Binder"/>
   10559     </method>
   10560     <method name="acceptVisitor" return="T"
   10561       abstract="false" native="false" synchronized="false"
   10562       static="false" final="false" visibility="public"
   10563       deprecated="not deprecated">
   10564       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10565     </method>
   10566     <doc>
   10567     <![CDATA[A request to inject the static fields and methods of a type. Requests are created
   10568  explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[])
   10569  requestStaticInjection()} statements:
   10570  <pre>
   10571      requestStaticInjection(MyLegacyService.class);</pre>
   10572 
   10573  @author jessewilson (a] google.com (Jesse Wilson)
   10574  @since 2.0]]>
   10575     </doc>
   10576   </class>
   10577   <!-- end class com.google.inject.spi.StaticInjectionRequest -->
   10578   <!-- start class com.google.inject.spi.Toolable -->
   10579   <class name="Toolable"    abstract="true"
   10580     static="false" final="false" visibility="public"
   10581     deprecated="not deprecated">
   10582     <implements name="java.lang.annotation.Annotation"/>
   10583     <doc>
   10584     <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected.
   10585  This is typically useful for for extensions to Guice that perform additional validation in an
   10586  injected method or field.  This only applies to objects that are already constructed when
   10587  bindings are created (ie., something bound using {@link
   10588  com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link
   10589  com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link
   10590  com.google.inject.Binder#requestInjection requestInjection}.
   10591  
   10592  @author sberlin (a] gmail.com (Sam Berlin)
   10593  @since 3.0]]>
   10594     </doc>
   10595   </class>
   10596   <!-- end class com.google.inject.spi.Toolable -->
   10597   <!-- start interface com.google.inject.spi.TypeConverter -->
   10598   <interface name="TypeConverter"    abstract="true"
   10599     static="false" final="false" visibility="public"
   10600     deprecated="not deprecated">
   10601     <method name="convert" return="java.lang.Object"
   10602       abstract="true" native="false" synchronized="false"
   10603       static="false" final="false" visibility="public"
   10604       deprecated="not deprecated">
   10605       <param name="value" type="java.lang.String"/>
   10606       <param name="toType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   10607       <doc>
   10608       <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]>
   10609       </doc>
   10610     </method>
   10611     <doc>
   10612     <![CDATA[Converts constant string values to a different type.
   10613 
   10614  @author crazybob (a] google.com (Bob Lee)
   10615  @since 2.0]]>
   10616     </doc>
   10617   </interface>
   10618   <!-- end interface com.google.inject.spi.TypeConverter -->
   10619   <!-- start class com.google.inject.spi.TypeConverterBinding -->
   10620   <class name="TypeConverterBinding" extends="java.lang.Object"
   10621     abstract="false"
   10622     static="false" final="true" visibility="public"
   10623     deprecated="not deprecated">
   10624     <implements name="com.google.inject.spi.Element"/>
   10625     <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"
   10626       static="false" final="false" visibility="public"
   10627       deprecated="not deprecated">
   10628       <doc>
   10629       <![CDATA[@since 3.0]]>
   10630       </doc>
   10631     </constructor>
   10632     <method name="getSource" return="java.lang.Object"
   10633       abstract="false" native="false" synchronized="false"
   10634       static="false" final="false" visibility="public"
   10635       deprecated="not deprecated">
   10636     </method>
   10637     <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   10638       abstract="false" native="false" synchronized="false"
   10639       static="false" final="false" visibility="public"
   10640       deprecated="not deprecated">
   10641     </method>
   10642     <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter"
   10643       abstract="false" native="false" synchronized="false"
   10644       static="false" final="false" visibility="public"
   10645       deprecated="not deprecated">
   10646     </method>
   10647     <method name="acceptVisitor" return="T"
   10648       abstract="false" native="false" synchronized="false"
   10649       static="false" final="false" visibility="public"
   10650       deprecated="not deprecated">
   10651       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10652     </method>
   10653     <method name="applyTo"
   10654       abstract="false" native="false" synchronized="false"
   10655       static="false" final="false" visibility="public"
   10656       deprecated="not deprecated">
   10657       <param name="binder" type="com.google.inject.Binder"/>
   10658     </method>
   10659     <method name="toString" return="java.lang.String"
   10660       abstract="false" native="false" synchronized="false"
   10661       static="false" final="false" visibility="public"
   10662       deprecated="not deprecated">
   10663     </method>
   10664     <doc>
   10665     <![CDATA[Registration of type converters for matching target types. Instances are created
   10666  explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher,
   10667  TypeConverter) convertToTypes()} statements:
   10668  <pre>
   10669      convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre>
   10670 
   10671  @author jessewilson (a] google.com (Jesse Wilson)
   10672  @since 2.0]]>
   10673     </doc>
   10674   </class>
   10675   <!-- end class com.google.inject.spi.TypeConverterBinding -->
   10676   <!-- start interface com.google.inject.spi.TypeEncounter -->
   10677   <interface name="TypeEncounter"    abstract="true"
   10678     static="false" final="false" visibility="public"
   10679     deprecated="not deprecated">
   10680     <method name="addError"
   10681       abstract="true" native="false" synchronized="false"
   10682       static="false" final="false" visibility="public"
   10683       deprecated="not deprecated">
   10684       <param name="message" type="java.lang.String"/>
   10685       <param name="arguments" type="java.lang.Object[]"/>
   10686       <doc>
   10687       <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later
   10688  time. Unlike throwing an exception, this enable us to continue configuring the Injector and
   10689  discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments
   10690  into the message.]]>
   10691       </doc>
   10692     </method>
   10693     <method name="addError"
   10694       abstract="true" native="false" synchronized="false"
   10695       static="false" final="false" visibility="public"
   10696       deprecated="not deprecated">
   10697       <param name="t" type="java.lang.Throwable"/>
   10698       <doc>
   10699       <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the
   10700  message of which will be presented to the user at a later time. If your type listener calls
   10701  something that you worry may fail, you should catch the exception and pass it to this method.]]>
   10702       </doc>
   10703     </method>
   10704     <method name="addError"
   10705       abstract="true" native="false" synchronized="false"
   10706       static="false" final="false" visibility="public"
   10707       deprecated="not deprecated">
   10708       <param name="message" type="com.google.inject.spi.Message"/>
   10709       <doc>
   10710       <![CDATA[Records an error message to be presented to the user at a later time.]]>
   10711       </doc>
   10712     </method>
   10713     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   10714       abstract="true" native="false" synchronized="false"
   10715       static="false" final="false" visibility="public"
   10716       deprecated="not deprecated">
   10717       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   10718       <doc>
   10719       <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned
   10720  provider will not be valid until the injector has been created. The provider will throw an
   10721  {@code IllegalStateException} if you try to use it beforehand.]]>
   10722       </doc>
   10723     </method>
   10724     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   10725       abstract="true" native="false" synchronized="false"
   10726       static="false" final="false" visibility="public"
   10727       deprecated="not deprecated">
   10728       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   10729       <doc>
   10730       <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned
   10731  provider will not be valid until the injector has been created. The provider will throw an
   10732  {@code IllegalStateException} if you try to use it beforehand.]]>
   10733       </doc>
   10734     </method>
   10735     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   10736       abstract="true" native="false" synchronized="false"
   10737       static="false" final="false" visibility="public"
   10738       deprecated="not deprecated">
   10739       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   10740       <doc>
   10741       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   10742  of the given type {@code T}. The returned members injector will not be valid until the main
   10743  injector has been created. The members injector will throw an {@code IllegalStateException}
   10744  if you try to use it beforehand.
   10745 
   10746  @param typeLiteral type to get members injector for]]>
   10747       </doc>
   10748     </method>
   10749     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   10750       abstract="true" native="false" synchronized="false"
   10751       static="false" final="false" visibility="public"
   10752       deprecated="not deprecated">
   10753       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   10754       <doc>
   10755       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   10756  of the given type {@code T}. The returned members injector will not be valid until the main
   10757  injector has been created. The members injector will throw an {@code IllegalStateException}
   10758  if you try to use it beforehand.
   10759 
   10760  @param type type to get members injector for]]>
   10761       </doc>
   10762     </method>
   10763     <method name="register"
   10764       abstract="true" native="false" synchronized="false"
   10765       static="false" final="false" visibility="public"
   10766       deprecated="not deprecated">
   10767       <param name="membersInjector" type="com.google.inject.MembersInjector&lt;? super I&gt;"/>
   10768       <doc>
   10769       <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its
   10770  performed its own injections on an instance of {@code I}.]]>
   10771       </doc>
   10772     </method>
   10773     <method name="register"
   10774       abstract="true" native="false" synchronized="false"
   10775       static="false" final="false" visibility="public"
   10776       deprecated="not deprecated">
   10777       <param name="listener" type="com.google.inject.spi.InjectionListener&lt;? super I&gt;"/>
   10778       <doc>
   10779       <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all
   10780  injections have been performed on an instance of {@code I}.]]>
   10781       </doc>
   10782     </method>
   10783     <method name="bindInterceptor"
   10784       abstract="true" native="false" synchronized="false"
   10785       static="false" final="false" visibility="public"
   10786       deprecated="not deprecated">
   10787       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
   10788       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
   10789       <doc>
   10790       <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A
   10791  method is eligible for interception if:
   10792 
   10793  <ul>
   10794   <li>Guice created the instance the method is on</li>
   10795   <li>Neither the enclosing type nor the method is final</li>
   10796   <li>And the method is package-private or more accessible</li>
   10797  </ul>
   10798 
   10799  @param methodMatcher matches methods the interceptor should apply to. For
   10800      example: {@code annotatedWith(Transactional.class)}.
   10801  @param interceptors to bind]]>
   10802       </doc>
   10803     </method>
   10804     <doc>
   10805     <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection
   10806  listeners and binding method interceptors for injectable type {@code I}. It is an error to use
   10807  an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has
   10808  returned.
   10809 
   10810  @param <I> the injectable type encountered
   10811  @since 2.0]]>
   10812     </doc>
   10813   </interface>
   10814   <!-- end interface com.google.inject.spi.TypeEncounter -->
   10815   <!-- start interface com.google.inject.spi.TypeListener -->
   10816   <interface name="TypeListener"    abstract="true"
   10817     static="false" final="false" visibility="public"
   10818     deprecated="not deprecated">
   10819     <method name="hear"
   10820       abstract="true" native="false" synchronized="false"
   10821       static="false" final="false" visibility="public"
   10822       deprecated="not deprecated">
   10823       <param name="type" type="com.google.inject.TypeLiteral&lt;I&gt;"/>
   10824       <param name="encounter" type="com.google.inject.spi.TypeEncounter&lt;I&gt;"/>
   10825       <doc>
   10826       <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection.
   10827  Called during injector creation (or afterwards if Guice encounters a type at run time and
   10828  creates a JIT binding).
   10829 
   10830  @param type encountered by Guice
   10831  @param encounter context of this encounter, enables reporting errors, registering injection
   10832      listeners and binding method interceptors for {@code type}.
   10833 
   10834  @param <I> the injectable type]]>
   10835       </doc>
   10836     </method>
   10837     <doc>
   10838     <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in
   10839  one situation but only its methods and fields injected in another, Guice will notify this
   10840  listener once.
   10841 
   10842  <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener)
   10843  registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor(
   10844  com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])
   10845  binding method interceptors}.
   10846  
   10847  @since 2.0]]>
   10848     </doc>
   10849   </interface>
   10850   <!-- end interface com.google.inject.spi.TypeListener -->
   10851   <!-- start class com.google.inject.spi.TypeListenerBinding -->
   10852   <class name="TypeListenerBinding" extends="java.lang.Object"
   10853     abstract="false"
   10854     static="false" final="true" visibility="public"
   10855     deprecated="not deprecated">
   10856     <implements name="com.google.inject.spi.Element"/>
   10857     <method name="getListener" return="com.google.inject.spi.TypeListener"
   10858       abstract="false" native="false" synchronized="false"
   10859       static="false" final="false" visibility="public"
   10860       deprecated="not deprecated">
   10861       <doc>
   10862       <![CDATA[Returns the registered listener.]]>
   10863       </doc>
   10864     </method>
   10865     <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   10866       abstract="false" native="false" synchronized="false"
   10867       static="false" final="false" visibility="public"
   10868       deprecated="not deprecated">
   10869       <doc>
   10870       <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]>
   10871       </doc>
   10872     </method>
   10873     <method name="getSource" return="java.lang.Object"
   10874       abstract="false" native="false" synchronized="false"
   10875       static="false" final="false" visibility="public"
   10876       deprecated="not deprecated">
   10877     </method>
   10878     <method name="acceptVisitor" return="T"
   10879       abstract="false" native="false" synchronized="false"
   10880       static="false" final="false" visibility="public"
   10881       deprecated="not deprecated">
   10882       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   10883     </method>
   10884     <method name="applyTo"
   10885       abstract="false" native="false" synchronized="false"
   10886       static="false" final="false" visibility="public"
   10887       deprecated="not deprecated">
   10888       <param name="binder" type="com.google.inject.Binder"/>
   10889     </method>
   10890     <doc>
   10891     <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in
   10892  a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements:
   10893 
   10894  <pre>
   10895      register(only(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {}), listener);</pre>
   10896 
   10897  @author jessewilson (a] google.com (Jesse Wilson)
   10898  @since 2.0]]>
   10899     </doc>
   10900   </class>
   10901   <!-- end class com.google.inject.spi.TypeListenerBinding -->
   10902   <!-- start interface com.google.inject.spi.UntargettedBinding -->
   10903   <interface name="UntargettedBinding"    abstract="true"
   10904     static="false" final="false" visibility="public"
   10905     deprecated="not deprecated">
   10906     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   10907     <doc>
   10908     <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding
   10909  strategies to resolve injections.
   10910 
   10911  @author jessewilson (a] google.com (Jesse Wilson)
   10912  @since 2.0]]>
   10913     </doc>
   10914   </interface>
   10915   <!-- end interface com.google.inject.spi.UntargettedBinding -->
   10916 </package>
   10917 <package name="com.google.inject.spring">
   10918   <!-- start class com.google.inject.spring.SpringIntegration -->
   10919   <class name="SpringIntegration" extends="java.lang.Object"
   10920     abstract="false"
   10921     static="false" final="false" visibility="public"
   10922     deprecated="not deprecated">
   10923     <method name="fromSpring" return="com.google.inject.Provider&lt;T&gt;"
   10924       abstract="false" native="false" synchronized="false"
   10925       static="true" final="false" visibility="public"
   10926       deprecated="not deprecated">
   10927       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   10928       <param name="name" type="java.lang.String"/>
   10929       <doc>
   10930       <![CDATA[Creates a provider which looks up objects from Spring using the given name.
   10931  Expects a binding to {@link
   10932  org.springframework.beans.factory.BeanFactory}. Example usage:
   10933 
   10934  <pre>
   10935  bind(DataSource.class)
   10936    .toProvider(fromSpring(DataSource.class, "dataSource"));
   10937  </pre>]]>
   10938       </doc>
   10939     </method>
   10940     <method name="bindAll"
   10941       abstract="false" native="false" synchronized="false"
   10942       static="true" final="false" visibility="public"
   10943       deprecated="not deprecated">
   10944       <param name="binder" type="com.google.inject.Binder"/>
   10945       <param name="beanFactory" type="org.springframework.beans.factory.ListableBeanFactory"/>
   10946       <doc>
   10947       <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean
   10948  named "foo", this method creates a binding to the bean's type and
   10949  {@code @Named("foo")}.
   10950 
   10951  @see com.google.inject.name.Named
   10952  @see com.google.inject.name.Names#named(String)]]>
   10953       </doc>
   10954     </method>
   10955     <doc>
   10956     <![CDATA[Integrates Guice with Spring.
   10957 
   10958  @author crazybob (a] google.com (Bob Lee)]]>
   10959     </doc>
   10960   </class>
   10961   <!-- end class com.google.inject.spring.SpringIntegration -->
   10962 </package>
   10963 <package name="com.google.inject.struts2">
   10964   <!-- start class com.google.inject.struts2.GuiceObjectFactory -->
   10965   <class name="GuiceObjectFactory" extends="com.opensymphony.xwork2.ObjectFactory"
   10966     abstract="false"
   10967     static="false" final="false" visibility="public"
   10968     deprecated="Use {@link com.google.inject.struts2.Struts2Factory} instead.">
   10969     <constructor name="GuiceObjectFactory"
   10970       static="false" final="false" visibility="public"
   10971       deprecated="not deprecated">
   10972     </constructor>
   10973     <method name="isNoArgConstructorRequired" return="boolean"
   10974       abstract="false" native="false" synchronized="false"
   10975       static="false" final="false" visibility="public"
   10976       deprecated="not deprecated">
   10977     </method>
   10978     <method name="getClassInstance" return="java.lang.Class"
   10979       abstract="false" native="false" synchronized="false"
   10980       static="false" final="false" visibility="public"
   10981       deprecated="not deprecated">
   10982       <param name="name" type="java.lang.String"/>
   10983       <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
   10984     </method>
   10985     <method name="buildBean" return="java.lang.Object"
   10986       abstract="false" native="false" synchronized="false"
   10987       static="false" final="false" visibility="public"
   10988       deprecated="not deprecated">
   10989       <param name="clazz" type="java.lang.Class"/>
   10990       <param name="extraContext" type="java.util.Map"/>
   10991     </method>
   10992     <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor"
   10993       abstract="false" native="false" synchronized="false"
   10994       static="false" final="false" visibility="public"
   10995       deprecated="not deprecated">
   10996       <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/>
   10997       <param name="interceptorRefParams" type="java.util.Map"/>
   10998       <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/>
   10999     </method>
   11000     <doc>
   11001     <![CDATA[@deprecated Use {@link com.google.inject.struts2.Struts2Factory} instead.]]>
   11002     </doc>
   11003   </class>
   11004   <!-- end class com.google.inject.struts2.GuiceObjectFactory -->
   11005   <!-- start class com.google.inject.struts2.Struts2Factory -->
   11006   <class name="Struts2Factory" extends="com.opensymphony.xwork2.ObjectFactory"
   11007     abstract="false"
   11008     static="false" final="false" visibility="public"
   11009     deprecated="not deprecated">
   11010     <constructor name="Struts2Factory"
   11011       static="false" final="false" visibility="public"
   11012       deprecated="not deprecated">
   11013     </constructor>
   11014     <method name="isNoArgConstructorRequired" return="boolean"
   11015       abstract="false" native="false" synchronized="false"
   11016       static="false" final="false" visibility="public"
   11017       deprecated="not deprecated">
   11018     </method>
   11019     <method name="getClassInstance" return="java.lang.Class&lt;?&gt;"
   11020       abstract="false" native="false" synchronized="false"
   11021       static="false" final="false" visibility="public"
   11022       deprecated="not deprecated">
   11023       <param name="name" type="java.lang.String"/>
   11024       <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
   11025     </method>
   11026     <method name="buildBean" return="java.lang.Object"
   11027       abstract="false" native="false" synchronized="false"
   11028       static="false" final="false" visibility="public"
   11029       deprecated="not deprecated">
   11030       <param name="clazz" type="java.lang.Class"/>
   11031       <param name="extraContext" type="java.util.Map&lt;java.lang.String, java.lang.Object&gt;"/>
   11032     </method>
   11033     <method name="buildInterceptor" return="com.opensymphony.xwork2.interceptor.Interceptor"
   11034       abstract="false" native="false" synchronized="false"
   11035       static="false" final="false" visibility="public"
   11036       deprecated="not deprecated">
   11037       <param name="interceptorConfig" type="com.opensymphony.xwork2.config.entities.InterceptorConfig"/>
   11038       <param name="interceptorRefParams" type="java.util.Map"/>
   11039       <exception name="ConfigurationException" type="com.opensymphony.xwork2.config.ConfigurationException"/>
   11040     </method>
   11041     <doc>
   11042     <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with
   11043  GS2 and fixes several bugs.
   11044 
   11045  @author dhanji (a] gmail.com
   11046  @author benmccann.com]]>
   11047     </doc>
   11048   </class>
   11049   <!-- end class com.google.inject.struts2.Struts2Factory -->
   11050   <!-- start class com.google.inject.struts2.Struts2GuicePluginModule -->
   11051   <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule"
   11052     abstract="false"
   11053     static="false" final="false" visibility="public"
   11054     deprecated="not deprecated">
   11055     <constructor name="Struts2GuicePluginModule"
   11056       static="false" final="false" visibility="public"
   11057       deprecated="not deprecated">
   11058     </constructor>
   11059     <method name="configure"
   11060       abstract="false" native="false" synchronized="false"
   11061       static="false" final="false" visibility="protected"
   11062       deprecated="not deprecated">
   11063     </method>
   11064     <doc>
   11065     <![CDATA[Initializes the Struts 2 Guice Plugin. Must be added to the injector returned
   11066  by {@link com.google.inject.servlet.GuiceServletContextListener#getInjector}.
   11067 
   11068  @author benmccann.com]]>
   11069     </doc>
   11070   </class>
   11071   <!-- end class com.google.inject.struts2.Struts2GuicePluginModule -->
   11072 </package>
   11073 <package name="com.google.inject.testing.fieldbinder">
   11074   <!-- start class com.google.inject.testing.fieldbinder.Bind -->
   11075   <class name="Bind"    abstract="true"
   11076     static="false" final="false" visibility="public"
   11077     deprecated="not deprecated">
   11078     <implements name="java.lang.annotation.Annotation"/>
   11079     <doc>
   11080     <![CDATA[Annotation used by {@link BoundFieldModule} to indicate that a field should be bound to its
   11081  value using Guice.
   11082 
   11083  <p>Binding to {@code null} is only allowed for fields that are annotated {@code @Nullable}. See
   11084  <a href="https://github.com/google/guice/wiki/UseNullable">https://github.com/google/guice/wiki/UseNullable</a>
   11085 
   11086  @see BoundFieldModule
   11087  @author eatnumber1 (a] google.com (Russ Harmon)]]>
   11088     </doc>
   11089   </class>
   11090   <!-- end class com.google.inject.testing.fieldbinder.Bind -->
   11091   <!-- start class com.google.inject.testing.fieldbinder.BoundFieldModule -->
   11092   <class name="BoundFieldModule" extends="java.lang.Object"
   11093     abstract="false"
   11094     static="false" final="true" visibility="public"
   11095     deprecated="not deprecated">
   11096     <implements name="com.google.inject.Module"/>
   11097     <method name="of" return="com.google.inject.testing.fieldbinder.BoundFieldModule"
   11098       abstract="false" native="false" synchronized="false"
   11099       static="true" final="false" visibility="public"
   11100       deprecated="not deprecated">
   11101       <param name="instance" type="java.lang.Object"/>
   11102       <doc>
   11103       <![CDATA[Create a BoundFieldModule which binds the {@link Bind} annotated fields of {@code instance}.
   11104 
   11105  @param instance the instance whose fields will be bound.
   11106  @return a module which will bind the {@link Bind} annotated fields of {@code instance}.]]>
   11107       </doc>
   11108     </method>
   11109     <method name="configure"
   11110       abstract="false" native="false" synchronized="false"
   11111       static="false" final="false" visibility="public"
   11112       deprecated="not deprecated">
   11113       <param name="binder" type="com.google.inject.Binder"/>
   11114     </method>
   11115     <doc>
   11116     <![CDATA[Automatically creates Guice bindings for fields in an object annotated with {@link Bind}.
   11117 
   11118  <p>This module is intended for use in tests to reduce the code needed to bind local fields
   11119  (usually mocks) for injection.
   11120 
   11121  <p>The following rules are followed in determining how fields are bound using this module:
   11122 
   11123  <ul>
   11124  <li>
   11125  For each {@link Bind} annotated field of an object and its superclasses, this module will bind
   11126  that field's type to that field's value at injector creation time. This includes both instance
   11127  and static fields.
   11128  </li>
   11129  <li>
   11130  If {@link Bind#to} is specified, the field's value will be bound to the class specified by
   11131  {@link Bind#to} instead of the field's actual type.
   11132  </li>
   11133  <li>
   11134  If a {@link BindingAnnotation} or {@link javax.inject.Qualifier} is present on the field,
   11135  that field will be bound using that annotation via {@link AnnotatedBindingBuilder#annotatedWith}.
   11136  For example, {@code bind(Foo.class).annotatedWith(BarAnnotation.class).toInstance(theValue)}.
   11137  It is an error to supply more than one {@link BindingAnnotation} or
   11138  {@link javax.inject.Qualifier}.
   11139  </li>
   11140  <li>
   11141  If the field is of type {@link Provider}, the field's value will be bound as a {@link Provider}
   11142  using {@link LinkedBindingBuilder#toProvider} to the provider's parameterized type. For example,
   11143  {@code Provider<Integer>} binds to {@link Integer}. Attempting to bind a non-parameterized
   11144  {@link Provider} without a {@link Bind#to} clause is an error.
   11145  </li>
   11146  </ul>
   11147 
   11148  <p>Example use:
   11149  <pre><code>
   11150  public class TestFoo {
   11151    // bind(new TypeLiteral{@code <List<Object>>}() {}).toInstance(listOfObjects);
   11152    {@literal @}Bind private List{@code <Object>} listOfObjects = Lists.of();
   11153 
   11154    // bind(String.class).toProvider(new Provider() { public String get() { return userName; }});
   11155    {@literal @}Bind(lazy = true) private String userName;
   11156 
   11157    // bind(SuperClass.class).toInstance(aSubClass);
   11158    {@literal @}Bind(to = SuperClass.class) private SubClass aSubClass = new SubClass();
   11159 
   11160    // bind(String.class).annotatedWith(MyBindingAnnotation.class).toInstance(myString);
   11161    {@literal @}Bind
   11162    {@literal @}MyBindingAnnotation
   11163    private String myString = "hello";
   11164 
   11165    // bind(Object.class).toProvider(myProvider);
   11166    {@literal @}Bind private Provider{@code <Object>} myProvider = getProvider();
   11167 
   11168    {@literal @}Before public void setUp() {
   11169      Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this);
   11170    }
   11171  }
   11172  </code></pre>
   11173 
   11174  @see Bind
   11175  @author eatnumber1 (a] google.com (Russ Harmon)]]>
   11176     </doc>
   11177   </class>
   11178   <!-- end class com.google.inject.testing.fieldbinder.BoundFieldModule -->
   11179 </package>
   11180 <package name="com.google.inject.throwingproviders">
   11181   <!-- start interface com.google.inject.throwingproviders.CheckedProvider -->
   11182   <interface name="CheckedProvider"    abstract="true"
   11183     static="false" final="false" visibility="public"
   11184     deprecated="not deprecated">
   11185     <method name="get" return="T"
   11186       abstract="true" native="false" synchronized="false"
   11187       static="false" final="false" visibility="public"
   11188       deprecated="not deprecated">
   11189       <exception name="Exception" type="java.lang.Exception"/>
   11190     </method>
   11191     <doc>
   11192     <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
   11193  a checked Exception. Users may not inject {@code T} directly.
   11194 
   11195  <p>This interface must be extended to use application-specific exception types.
   11196  Such subinterfaces may not define new methods, but may narrow the exception type.
   11197  <pre>
   11198  public interface RemoteProvider&lt;T&gt; extends CheckedProvider&lt;T&gt; { 
   11199    T get() throws CustomExceptionOne, CustomExceptionTwo;
   11200  }
   11201  </pre>
   11202 
   11203  <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
   11204  or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
   11205  will invoked at most once within each scope.
   11206  
   11207  @since 3.0]]>
   11208     </doc>
   11209   </interface>
   11210   <!-- end interface com.google.inject.throwingproviders.CheckedProvider -->
   11211   <!-- start class com.google.inject.throwingproviders.CheckedProvides -->
   11212   <class name="CheckedProvides"    abstract="true"
   11213     static="false" final="false" visibility="public"
   11214     deprecated="not deprecated">
   11215     <implements name="java.lang.annotation.Annotation"/>
   11216     <doc>
   11217     <![CDATA[Annotates methods of a {@link com.google.inject.Module} to create a
   11218  {@link CheckedProvider} method binding that can throw exceptions. The
   11219  method's return type is bound to a {@link CheckedProvider} that can be
   11220  injected. Guice will pass dependencies to the method as parameters. Install
   11221  {@literal @}CheckedProvides methods by using
   11222  {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the
   11223  module where the methods are declared.
   11224  
   11225  @author sameb (a] google.com (Sam Berlin)
   11226  @since 3.0]]>
   11227     </doc>
   11228   </class>
   11229   <!-- end class com.google.inject.throwingproviders.CheckedProvides -->
   11230   <!-- start class com.google.inject.throwingproviders.ThrowingInject -->
   11231   <class name="ThrowingInject"    abstract="true"
   11232     static="false" final="false" visibility="public"
   11233     deprecated="not deprecated">
   11234     <implements name="java.lang.annotation.Annotation"/>
   11235     <doc>
   11236     <![CDATA[A version of {@literal @}{@link Inject} designed for ThrowingProviders.  Use by:
   11237  <pre><code>ThrowingProviderBinder.create(binder())
   11238     .bind(RemoteProvider.class, Customer.class)
   11239     .providing(CustomerImpl.class);
   11240  </code></pre>
   11241  where CustomerImpl has a constructor annotated with ThrowingInject.
   11242 
   11243  @author sameb (a] google.com (Sam Berlin)
   11244  @since 4.0]]>
   11245     </doc>
   11246   </class>
   11247   <!-- end class com.google.inject.throwingproviders.ThrowingInject -->
   11248   <!-- start interface com.google.inject.throwingproviders.ThrowingProvider -->
   11249   <interface name="ThrowingProvider"    abstract="true"
   11250     static="false" final="false" visibility="public"
   11251     deprecated="use {@link CheckedProvider} instead.">
   11252     <implements name="com.google.inject.throwingproviders.CheckedProvider&lt;T&gt;"/>
   11253     <method name="get" return="T"
   11254       abstract="true" native="false" synchronized="false"
   11255       static="false" final="false" visibility="public"
   11256       deprecated="not deprecated">
   11257       <exception name="Exception" type="java.lang.Exception"/>
   11258     </method>
   11259     <doc>
   11260     <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
   11261  a checked Exception. Users may not inject {@code T} directly.
   11262 
   11263  <p>This interface must be extended to use application-specific exception types.
   11264  Such subinterfaces may not define new methods:
   11265  <pre>
   11266  public interface RemoteProvider&lt;T&gt; extends ThrowingProvider&lt;T, RemoteException&gt; { }
   11267  </pre>
   11268 
   11269  <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
   11270  or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
   11271  will invoked at most once within each scope.
   11272 
   11273  @author jmourits (a] google.com (Jerome Mourits)
   11274  @author jessewilson (a] google.com (Jesse Wilson)
   11275  @deprecated use {@link CheckedProvider} instead.]]>
   11276     </doc>
   11277   </interface>
   11278   <!-- end interface com.google.inject.throwingproviders.ThrowingProvider -->
   11279   <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder -->
   11280   <class name="ThrowingProviderBinder" extends="java.lang.Object"
   11281     abstract="false"
   11282     static="false" final="false" visibility="public"
   11283     deprecated="not deprecated">
   11284     <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder"
   11285       abstract="false" native="false" synchronized="false"
   11286       static="true" final="false" visibility="public"
   11287       deprecated="not deprecated">
   11288       <param name="binder" type="com.google.inject.Binder"/>
   11289     </method>
   11290     <method name="forModule" return="com.google.inject.Module"
   11291       abstract="false" native="false" synchronized="false"
   11292       static="true" final="false" visibility="public"
   11293       deprecated="not deprecated">
   11294       <param name="module" type="com.google.inject.Module"/>
   11295       <doc>
   11296       <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods.
   11297  
   11298  @since 3.0]]>
   11299       </doc>
   11300     </method>
   11301     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, ?&gt;"
   11302       abstract="false" native="false" synchronized="false"
   11303       static="false" final="false" visibility="public"
   11304       deprecated="Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.">
   11305       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   11306       <param name="clazz" type="java.lang.reflect.Type"/>
   11307       <doc>
   11308       <![CDATA[@deprecated Use {@link #bind(Class, Class)} or {@link #bind(Class, TypeLiteral)} instead.]]>
   11309       </doc>
   11310     </method>
   11311     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11312       abstract="false" native="false" synchronized="false"
   11313       static="false" final="false" visibility="public"
   11314       deprecated="not deprecated">
   11315       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   11316       <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
   11317       <doc>
   11318       <![CDATA[@since 4.0]]>
   11319       </doc>
   11320     </method>
   11321     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11322       abstract="false" native="false" synchronized="false"
   11323       static="false" final="false" visibility="public"
   11324       deprecated="not deprecated">
   11325       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   11326       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   11327       <doc>
   11328       <![CDATA[@since 4.0]]>
   11329       </doc>
   11330     </method>
   11331     <doc>
   11332     <![CDATA[<p>Builds a binding for a {@link CheckedProvider}.
   11333  
   11334  <p>You can use a fluent API and custom providers:
   11335  <pre><code>ThrowingProviderBinder.create(binder())
   11336     .bind(RemoteProvider.class, Customer.class)
   11337     .to(RemoteCustomerProvider.class)
   11338     .in(RequestScope.class);
   11339  </code></pre>
   11340  or, you can use throwing provider methods:
   11341  <pre><code>class MyModule extends AbstractModule {
   11342    configure() {
   11343      ThrowingProviderBinder.install(this, binder());
   11344    }
   11345    
   11346    {@literal @}CheckedProvides(RemoteProvider.class)
   11347    {@literal @}RequestScope
   11348    Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException {
   11349      return creator.getCustomerOrThrow();
   11350    }
   11351  }
   11352  </code></pre>
   11353  You also can declare that a CheckedProvider construct
   11354  a particular class whose constructor throws an exception:
   11355  <pre><code>ThrowingProviderBinder.create(binder())
   11356     .bind(RemoteProvider.class, Customer.class)
   11357     .providing(CustomerImpl.class)
   11358     .in(RequestScope.class);
   11359  </code></pre>
   11360  
   11361  @author jmourits (a] google.com (Jerome Mourits)
   11362  @author jessewilson (a] google.com (Jesse Wilson)
   11363  @author sameb (a] google.com (Sam Berlin)]]>
   11364     </doc>
   11365   </class>
   11366   <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder -->
   11367   <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
   11368   <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object"
   11369     abstract="false"
   11370     static="false" final="false" visibility="public"
   11371     deprecated="not deprecated">
   11372     <constructor name="SecondaryBinder" type="java.lang.Class&lt;P&gt;, java.lang.reflect.Type"
   11373       static="false" final="false" visibility="public"
   11374       deprecated="not deprecated">
   11375     </constructor>
   11376     <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11377       abstract="false" native="false" synchronized="false"
   11378       static="false" final="false" visibility="public"
   11379       deprecated="not deprecated">
   11380       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   11381     </method>
   11382     <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11383       abstract="false" native="false" synchronized="false"
   11384       static="false" final="false" visibility="public"
   11385       deprecated="not deprecated">
   11386       <param name="annotation" type="java.lang.annotation.Annotation"/>
   11387     </method>
   11388     <method name="scopeExceptions" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P, T&gt;"
   11389       abstract="false" native="false" synchronized="false"
   11390       static="false" final="false" visibility="public"
   11391       deprecated="not deprecated">
   11392       <param name="scopeExceptions" type="boolean"/>
   11393       <doc>
   11394       <![CDATA[Determines if exceptions should be scoped. By default exceptions are scoped.
   11395 
   11396  @param scopeExceptions whether exceptions should be scoped.
   11397  @since 4.0]]>
   11398       </doc>
   11399     </method>
   11400     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   11401       abstract="false" native="false" synchronized="false"
   11402       static="false" final="false" visibility="public"
   11403       deprecated="not deprecated">
   11404       <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/>
   11405     </method>
   11406     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   11407       abstract="false" native="false" synchronized="false"
   11408       static="false" final="false" visibility="public"
   11409       deprecated="not deprecated">
   11410       <param name="targetType" type="java.lang.Class&lt;? extends P&gt;"/>
   11411     </method>
   11412     <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder"
   11413       abstract="false" native="false" synchronized="false"
   11414       static="false" final="false" visibility="public"
   11415       deprecated="not deprecated">
   11416       <param name="cxtorClass" type="java.lang.Class&lt;? extends T&gt;"/>
   11417       <doc>
   11418       <![CDATA[@since 4.0]]>
   11419       </doc>
   11420     </method>
   11421     <method name="providing" return="com.google.inject.binder.ScopedBindingBuilder"
   11422       abstract="false" native="false" synchronized="false"
   11423       static="false" final="false" visibility="public"
   11424       deprecated="not deprecated">
   11425       <param name="cxtorLiteral" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   11426       <doc>
   11427       <![CDATA[@since 4.0]]>
   11428       </doc>
   11429     </method>
   11430     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   11431       abstract="false" native="false" synchronized="false"
   11432       static="false" final="false" visibility="public"
   11433       deprecated="not deprecated">
   11434       <param name="targetKey" type="com.google.inject.Key&lt;? extends P&gt;"/>
   11435     </method>
   11436   </class>
   11437   <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
   11438 </package>
   11439 <package name="com.google.inject.tools.jmx">
   11440   <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean -->
   11441   <interface name="ManagedBindingMBean"    abstract="true"
   11442     static="false" final="false" visibility="public"
   11443     deprecated="not deprecated">
   11444     <method name="getSource" return="java.lang.String"
   11445       abstract="true" native="false" synchronized="false"
   11446       static="false" final="false" visibility="public"
   11447       deprecated="not deprecated">
   11448       <doc>
   11449       <![CDATA[Gets the source of this binding.]]>
   11450       </doc>
   11451     </method>
   11452     <method name="getProvider" return="java.lang.String"
   11453       abstract="true" native="false" synchronized="false"
   11454       static="false" final="false" visibility="public"
   11455       deprecated="not deprecated">
   11456       <doc>
   11457       <![CDATA[Gets the provider to which this binding is bound.]]>
   11458       </doc>
   11459     </method>
   11460     <method name="getKey" return="java.lang.String"
   11461       abstract="true" native="false" synchronized="false"
   11462       static="false" final="false" visibility="public"
   11463       deprecated="not deprecated">
   11464       <doc>
   11465       <![CDATA[Gets the binding key.]]>
   11466       </doc>
   11467     </method>
   11468     <doc>
   11469     <![CDATA[JMX interface to bindings.
   11470 
   11471  @author crazybob (a] google.com (Bob Lee)]]>
   11472     </doc>
   11473   </interface>
   11474   <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean -->
   11475   <!-- start class com.google.inject.tools.jmx.Manager -->
   11476   <class name="Manager" extends="java.lang.Object"
   11477     abstract="false"
   11478     static="false" final="false" visibility="public"
   11479     deprecated="not deprecated">
   11480     <constructor name="Manager"
   11481       static="false" final="false" visibility="public"
   11482       deprecated="not deprecated">
   11483     </constructor>
   11484     <method name="manage"
   11485       abstract="false" native="false" synchronized="false"
   11486       static="true" final="false" visibility="public"
   11487       deprecated="not deprecated">
   11488       <param name="domain" type="java.lang.String"/>
   11489       <param name="injector" type="com.google.inject.Injector"/>
   11490       <doc>
   11491       <![CDATA[Registers all the bindings of an Injector with the platform MBean server.
   11492  Consider using the name of your root {@link Module} class as the domain.]]>
   11493       </doc>
   11494     </method>
   11495     <method name="manage"
   11496       abstract="false" native="false" synchronized="false"
   11497       static="true" final="false" visibility="public"
   11498       deprecated="not deprecated">
   11499       <param name="server" type="javax.management.MBeanServer"/>
   11500       <param name="domain" type="java.lang.String"/>
   11501       <param name="injector" type="com.google.inject.Injector"/>
   11502       <doc>
   11503       <![CDATA[Registers all the bindings of an Injector with the given MBean server.
   11504  Consider using the name of your root {@link Module} class as the domain.]]>
   11505       </doc>
   11506     </method>
   11507     <method name="main"
   11508       abstract="false" native="false" synchronized="false"
   11509       static="true" final="false" visibility="public"
   11510       deprecated="not deprecated">
   11511       <param name="args" type="java.lang.String[]"/>
   11512       <exception name="Exception" type="java.lang.Exception"/>
   11513       <doc>
   11514       <![CDATA[Run with no arguments for usage instructions.]]>
   11515       </doc>
   11516     </method>
   11517     <doc>
   11518     <![CDATA[Provides a JMX interface to Guice.
   11519 
   11520  @author crazybob (a] google.com (Bob Lee)]]>
   11521     </doc>
   11522   </class>
   11523   <!-- end class com.google.inject.tools.jmx.Manager -->
   11524 </package>
   11525 <package name="com.google.inject.util">
   11526   <!-- start class com.google.inject.util.Modules -->
   11527   <class name="Modules" extends="java.lang.Object"
   11528     abstract="false"
   11529     static="false" final="true" visibility="public"
   11530     deprecated="not deprecated">
   11531     <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
   11532       abstract="false" native="false" synchronized="false"
   11533       static="true" final="false" visibility="public"
   11534       deprecated="not deprecated">
   11535       <param name="modules" type="com.google.inject.Module[]"/>
   11536       <doc>
   11537       <![CDATA[Returns a builder that creates a module that overlays override modules over the given
   11538  modules. If a key is bound in both sets of modules, only the binding from the override modules
   11539  is kept. If a single {@link PrivateModule} is supplied or all elements are from
   11540  a single {@link PrivateBinder}, then this will overwrite the private bindings.
   11541  Otherwise, private bindings will not be overwritten unless they are exposed. 
   11542  This can be used to replace the bindings of a production module with test bindings:
   11543  <pre>
   11544  Module functionalTestModule
   11545      = Modules.override(new ProductionModule()).with(new TestModule());
   11546  </pre>
   11547 
   11548  <p>Prefer to write smaller modules that can be reused and tested without overrides.
   11549 
   11550  @param modules the modules whose bindings are open to be overridden]]>
   11551       </doc>
   11552     </method>
   11553     <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
   11554       abstract="false" native="false" synchronized="false"
   11555       static="true" final="false" visibility="public"
   11556       deprecated="not deprecated">
   11557       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   11558       <doc>
   11559       <![CDATA[Returns a builder that creates a module that overlays override modules over the given
   11560  modules. If a key is bound in both sets of modules, only the binding from the override modules
   11561  is kept. If a single {@link PrivateModule} is supplied or all elements are from
   11562  a single {@link PrivateBinder}, then this will overwrite the private bindings.
   11563  Otherwise, private bindings will not be overwritten unless they are exposed. 
   11564  This can be used to replace the bindings of a production module with test bindings:
   11565  <pre>
   11566  Module functionalTestModule
   11567      = Modules.override(getProductionModules()).with(getTestModules());
   11568  </pre>
   11569 
   11570  <p>Prefer to write smaller modules that can be reused and tested without overrides.
   11571 
   11572  @param modules the modules whose bindings are open to be overridden]]>
   11573       </doc>
   11574     </method>
   11575     <method name="combine" return="com.google.inject.Module"
   11576       abstract="false" native="false" synchronized="false"
   11577       static="true" final="false" visibility="public"
   11578       deprecated="not deprecated">
   11579       <param name="modules" type="com.google.inject.Module[]"/>
   11580       <doc>
   11581       <![CDATA[Returns a new module that installs all of {@code modules}.]]>
   11582       </doc>
   11583     </method>
   11584     <method name="combine" return="com.google.inject.Module"
   11585       abstract="false" native="false" synchronized="false"
   11586       static="true" final="false" visibility="public"
   11587       deprecated="not deprecated">
   11588       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   11589       <doc>
   11590       <![CDATA[Returns a new module that installs all of {@code modules}.]]>
   11591       </doc>
   11592     </method>
   11593     <field name="EMPTY_MODULE" type="com.google.inject.Module"
   11594       transient="false" volatile="false"
   11595       static="true" final="true" visibility="public"
   11596       deprecated="not deprecated">
   11597     </field>
   11598     <doc>
   11599     <![CDATA[Static utility methods for creating and working with instances of {@link Module}.
   11600 
   11601  @author jessewilson (a] google.com (Jesse Wilson)
   11602  @since 2.0]]>
   11603     </doc>
   11604   </class>
   11605   <!-- end class com.google.inject.util.Modules -->
   11606   <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
   11607   <interface name="Modules.OverriddenModuleBuilder"    abstract="true"
   11608     static="true" final="false" visibility="public"
   11609     deprecated="not deprecated">
   11610     <method name="with" return="com.google.inject.Module"
   11611       abstract="true" native="false" synchronized="false"
   11612       static="false" final="false" visibility="public"
   11613       deprecated="not deprecated">
   11614       <param name="overrides" type="com.google.inject.Module[]"/>
   11615       <doc>
   11616       <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   11617       </doc>
   11618     </method>
   11619     <method name="with" return="com.google.inject.Module"
   11620       abstract="true" native="false" synchronized="false"
   11621       static="false" final="false" visibility="public"
   11622       deprecated="not deprecated">
   11623       <param name="overrides" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   11624       <doc>
   11625       <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   11626       </doc>
   11627     </method>
   11628     <doc>
   11629     <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   11630     </doc>
   11631   </interface>
   11632   <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
   11633   <!-- start class com.google.inject.util.Providers -->
   11634   <class name="Providers" extends="java.lang.Object"
   11635     abstract="false"
   11636     static="false" final="true" visibility="public"
   11637     deprecated="not deprecated">
   11638     <method name="of" return="com.google.inject.Provider&lt;T&gt;"
   11639       abstract="false" native="false" synchronized="false"
   11640       static="true" final="false" visibility="public"
   11641       deprecated="not deprecated">
   11642       <param name="instance" type="T"/>
   11643       <doc>
   11644       <![CDATA[Returns a provider which always provides {@code instance}.  This should not
   11645  be necessary to use in your application, but is helpful for several types
   11646  of unit tests.
   11647 
   11648  @param instance the instance that should always be provided.  This is also
   11649      permitted to be null, to enable aggressive testing, although in real
   11650      life a Guice-supplied Provider will never return null.]]>
   11651       </doc>
   11652     </method>
   11653     <method name="guicify" return="com.google.inject.Provider&lt;T&gt;"
   11654       abstract="false" native="false" synchronized="false"
   11655       static="true" final="false" visibility="public"
   11656       deprecated="not deprecated">
   11657       <param name="provider" type="javax.inject.Provider&lt;T&gt;"/>
   11658       <doc>
   11659       <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given
   11660  JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary,
   11661  since Guice providers directly implement the JSR-330 interface.
   11662  
   11663  @since 3.0]]>
   11664       </doc>
   11665     </method>
   11666     <doc>
   11667     <![CDATA[Static utility methods for creating and working with instances of
   11668  {@link Provider}.
   11669 
   11670  @author Kevin Bourrillion (kevinb9n (a] gmail.com)
   11671  @since 2.0]]>
   11672     </doc>
   11673   </class>
   11674   <!-- end class com.google.inject.util.Providers -->
   11675   <!-- start class com.google.inject.util.Types -->
   11676   <class name="Types" extends="java.lang.Object"
   11677     abstract="false"
   11678     static="false" final="true" visibility="public"
   11679     deprecated="not deprecated">
   11680     <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType"
   11681       abstract="false" native="false" synchronized="false"
   11682       static="true" final="false" visibility="public"
   11683       deprecated="not deprecated">
   11684       <param name="rawType" type="java.lang.reflect.Type"/>
   11685       <param name="typeArguments" type="java.lang.reflect.Type[]"/>
   11686       <doc>
   11687       <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
   11688  {@code rawType}. The returned type does not have an owner type.
   11689 
   11690  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11691       </doc>
   11692     </method>
   11693     <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType"
   11694       abstract="false" native="false" synchronized="false"
   11695       static="true" final="false" visibility="public"
   11696       deprecated="not deprecated">
   11697       <param name="ownerType" type="java.lang.reflect.Type"/>
   11698       <param name="rawType" type="java.lang.reflect.Type"/>
   11699       <param name="typeArguments" type="java.lang.reflect.Type[]"/>
   11700       <doc>
   11701       <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
   11702  {@code rawType} and enclosed by {@code ownerType}.
   11703 
   11704  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11705       </doc>
   11706     </method>
   11707     <method name="arrayOf" return="java.lang.reflect.GenericArrayType"
   11708       abstract="false" native="false" synchronized="false"
   11709       static="true" final="false" visibility="public"
   11710       deprecated="not deprecated">
   11711       <param name="componentType" type="java.lang.reflect.Type"/>
   11712       <doc>
   11713       <![CDATA[Returns an array type whose elements are all instances of
   11714  {@code componentType}.
   11715 
   11716  @return a {@link java.io.Serializable serializable} generic array type.]]>
   11717       </doc>
   11718     </method>
   11719     <method name="subtypeOf" return="java.lang.reflect.WildcardType"
   11720       abstract="false" native="false" synchronized="false"
   11721       static="true" final="false" visibility="public"
   11722       deprecated="not deprecated">
   11723       <param name="bound" type="java.lang.reflect.Type"/>
   11724       <doc>
   11725       <![CDATA[Returns a type that represents an unknown type that extends {@code bound}.
   11726  For example, if {@code bound} is {@code CharSequence.class}, this returns
   11727  {@code ? extends CharSequence}. If {@code bound} is {@code Object.class},
   11728  this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]>
   11729       </doc>
   11730     </method>
   11731     <method name="supertypeOf" return="java.lang.reflect.WildcardType"
   11732       abstract="false" native="false" synchronized="false"
   11733       static="true" final="false" visibility="public"
   11734       deprecated="not deprecated">
   11735       <param name="bound" type="java.lang.reflect.Type"/>
   11736       <doc>
   11737       <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For
   11738  example, if {@code bound} is {@code String.class}, this returns {@code ?
   11739  super String}.]]>
   11740       </doc>
   11741     </method>
   11742     <method name="listOf" return="java.lang.reflect.ParameterizedType"
   11743       abstract="false" native="false" synchronized="false"
   11744       static="true" final="false" visibility="public"
   11745       deprecated="not deprecated">
   11746       <param name="elementType" type="java.lang.reflect.Type"/>
   11747       <doc>
   11748       <![CDATA[Returns a type modelling a {@link List} whose elements are of type
   11749  {@code elementType}.
   11750 
   11751  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11752       </doc>
   11753     </method>
   11754     <method name="collectionOf" return="java.lang.reflect.ParameterizedType"
   11755       abstract="false" native="false" synchronized="false"
   11756       static="true" final="false" visibility="public"
   11757       deprecated="not deprecated">
   11758       <param name="elementType" type="java.lang.reflect.Type"/>
   11759       <doc>
   11760       <![CDATA[Returns a type modelling a {@link Collection} whose elements are of type
   11761  {@code elementType}.
   11762 
   11763  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11764       </doc>
   11765     </method>
   11766     <method name="setOf" return="java.lang.reflect.ParameterizedType"
   11767       abstract="false" native="false" synchronized="false"
   11768       static="true" final="false" visibility="public"
   11769       deprecated="not deprecated">
   11770       <param name="elementType" type="java.lang.reflect.Type"/>
   11771       <doc>
   11772       <![CDATA[Returns a type modelling a {@link Set} whose elements are of type
   11773  {@code elementType}.
   11774 
   11775  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11776       </doc>
   11777     </method>
   11778     <method name="mapOf" return="java.lang.reflect.ParameterizedType"
   11779       abstract="false" native="false" synchronized="false"
   11780       static="true" final="false" visibility="public"
   11781       deprecated="not deprecated">
   11782       <param name="keyType" type="java.lang.reflect.Type"/>
   11783       <param name="valueType" type="java.lang.reflect.Type"/>
   11784       <doc>
   11785       <![CDATA[Returns a type modelling a {@link Map} whose keys are of type
   11786  {@code keyType} and whose values are of type {@code valueType}.
   11787 
   11788  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11789       </doc>
   11790     </method>
   11791     <method name="providerOf" return="java.lang.reflect.ParameterizedType"
   11792       abstract="false" native="false" synchronized="false"
   11793       static="true" final="false" visibility="public"
   11794       deprecated="not deprecated">
   11795       <param name="providedType" type="java.lang.reflect.Type"/>
   11796       <doc>
   11797       <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type
   11798  {@code elementType}.
   11799 
   11800  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11801       </doc>
   11802     </method>
   11803     <method name="javaxProviderOf" return="java.lang.reflect.Type"
   11804       abstract="false" native="false" synchronized="false"
   11805       static="true" final="false" visibility="public"
   11806       deprecated="not deprecated">
   11807       <param name="type" type="java.lang.reflect.Type"/>
   11808       <doc>
   11809       <![CDATA[Returns a type modelling a {@link javax.inject.Provider} that provides elements of type
   11810  {@code elementType}.
   11811 
   11812  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   11813       </doc>
   11814     </method>
   11815     <doc>
   11816     <![CDATA[Static methods for working with types.
   11817 
   11818  @author crazybob (a] google.com (Bob Lee)
   11819  @since 2.0]]>
   11820     </doc>
   11821   </class>
   11822   <!-- end class com.google.inject.util.Types -->
   11823 </package>
   11824 
   11825 </api>
   11826