Home | History | Annotate | Download | only in latest-api-diffs
      1 <?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
      2 <!-- Generated by the JDiff Javadoc doclet -->
      3 <!-- (http://www.jdiff.org) -->
      4 <!-- on Thu Mar 24 21:41:19 EDT 2011 -->
      5 
      6 <api
      7   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
      8   xsi:noNamespaceSchemaLocation='api.xsd'
      9   name="3.0"
     10   jdversion="1.1.1">
     11 
     12 <!--  Command line arguments =  -doclet jdiff.JDiff -docletpath C:\Documents and Settings\Sam Berlin\workspace\guice\lib\build\jdiff\jdiff.jar;C:\Documents and Settings\Sam Berlin\workspace\guice\lib\build\jdiff\xerces.jar -classpath C:\Documents and Settings\Sam Berlin\workspace\guice\lib\javax.inject.jar;C:\Documents and Settings\Sam Berlin\workspace\guice\lib\aopalliance.jar -apidir build/docs/latest-api-diffs -apiname 3.0 -->
     13 <package name="com.google.inject">
     14   <!-- start class com.google.inject.AbstractModule -->
     15   <class name="AbstractModule" extends="java.lang.Object"
     16     abstract="true"
     17     static="false" final="false" visibility="public"
     18     deprecated="not deprecated">
     19     <implements name="com.google.inject.Module"/>
     20     <constructor name="AbstractModule"
     21       static="false" final="false" visibility="public"
     22       deprecated="not deprecated">
     23     </constructor>
     24     <method name="configure"
     25       abstract="false" native="false" synchronized="true"
     26       static="false" final="true" visibility="public"
     27       deprecated="not deprecated">
     28       <param name="builder" type="com.google.inject.Binder"/>
     29     </method>
     30     <method name="configure"
     31       abstract="true" native="false" synchronized="false"
     32       static="false" final="false" visibility="protected"
     33       deprecated="not deprecated">
     34       <doc>
     35       <![CDATA[Configures a {@link Binder} via the exposed methods.]]>
     36       </doc>
     37     </method>
     38     <method name="binder" return="com.google.inject.Binder"
     39       abstract="false" native="false" synchronized="false"
     40       static="false" final="false" visibility="protected"
     41       deprecated="not deprecated">
     42       <doc>
     43       <![CDATA[Gets direct access to the underlying {@code Binder}.]]>
     44       </doc>
     45     </method>
     46     <method name="bindScope"
     47       abstract="false" native="false" synchronized="false"
     48       static="false" final="false" visibility="protected"
     49       deprecated="not deprecated">
     50       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
     51       <param name="scope" type="com.google.inject.Scope"/>
     52       <doc>
     53       <![CDATA[@see Binder#bindScope(Class, Scope)]]>
     54       </doc>
     55     </method>
     56     <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
     57       abstract="false" native="false" synchronized="false"
     58       static="false" final="false" visibility="protected"
     59       deprecated="not deprecated">
     60       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
     61       <doc>
     62       <![CDATA[@see Binder#bind(Key)]]>
     63       </doc>
     64     </method>
     65     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
     66       abstract="false" native="false" synchronized="false"
     67       static="false" final="false" visibility="protected"
     68       deprecated="not deprecated">
     69       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
     70       <doc>
     71       <![CDATA[@see Binder#bind(TypeLiteral)]]>
     72       </doc>
     73     </method>
     74     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
     75       abstract="false" native="false" synchronized="false"
     76       static="false" final="false" visibility="protected"
     77       deprecated="not deprecated">
     78       <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
     79       <doc>
     80       <![CDATA[@see Binder#bind(Class)]]>
     81       </doc>
     82     </method>
     83     <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
     84       abstract="false" native="false" synchronized="false"
     85       static="false" final="false" visibility="protected"
     86       deprecated="not deprecated">
     87       <doc>
     88       <![CDATA[@see Binder#bindConstant()]]>
     89       </doc>
     90     </method>
     91     <method name="install"
     92       abstract="false" native="false" synchronized="false"
     93       static="false" final="false" visibility="protected"
     94       deprecated="not deprecated">
     95       <param name="module" type="com.google.inject.Module"/>
     96       <doc>
     97       <![CDATA[@see Binder#install(Module)]]>
     98       </doc>
     99     </method>
    100     <method name="addError"
    101       abstract="false" native="false" synchronized="false"
    102       static="false" final="false" visibility="protected"
    103       deprecated="not deprecated">
    104       <param name="message" type="java.lang.String"/>
    105       <param name="arguments" type="java.lang.Object[]"/>
    106       <doc>
    107       <![CDATA[@see Binder#addError(String, Object[])]]>
    108       </doc>
    109     </method>
    110     <method name="addError"
    111       abstract="false" native="false" synchronized="false"
    112       static="false" final="false" visibility="protected"
    113       deprecated="not deprecated">
    114       <param name="t" type="java.lang.Throwable"/>
    115       <doc>
    116       <![CDATA[@see Binder#addError(Throwable)]]>
    117       </doc>
    118     </method>
    119     <method name="addError"
    120       abstract="false" native="false" synchronized="false"
    121       static="false" final="false" visibility="protected"
    122       deprecated="not deprecated">
    123       <param name="message" type="com.google.inject.spi.Message"/>
    124       <doc>
    125       <![CDATA[@see Binder#addError(Message)
    126  @since 2.0]]>
    127       </doc>
    128     </method>
    129     <method name="requestInjection"
    130       abstract="false" native="false" synchronized="false"
    131       static="false" final="false" visibility="protected"
    132       deprecated="not deprecated">
    133       <param name="instance" type="java.lang.Object"/>
    134       <doc>
    135       <![CDATA[@see Binder#requestInjection(Object)
    136  @since 2.0]]>
    137       </doc>
    138     </method>
    139     <method name="requestStaticInjection"
    140       abstract="false" native="false" synchronized="false"
    141       static="false" final="false" visibility="protected"
    142       deprecated="not deprecated">
    143       <param name="types" type="java.lang.Class[]"/>
    144       <doc>
    145       <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
    146       </doc>
    147     </method>
    148     <method name="bindInterceptor"
    149       abstract="false" native="false" synchronized="false"
    150       static="false" final="false" visibility="protected"
    151       deprecated="not deprecated">
    152       <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
    153       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
    154       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
    155       <doc>
    156       <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher,
    157   com.google.inject.matcher.Matcher,
    158   org.aopalliance.intercept.MethodInterceptor[])]]>
    159       </doc>
    160     </method>
    161     <method name="requireBinding"
    162       abstract="false" native="false" synchronized="false"
    163       static="false" final="false" visibility="protected"
    164       deprecated="not deprecated">
    165       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
    166       <doc>
    167       <![CDATA[Adds a dependency from this module to {@code key}. When the injector is
    168  created, Guice will report an error if {@code key} cannot be injected.
    169  Note that this requirement may be satisfied by implicit binding, such as
    170  a public no-arguments constructor.
    171 
    172  @since 2.0]]>
    173       </doc>
    174     </method>
    175     <method name="requireBinding"
    176       abstract="false" native="false" synchronized="false"
    177       static="false" final="false" visibility="protected"
    178       deprecated="not deprecated">
    179       <param name="type" type="java.lang.Class&lt;?&gt;"/>
    180       <doc>
    181       <![CDATA[Adds a dependency from this module to {@code type}. When the injector is
    182  created, Guice will report an error if {@code type} cannot be injected.
    183  Note that this requirement may be satisfied by implicit binding, such as
    184  a public no-arguments constructor.
    185 
    186  @since 2.0]]>
    187       </doc>
    188     </method>
    189     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    190       abstract="false" native="false" synchronized="false"
    191       static="false" final="false" visibility="protected"
    192       deprecated="not deprecated">
    193       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
    194       <doc>
    195       <![CDATA[@see Binder#getProvider(Key)
    196  @since 2.0]]>
    197       </doc>
    198     </method>
    199     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    200       abstract="false" native="false" synchronized="false"
    201       static="false" final="false" visibility="protected"
    202       deprecated="not deprecated">
    203       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    204       <doc>
    205       <![CDATA[@see Binder#getProvider(Class)
    206  @since 2.0]]>
    207       </doc>
    208     </method>
    209     <method name="convertToTypes"
    210       abstract="false" native="false" synchronized="false"
    211       static="false" final="false" visibility="protected"
    212       deprecated="not deprecated">
    213       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    214       <param name="converter" type="com.google.inject.spi.TypeConverter"/>
    215       <doc>
    216       <![CDATA[@see Binder#convertToTypes
    217  @since 2.0]]>
    218       </doc>
    219     </method>
    220     <method name="currentStage" return="com.google.inject.Stage"
    221       abstract="false" native="false" synchronized="false"
    222       static="false" final="false" visibility="protected"
    223       deprecated="not deprecated">
    224       <doc>
    225       <![CDATA[@see Binder#currentStage() 
    226  @since 2.0]]>
    227       </doc>
    228     </method>
    229     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    230       abstract="false" native="false" synchronized="false"
    231       static="false" final="false" visibility="protected"
    232       deprecated="not deprecated">
    233       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    234       <doc>
    235       <![CDATA[@see Binder#getMembersInjector(Class)
    236  @since 2.0]]>
    237       </doc>
    238     </method>
    239     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    240       abstract="false" native="false" synchronized="false"
    241       static="false" final="false" visibility="protected"
    242       deprecated="not deprecated">
    243       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
    244       <doc>
    245       <![CDATA[@see Binder#getMembersInjector(TypeLiteral)
    246  @since 2.0]]>
    247       </doc>
    248     </method>
    249     <method name="bindListener"
    250       abstract="false" native="false" synchronized="false"
    251       static="false" final="false" visibility="protected"
    252       deprecated="not deprecated">
    253       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    254       <param name="listener" type="com.google.inject.spi.TypeListener"/>
    255       <doc>
    256       <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher,
    257   com.google.inject.spi.TypeListener)
    258  @since 2.0]]>
    259       </doc>
    260     </method>
    261     <doc>
    262     <![CDATA[A support class for {@link Module}s which reduces repetition and results in
    263  a more readable configuration. Simply extend this class, implement {@link
    264  #configure()}, and call the inherited methods which mirror those found in
    265  {@link Binder}. For example:
    266 
    267  <pre>
    268  public class MyModule extends AbstractModule {
    269    protected void configure() {
    270      bind(Service.class).to(ServiceImpl.class).in(Singleton.class);
    271      bind(CreditCardPaymentService.class);
    272      bind(PaymentService.class).to(CreditCardPaymentService.class);
    273      bindConstant().annotatedWith(Names.named("port")).to(8080);
    274    }
    275  }
    276  </pre>
    277 
    278  @author crazybob (a] google.com (Bob Lee)]]>
    279     </doc>
    280   </class>
    281   <!-- end class com.google.inject.AbstractModule -->
    282   <!-- start interface com.google.inject.Binder -->
    283   <interface name="Binder"    abstract="true"
    284     static="false" final="false" visibility="public"
    285     deprecated="not deprecated">
    286     <method name="bindInterceptor"
    287       abstract="false" native="false" synchronized="false"
    288       static="false" final="false" visibility="public"
    289       deprecated="not deprecated">
    290       <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
    291       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
    292       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
    293       <doc>
    294       <![CDATA[Binds method interceptor[s] to methods matched by class and method matchers. A method is
    295  eligible for interception if:
    296 
    297  <ul>
    298   <li>Guice created the instance the method is on</li>
    299   <li>Neither the enclosing type nor the method is final</li>
    300   <li>And the method is package-private, protected, or public</li>
    301  </ul>
    302 
    303  @param classMatcher matches classes the interceptor should apply to. For
    304      example: {@code only(Runnable.class)}.
    305  @param methodMatcher matches methods the interceptor should apply to. For
    306      example: {@code annotatedWith(Transactional.class)}.
    307  @param interceptors to bind]]>
    308       </doc>
    309     </method>
    310     <method name="bindScope"
    311       abstract="false" native="false" synchronized="false"
    312       static="false" final="false" visibility="public"
    313       deprecated="not deprecated">
    314       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
    315       <param name="scope" type="com.google.inject.Scope"/>
    316       <doc>
    317       <![CDATA[Binds a scope to an annotation.]]>
    318       </doc>
    319     </method>
    320     <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
    321       abstract="false" native="false" synchronized="false"
    322       static="false" final="false" visibility="public"
    323       deprecated="not deprecated">
    324       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
    325       <doc>
    326       <![CDATA[See the EDSL examples at {@link Binder}.]]>
    327       </doc>
    328     </method>
    329     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
    330       abstract="false" native="false" synchronized="false"
    331       static="false" final="false" visibility="public"
    332       deprecated="not deprecated">
    333       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
    334       <doc>
    335       <![CDATA[See the EDSL examples at {@link Binder}.]]>
    336       </doc>
    337     </method>
    338     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
    339       abstract="false" native="false" synchronized="false"
    340       static="false" final="false" visibility="public"
    341       deprecated="not deprecated">
    342       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    343       <doc>
    344       <![CDATA[See the EDSL examples at {@link Binder}.]]>
    345       </doc>
    346     </method>
    347     <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
    348       abstract="false" native="false" synchronized="false"
    349       static="false" final="false" visibility="public"
    350       deprecated="not deprecated">
    351       <doc>
    352       <![CDATA[See the EDSL examples at {@link Binder}.]]>
    353       </doc>
    354     </method>
    355     <method name="requestInjection"
    356       abstract="false" native="false" synchronized="false"
    357       static="false" final="false" visibility="public"
    358       deprecated="not deprecated">
    359       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
    360       <param name="instance" type="T"/>
    361       <doc>
    362       <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
    363  and methods of the given object.
    364 
    365  @param type of instance
    366  @param instance for which members will be injected
    367  @since 2.0]]>
    368       </doc>
    369     </method>
    370     <method name="requestInjection"
    371       abstract="false" native="false" synchronized="false"
    372       static="false" final="false" visibility="public"
    373       deprecated="not deprecated">
    374       <param name="instance" type="java.lang.Object"/>
    375       <doc>
    376       <![CDATA[Upon successful creation, the {@link Injector} will inject instance fields
    377  and methods of the given object.
    378 
    379  @param instance for which members will be injected
    380  @since 2.0]]>
    381       </doc>
    382     </method>
    383     <method name="requestStaticInjection"
    384       abstract="false" native="false" synchronized="false"
    385       static="false" final="false" visibility="public"
    386       deprecated="not deprecated">
    387       <param name="types" type="java.lang.Class[]"/>
    388       <doc>
    389       <![CDATA[Upon successful creation, the {@link Injector} will inject static fields
    390  and methods in the given classes.
    391 
    392  @param types for which static members will be injected]]>
    393       </doc>
    394     </method>
    395     <method name="install"
    396       abstract="false" native="false" synchronized="false"
    397       static="false" final="false" visibility="public"
    398       deprecated="not deprecated">
    399       <param name="module" type="com.google.inject.Module"/>
    400       <doc>
    401       <![CDATA[Uses the given module to configure more bindings.]]>
    402       </doc>
    403     </method>
    404     <method name="currentStage" return="com.google.inject.Stage"
    405       abstract="false" native="false" synchronized="false"
    406       static="false" final="false" visibility="public"
    407       deprecated="not deprecated">
    408       <doc>
    409       <![CDATA[Gets the current stage.]]>
    410       </doc>
    411     </method>
    412     <method name="addError"
    413       abstract="false" native="false" synchronized="false"
    414       static="false" final="false" visibility="public"
    415       deprecated="not deprecated">
    416       <param name="message" type="java.lang.String"/>
    417       <param name="arguments" type="java.lang.Object[]"/>
    418       <doc>
    419       <![CDATA[Records an error message which will be presented to the user at a later
    420  time. Unlike throwing an exception, this enable us to continue
    421  configuring the Injector and discover more errors. Uses {@link
    422  String#format(String, Object[])} to insert the arguments into the
    423  message.]]>
    424       </doc>
    425     </method>
    426     <method name="addError"
    427       abstract="false" native="false" synchronized="false"
    428       static="false" final="false" visibility="public"
    429       deprecated="not deprecated">
    430       <param name="t" type="java.lang.Throwable"/>
    431       <doc>
    432       <![CDATA[Records an exception, the full details of which will be logged, and the
    433  message of which will be presented to the user at a later
    434  time. If your Module calls something that you worry may fail, you should
    435  catch the exception and pass it into this.]]>
    436       </doc>
    437     </method>
    438     <method name="addError"
    439       abstract="false" native="false" synchronized="false"
    440       static="false" final="false" visibility="public"
    441       deprecated="not deprecated">
    442       <param name="message" type="com.google.inject.spi.Message"/>
    443       <doc>
    444       <![CDATA[Records an error message to be presented to the user at a later time.
    445 
    446  @since 2.0]]>
    447       </doc>
    448     </method>
    449     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    450       abstract="false" native="false" synchronized="false"
    451       static="false" final="false" visibility="public"
    452       deprecated="not deprecated">
    453       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
    454       <doc>
    455       <![CDATA[Returns the provider used to obtain instances for the given injection key.
    456  The returned provider will not be valid until the {@link Injector} has been
    457  created. The provider will throw an {@code IllegalStateException} if you
    458  try to use it beforehand.
    459 
    460  @since 2.0]]>
    461       </doc>
    462     </method>
    463     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    464       abstract="false" native="false" synchronized="false"
    465       static="false" final="false" visibility="public"
    466       deprecated="not deprecated">
    467       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    468       <doc>
    469       <![CDATA[Returns the provider used to obtain instances for the given injection type.
    470  The returned provider will not be valid until the {@link Injector} has been
    471  created. The provider will throw an {@code IllegalStateException} if you
    472  try to use it beforehand.
    473 
    474  @since 2.0]]>
    475       </doc>
    476     </method>
    477     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    478       abstract="false" native="false" synchronized="false"
    479       static="false" final="false" visibility="public"
    480       deprecated="not deprecated">
    481       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
    482       <doc>
    483       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
    484  of the given type {@code T}. The returned members injector will not be valid until the main
    485  {@link Injector} has been created. The members injector will throw an {@code
    486  IllegalStateException} if you try to use it beforehand.
    487 
    488  @param typeLiteral type to get members injector for
    489  @since 2.0]]>
    490       </doc>
    491     </method>
    492     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
    493       abstract="false" native="false" synchronized="false"
    494       static="false" final="false" visibility="public"
    495       deprecated="not deprecated">
    496       <param name="type" type="java.lang.Class&lt;T&gt;"/>
    497       <doc>
    498       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
    499  of the given type {@code T}. The returned members injector will not be valid until the main
    500  {@link Injector} has been created. The members injector will throw an {@code
    501  IllegalStateException} if you try to use it beforehand.
    502 
    503  @param type type to get members injector for
    504  @since 2.0]]>
    505       </doc>
    506     </method>
    507     <method name="convertToTypes"
    508       abstract="false" native="false" synchronized="false"
    509       static="false" final="false" visibility="public"
    510       deprecated="not deprecated">
    511       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    512       <param name="converter" type="com.google.inject.spi.TypeConverter"/>
    513       <doc>
    514       <![CDATA[Binds a type converter. The injector will use the given converter to
    515  convert string constants to matching types as needed.
    516 
    517  @param typeMatcher matches types the converter can handle
    518  @param converter converts values
    519  @since 2.0]]>
    520       </doc>
    521     </method>
    522     <method name="bindListener"
    523       abstract="false" native="false" synchronized="false"
    524       static="false" final="false" visibility="public"
    525       deprecated="not deprecated">
    526       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
    527       <param name="listener" type="com.google.inject.spi.TypeListener"/>
    528       <doc>
    529       <![CDATA[Registers a listener for injectable types. Guice will notify the listener when it encounters
    530  injectable types matched by the given type matcher.
    531 
    532  @param typeMatcher that matches injectable types the listener should be notified of
    533  @param listener for injectable types matched by typeMatcher
    534  @since 2.0]]>
    535       </doc>
    536     </method>
    537     <method name="withSource" return="com.google.inject.Binder"
    538       abstract="false" native="false" synchronized="false"
    539       static="false" final="false" visibility="public"
    540       deprecated="not deprecated">
    541       <param name="source" type="java.lang.Object"/>
    542       <doc>
    543       <![CDATA[Returns a binder that uses {@code source} as the reference location for
    544  configuration errors. This is typically a {@link StackTraceElement}
    545  for {@code .java} source but it could any binding source, such as the
    546  path to a {@code .properties} file.
    547 
    548  @param source any object representing the source location and has a
    549      concise {@link Object#toString() toString()} value
    550  @return a binder that shares its configuration with this binder
    551  @since 2.0]]>
    552       </doc>
    553     </method>
    554     <method name="skipSources" return="com.google.inject.Binder"
    555       abstract="false" native="false" synchronized="false"
    556       static="false" final="false" visibility="public"
    557       deprecated="not deprecated">
    558       <param name="classesToSkip" type="java.lang.Class[]"/>
    559       <doc>
    560       <![CDATA[Returns a binder that skips {@code classesToSkip} when identify the
    561  calling code. The caller's {@link StackTraceElement} is used to locate
    562  the source of configuration errors.
    563 
    564  @param classesToSkip library classes that create bindings on behalf of
    565       their clients.
    566  @return a binder that shares its configuration with this binder.
    567  @since 2.0]]>
    568       </doc>
    569     </method>
    570     <method name="newPrivateBinder" return="com.google.inject.PrivateBinder"
    571       abstract="false" native="false" synchronized="false"
    572       static="false" final="false" visibility="public"
    573       deprecated="not deprecated">
    574       <doc>
    575       <![CDATA[Creates a new private child environment for bindings and other configuration. The returned
    576  binder can be used to add and configuration information in this environment. See {@link
    577  PrivateModule} for details.
    578 
    579  @return a binder that inherits configuration from this binder. Only exposed configuration on
    580       the returned binder will be visible to this binder.
    581  @since 2.0]]>
    582       </doc>
    583     </method>
    584     <method name="requireExplicitBindings"
    585       abstract="false" native="false" synchronized="false"
    586       static="false" final="false" visibility="public"
    587       deprecated="not deprecated">
    588       <doc>
    589       <![CDATA[Instructs the Injector that bindings must be listed in a Module in order to
    590  be injected. Classes that are not explicitly bound in a module cannot be
    591  injected. Bindings created through a linked binding (
    592  <code>bind(Foo.class).to(FooImpl.class)</code>) are allowed, but the
    593  implicit binding (<code>FooImpl</code>) cannot be directly injected unless
    594  it is also explicitly bound (<code>bind(FooImpl.class)</code>).
    595  <p>
    596  Tools can still retrieve bindings for implicit bindings (bindings created
    597  through a linked binding) if explicit bindings are required, however
    598  {@link Binding#getProvider} will fail.
    599  <p>
    600  By default, explicit bindings are not required.
    601  <p>
    602  If a parent injector requires explicit bindings, then all child injectors
    603  (and private modules within that injector) also require explicit bindings.
    604  If a parent does not require explicit bindings, a child injector or private
    605  module may optionally declare itself as requiring explicit bindings. If it
    606  does, the behavior is limited only to that child or any grandchildren. No
    607  siblings of the child will require explicit bindings.
    608  <p>
    609  If the parent did not require explicit bindings but the child does, it is
    610  possible that a linked binding in the child may add a JIT binding to the
    611  parent. The child will not be allowed to reference the target binding
    612  directly, but the parent and other children of the parent may be able to.
    613  
    614  @since 3.0]]>
    615       </doc>
    616     </method>
    617     <method name="disableCircularProxies"
    618       abstract="false" native="false" synchronized="false"
    619       static="false" final="false" visibility="public"
    620       deprecated="not deprecated">
    621       <doc>
    622       <![CDATA[Prevents Guice from constructing a {@link Proxy} when a circular dependency
    623  is found.  By default, circular proxies are not disabled.
    624  <p>
    625  If a parent injector disables circular proxies, then all child injectors
    626  (and private modules within that injector) also disable circular proxies.
    627  If a parent does not disable circular proxies, a child injector or private
    628  module may optionally declare itself as disabling circular proxies. If it
    629  does, the behavior is limited only to that child or any grandchildren. No
    630  siblings of the child will disable circular proxies.
    631  
    632  @since 3.0]]>
    633       </doc>
    634     </method>
    635     <doc>
    636     <![CDATA[Collects configuration information (primarily <i>bindings</i>) which will be
    637  used to create an {@link Injector}. Guice provides this object to your
    638  application's {@link Module} implementors so they may each contribute
    639  their own bindings and other registrations.
    640 
    641  <h3>The Guice Binding EDSL</h3>
    642 
    643  Guice uses an <i>embedded domain-specific language</i>, or EDSL, to help you
    644  create bindings simply and readably.  This approach is great for overall
    645  usability, but it does come with a small cost: <b>it is difficult to
    646  learn how to use the Binding EDSL by reading
    647  method-level javadocs</b>.  Instead, you should consult the series of
    648  examples below.  To save space, these examples omit the opening
    649  {@code binder}, just as you will if your module extends
    650  {@link AbstractModule}.
    651 
    652  <pre>
    653      bind(ServiceImpl.class);</pre>
    654 
    655  This statement does essentially nothing; it "binds the {@code ServiceImpl}
    656  class to itself" and does not change Guice's default behavior.  You may still
    657  want to use this if you prefer your {@link Module} class to serve as an
    658  explicit <i>manifest</i> for the services it provides.  Also, in rare cases,
    659  Guice may be unable to validate a binding at injector creation time unless it
    660  is given explicitly.
    661 
    662  <pre>
    663      bind(Service.class).to(ServiceImpl.class);</pre>
    664 
    665  Specifies that a request for a {@code Service} instance with no binding
    666  annotations should be treated as if it were a request for a
    667  {@code ServiceImpl} instance. This <i>overrides</i> the function of any
    668  {@link ImplementedBy @ImplementedBy} or {@link ProvidedBy @ProvidedBy}
    669  annotations found on {@code Service}, since Guice will have already
    670  "moved on" to {@code ServiceImpl} before it reaches the point when it starts
    671  looking for these annotations.
    672 
    673  <pre>
    674      bind(Service.class).toProvider(ServiceProvider.class);</pre>
    675 
    676  In this example, {@code ServiceProvider} must extend or implement
    677  {@code Provider<Service>}. This binding specifies that Guice should resolve
    678  an unannotated injection request for {@code Service} by first resolving an
    679  instance of {@code ServiceProvider} in the regular way, then calling
    680  {@link Provider#get get()} on the resulting Provider instance to obtain the
    681  {@code Service} instance.
    682 
    683  <p>The {@link Provider} you use here does not have to be a "factory"; that
    684  is, a provider which always <i>creates</i> each instance it provides.
    685  However, this is generally a good practice to follow.  You can then use
    686  Guice's concept of {@link Scope scopes} to guide when creation should happen
    687  -- "letting Guice work for you".
    688 
    689  <pre>
    690      bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);</pre>
    691 
    692  Like the previous example, but only applies to injection requests that use
    693  the binding annotation {@code @Red}.  If your module also includes bindings
    694  for particular <i>values</i> of the {@code @Red} annotation (see below),
    695  then this binding will serve as a "catch-all" for any values of {@code @Red}
    696  that have no exact match in the bindings.
    697  
    698  <pre>
    699      bind(ServiceImpl.class).in(Singleton.class);
    700      // or, alternatively
    701      bind(ServiceImpl.class).in(Scopes.SINGLETON);</pre>
    702 
    703  Either of these statements places the {@code ServiceImpl} class into
    704  singleton scope.  Guice will create only one instance of {@code ServiceImpl}
    705  and will reuse it for all injection requests of this type.  Note that it is
    706  still possible to bind another instance of {@code ServiceImpl} if the second
    707  binding is qualified by an annotation as in the previous example.  Guice is
    708  not overly concerned with <i>preventing</i> you from creating multiple
    709  instances of your "singletons", only with <i>enabling</i> your application to
    710  share only one instance if that's all you tell Guice you need.
    711 
    712  <p><b>Note:</b> a scope specified in this way <i>overrides</i> any scope that
    713  was specified with an annotation on the {@code ServiceImpl} class.
    714  
    715  <p>Besides {@link Singleton}/{@link Scopes#SINGLETON}, there are
    716  servlet-specific scopes available in
    717  {@code com.google.inject.servlet.ServletScopes}, and your Modules can
    718  contribute their own custom scopes for use here as well.
    719 
    720  <pre>
    721      bind(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {})
    722          .to(CreditCardPaymentService.class);</pre>
    723 
    724  This admittedly odd construct is the way to bind a parameterized type. It
    725  tells Guice how to honor an injection request for an element of type
    726  {@code PaymentService<CreditCard>}. The class
    727  {@code CreditCardPaymentService} must implement the
    728  {@code PaymentService<CreditCard>} interface.  Guice cannot currently bind or
    729  inject a generic type, such as {@code Set<E>}; all type parameters must be
    730  fully specified.
    731 
    732  <pre>
    733      bind(Service.class).toInstance(new ServiceImpl());
    734      // or, alternatively
    735      bind(Service.class).toInstance(SomeLegacyRegistry.getService());</pre>
    736 
    737  In this example, your module itself, <i>not Guice</i>, takes responsibility
    738  for obtaining a {@code ServiceImpl} instance, then asks Guice to always use
    739  this single instance to fulfill all {@code Service} injection requests.  When
    740  the {@link Injector} is created, it will automatically perform field
    741  and method injection for this instance, but any injectable constructor on
    742  {@code ServiceImpl} is simply ignored.  Note that using this approach results
    743  in "eager loading" behavior that you can't control.
    744 
    745  <pre>
    746      bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre>
    747 
    748  Sets up a constant binding. Constant injections must always be annotated.
    749  When a constant binding's value is a string, it is eligile for conversion to
    750  all primitive types, to {@link Enum#valueOf(Class, String) all enums}, and to
    751  {@link Class#forName class literals}. Conversions for other types can be
    752  configured using {@link #convertToTypes(Matcher, TypeConverter)
    753  convertToTypes()}.
    754 
    755  <pre>
    756    {@literal @}Color("red") Color red; // A member variable (field)
    757     . . .
    758      red = MyModule.class.getDeclaredField("red").getAnnotation(Color.class);
    759      bind(Service.class).annotatedWith(red).to(RedService.class);</pre>
    760 
    761  If your binding annotation has parameters you can apply different bindings to
    762  different specific values of your annotation.  Getting your hands on the
    763  right instance of the annotation is a bit of a pain -- one approach, shown
    764  above, is to apply a prototype annotation to a field in your module class, so
    765  that you can read this annotation instance and give it to Guice.
    766 
    767  <pre>
    768      bind(Service.class)
    769          .annotatedWith(Names.named("blue"))
    770          .to(BlueService.class);</pre>
    771 
    772  Differentiating by names is a common enough use case that we provided a
    773  standard annotation, {@link com.google.inject.name.Named @Named}.  Because of
    774  Guice's library support, binding by name is quite easier than in the
    775  arbitrary binding annotation case we just saw.  However, remember that these
    776  names will live in a single flat namespace with all the other names used in
    777  your application.
    778 
    779  <pre>
    780      Constructor<T> loneCtor = getLoneCtorFromServiceImplViaReflection();
    781      bind(ServiceImpl.class)
    782          .toConstructor(loneCtor);</pre>
    783 
    784  In this example, we directly tell Guice which constructor to use in a concrete
    785  class implementation. It means that we do not need to place {@literal @}Inject
    786  on any of the constructors and that Guice treats the provided constructor as though
    787  it were annotated so. It is useful for cases where you cannot modify existing
    788  classes and is a bit simpler than using a {@link Provider}.
    789 
    790  <p>The above list of examples is far from exhaustive.  If you can think of
    791  how the concepts of one example might coexist with the concepts from another,
    792  you can most likely weave the two together.  If the two concepts make no
    793  sense with each other, you most likely won't be able to do it.  In a few
    794  cases Guice will let something bogus slip by, and will then inform you of
    795  the problems at runtime, as soon as you try to create your Injector.
    796 
    797  <p>The other methods of Binder such as {@link #bindScope},
    798  {@link #bindInterceptor}, {@link #install}, {@link #requestStaticInjection},
    799  {@link #addError} and {@link #currentStage} are not part of the Binding EDSL;
    800  you can learn how to use these in the usual way, from the method
    801  documentation.
    802 
    803  @author crazybob (a] google.com (Bob Lee)
    804  @author jessewilson (a] google.com (Jesse Wilson)
    805  @author kevinb (a] google.com (Kevin Bourrillion)]]>
    806     </doc>
    807   </interface>
    808   <!-- end interface com.google.inject.Binder -->
    809   <!-- start interface com.google.inject.Binding -->
    810   <interface name="Binding"    abstract="true"
    811     static="false" final="false" visibility="public"
    812     deprecated="not deprecated">
    813     <implements name="com.google.inject.spi.Element"/>
    814     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
    815       abstract="false" native="false" synchronized="false"
    816       static="false" final="false" visibility="public"
    817       deprecated="not deprecated">
    818       <doc>
    819       <![CDATA[Returns the key for this binding.]]>
    820       </doc>
    821     </method>
    822     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
    823       abstract="false" native="false" synchronized="false"
    824       static="false" final="false" visibility="public"
    825       deprecated="not deprecated">
    826       <doc>
    827       <![CDATA[Returns the scoped provider guice uses to fulfill requests for this
    828  binding.
    829 
    830  @throws UnsupportedOperationException when invoked on a {@link Binding}
    831       created via {@link com.google.inject.spi.Elements#getElements}. This
    832       method is only supported on {@link Binding}s returned from an injector.]]>
    833       </doc>
    834     </method>
    835     <method name="acceptTargetVisitor" return="V"
    836       abstract="false" native="false" synchronized="false"
    837       static="false" final="false" visibility="public"
    838       deprecated="not deprecated">
    839       <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;? super T, V&gt;"/>
    840       <doc>
    841       <![CDATA[Accepts a target visitor. Invokes the visitor method specific to this binding's target.
    842 
    843  @param visitor to call back on
    844  @since 2.0]]>
    845       </doc>
    846     </method>
    847     <method name="acceptScopingVisitor" return="V"
    848       abstract="false" native="false" synchronized="false"
    849       static="false" final="false" visibility="public"
    850       deprecated="not deprecated">
    851       <param name="visitor" type="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
    852       <doc>
    853       <![CDATA[Accepts a scoping visitor. Invokes the visitor method specific to this binding's scoping.
    854 
    855  @param visitor to call back on
    856  @since 2.0]]>
    857       </doc>
    858     </method>
    859     <doc>
    860     <![CDATA[A mapping from a key (type and optional annotation) to the strategy for getting instances of the
    861  type. This interface is part of the introspection API and is intended primarily for use by 
    862  tools.
    863 
    864  <p>Bindings are created in several ways:
    865  <ul>
    866      <li>Explicitly in a module, via {@code bind()} and {@code bindConstant()}
    867          statements:
    868  <pre>
    869      bind(Service.class).annotatedWith(Red.class).to(ServiceImpl.class);
    870      bindConstant().annotatedWith(ServerHost.class).to(args[0]);</pre></li>
    871      <li>Implicitly by the Injector by following a type's {@link ImplementedBy
    872          pointer} {@link ProvidedBy annotations} or by using its {@link Inject annotated} or
    873          default constructor.</li>
    874      <li>By converting a bound instance to a different type.</li>
    875      <li>For {@link Provider providers}, by delegating to the binding for the provided type.</li>
    876  </ul>
    877 
    878 
    879  <p>They exist on both modules and on injectors, and their behaviour is different for each:
    880  <ul>
    881      <li><strong>Module bindings</strong> are incomplete and cannot be used to provide instances.
    882          This is because the applicable scopes and interceptors may not be known until an injector
    883          is created. From a tool's perspective, module bindings are like the injector's source
    884          code. They can be inspected or rewritten, but this analysis must be done statically.</li>
    885      <li><strong>Injector bindings</strong> are complete and valid and can be used to provide
    886          instances. From a tools' perspective, injector bindings are like reflection for an
    887          injector. They have full runtime information, including the complete graph of injections
    888          necessary to satisfy a binding.</li>
    889  </ul>
    890 
    891  @param <T> the bound type. The injected is always assignable to this type.
    892 
    893  @author crazybob (a] google.com (Bob Lee)
    894  @author jessewilson (a] google.com (Jesse Wilson)]]>
    895     </doc>
    896   </interface>
    897   <!-- end interface com.google.inject.Binding -->
    898   <!-- start class com.google.inject.BindingAnnotation -->
    899   <class name="BindingAnnotation"    abstract="true"
    900     static="false" final="false" visibility="public"
    901     deprecated="not deprecated">
    902     <implements name="java.lang.annotation.Annotation"/>
    903     <doc>
    904     <![CDATA[Annotates annotations which are used for binding. Only one such annotation
    905  may apply to a single injection point. You must also annotate binder
    906  annotations with {@code @Retention(RUNTIME)}. For example:
    907 
    908  <pre>
    909    {@code @}Retention(RUNTIME)
    910    {@code @}Target({ FIELD, PARAMETER, METHOD })
    911    {@code @}BindingAnnotation
    912    public {@code @}interface Transactional {}
    913  </pre>
    914 
    915  @author crazybob (a] google.com (Bob Lee)]]>
    916     </doc>
    917   </class>
    918   <!-- end class com.google.inject.BindingAnnotation -->
    919   <!-- start class com.google.inject.ConfigurationException -->
    920   <class name="ConfigurationException" extends="java.lang.RuntimeException"
    921     abstract="false"
    922     static="false" final="true" visibility="public"
    923     deprecated="not deprecated">
    924     <constructor name="ConfigurationException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
    925       static="false" final="false" visibility="public"
    926       deprecated="not deprecated">
    927       <doc>
    928       <![CDATA[Creates a ConfigurationException containing {@code messages}.]]>
    929       </doc>
    930     </constructor>
    931     <method name="withPartialValue" return="com.google.inject.ConfigurationException"
    932       abstract="false" native="false" synchronized="false"
    933       static="false" final="false" visibility="public"
    934       deprecated="not deprecated">
    935       <param name="partialValue" type="java.lang.Object"/>
    936       <doc>
    937       <![CDATA[Returns a copy of this configuration exception with the specified partial value.]]>
    938       </doc>
    939     </method>
    940     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
    941       abstract="false" native="false" synchronized="false"
    942       static="false" final="false" visibility="public"
    943       deprecated="not deprecated">
    944       <doc>
    945       <![CDATA[Returns messages for the errors that caused this exception.]]>
    946       </doc>
    947     </method>
    948     <method name="getPartialValue" return="E"
    949       abstract="false" native="false" synchronized="false"
    950       static="false" final="false" visibility="public"
    951       deprecated="not deprecated">
    952       <doc>
    953       <![CDATA[Returns a value that was only partially computed due to this exception. The caller can use
    954  this while collecting additional configuration problems.
    955 
    956  @return the partial value, or {@code null} if none was set. The type of the partial value is
    957       specified by the throwing method.]]>
    958       </doc>
    959     </method>
    960     <method name="getMessage" return="java.lang.String"
    961       abstract="false" native="false" synchronized="false"
    962       static="false" final="false" visibility="public"
    963       deprecated="not deprecated">
    964     </method>
    965     <doc>
    966     <![CDATA[Thrown when a programming error such as a misplaced annotation, illegal binding, or unsupported
    967  scope is found. Clients should catch this exception, log it, and stop execution.
    968 
    969  @author jessewilson (a] google.com (Jesse Wilson)
    970  @since 2.0]]>
    971     </doc>
    972   </class>
    973   <!-- end class com.google.inject.ConfigurationException -->
    974   <!-- start class com.google.inject.CreationException -->
    975   <class name="CreationException" extends="java.lang.RuntimeException"
    976     abstract="false"
    977     static="false" final="false" visibility="public"
    978     deprecated="not deprecated">
    979     <constructor name="CreationException" type="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
    980       static="false" final="false" visibility="public"
    981       deprecated="not deprecated">
    982       <doc>
    983       <![CDATA[Creates a CreationException containing {@code messages}.]]>
    984       </doc>
    985     </constructor>
    986     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
    987       abstract="false" native="false" synchronized="false"
    988       static="false" final="false" visibility="public"
    989       deprecated="not deprecated">
    990       <doc>
    991       <![CDATA[Returns messages for the errors that caused this exception.]]>
    992       </doc>
    993     </method>
    994     <method name="getMessage" return="java.lang.String"
    995       abstract="false" native="false" synchronized="false"
    996       static="false" final="false" visibility="public"
    997       deprecated="not deprecated">
    998     </method>
    999     <doc>
   1000     <![CDATA[Thrown when errors occur while creating a {@link Injector}. Includes a list of encountered
   1001  errors. Clients should catch this exception, log it, and stop execution.
   1002 
   1003  @author crazybob (a] google.com (Bob Lee)]]>
   1004     </doc>
   1005   </class>
   1006   <!-- end class com.google.inject.CreationException -->
   1007   <!-- start class com.google.inject.Exposed -->
   1008   <class name="Exposed"    abstract="true"
   1009     static="false" final="false" visibility="public"
   1010     deprecated="not deprecated">
   1011     <implements name="java.lang.annotation.Annotation"/>
   1012     <doc>
   1013     <![CDATA[Acccompanies a {@literal @}{@link com.google.inject.Provides Provides} method annotation in a
   1014  private module to indicate that the provided binding is exposed.
   1015 
   1016  @author jessewilson (a] google.com (Jesse Wilson)
   1017  @since 2.0]]>
   1018     </doc>
   1019   </class>
   1020   <!-- end class com.google.inject.Exposed -->
   1021   <!-- start class com.google.inject.Guice -->
   1022   <class name="Guice" extends="java.lang.Object"
   1023     abstract="false"
   1024     static="false" final="true" visibility="public"
   1025     deprecated="not deprecated">
   1026     <method name="createInjector" return="com.google.inject.Injector"
   1027       abstract="false" native="false" synchronized="false"
   1028       static="true" final="false" visibility="public"
   1029       deprecated="not deprecated">
   1030       <param name="modules" type="com.google.inject.Module[]"/>
   1031       <doc>
   1032       <![CDATA[Creates an injector for the given set of modules.
   1033 
   1034  @throws CreationException if one or more errors occur during injector
   1035      construction]]>
   1036       </doc>
   1037     </method>
   1038     <method name="createInjector" return="com.google.inject.Injector"
   1039       abstract="false" native="false" synchronized="false"
   1040       static="true" final="false" visibility="public"
   1041       deprecated="not deprecated">
   1042       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1043       <doc>
   1044       <![CDATA[Creates an injector for the given set of modules.
   1045 
   1046  @throws CreationException if one or more errors occur during injector
   1047      creation]]>
   1048       </doc>
   1049     </method>
   1050     <method name="createInjector" return="com.google.inject.Injector"
   1051       abstract="false" native="false" synchronized="false"
   1052       static="true" final="false" visibility="public"
   1053       deprecated="not deprecated">
   1054       <param name="stage" type="com.google.inject.Stage"/>
   1055       <param name="modules" type="com.google.inject.Module[]"/>
   1056       <doc>
   1057       <![CDATA[Creates an injector for the given set of modules, in a given development
   1058  stage.
   1059 
   1060  @throws CreationException if one or more errors occur during injector
   1061      creation.]]>
   1062       </doc>
   1063     </method>
   1064     <method name="createInjector" return="com.google.inject.Injector"
   1065       abstract="false" native="false" synchronized="false"
   1066       static="true" final="false" visibility="public"
   1067       deprecated="not deprecated">
   1068       <param name="stage" type="com.google.inject.Stage"/>
   1069       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1070       <doc>
   1071       <![CDATA[Creates an injector for the given set of modules, in a given development
   1072  stage.
   1073 
   1074  @throws CreationException if one or more errors occur during injector
   1075      construction]]>
   1076       </doc>
   1077     </method>
   1078     <doc>
   1079     <![CDATA[The entry point to the Guice framework. Creates {@link Injector}s from
   1080  {@link Module}s.
   1081 
   1082  <p>Guice supports a model of development that draws clear boundaries between
   1083  APIs, Implementations of these APIs, Modules which configure these
   1084  implementations, and finally Applications which consist of a collection of
   1085  Modules. It is the Application, which typically defines your {@code main()}
   1086  method, that bootstraps the Guice Injector using the {@code Guice} class, as
   1087  in this example:
   1088  <pre>
   1089      public class FooApplication {
   1090        public static void main(String[] args) {
   1091          Injector injector = Guice.createInjector(
   1092              new ModuleA(),
   1093              new ModuleB(),
   1094              . . .
   1095              new FooApplicationFlagsModule(args)
   1096          );
   1097 
   1098          // Now just bootstrap the application and you're done
   1099          FooStarter starter = injector.getInstance(FooStarter.class);
   1100          starter.runApplication();
   1101        }
   1102      }
   1103  </pre>]]>
   1104     </doc>
   1105   </class>
   1106   <!-- end class com.google.inject.Guice -->
   1107   <!-- start class com.google.inject.ImplementedBy -->
   1108   <class name="ImplementedBy"    abstract="true"
   1109     static="false" final="false" visibility="public"
   1110     deprecated="not deprecated">
   1111     <implements name="java.lang.annotation.Annotation"/>
   1112     <doc>
   1113     <![CDATA[A pointer to the default implementation of a type.
   1114 
   1115  @author crazybob (a] google.com (Bob Lee)]]>
   1116     </doc>
   1117   </class>
   1118   <!-- end class com.google.inject.ImplementedBy -->
   1119   <!-- start class com.google.inject.Inject -->
   1120   <class name="Inject"    abstract="true"
   1121     static="false" final="false" visibility="public"
   1122     deprecated="not deprecated">
   1123     <implements name="java.lang.annotation.Annotation"/>
   1124     <doc>
   1125     <![CDATA[Annotates members of your implementation class (constructors, methods
   1126  and fields) into which the {@link Injector} should inject values.
   1127  The Injector fulfills injection requests for:
   1128 
   1129  <ul>
   1130  <li>Every instance it constructs. The class being constructed must have
   1131  exactly one of its constructors marked with {@code @Inject} or must have a
   1132  constructor taking no parameters. The Injector then proceeds to perform
   1133  method and field injections.
   1134  
   1135  <li>Pre-constructed instances passed to {@link Injector#injectMembers},
   1136  {@link com.google.inject.binder.LinkedBindingBuilder#toInstance(Object)} and
   1137  {@link com.google.inject.binder.LinkedBindingBuilder#toProvider(Provider)}.
   1138  In this case all constructors are, of course, ignored.
   1139 
   1140  <li>Static fields and methods of classes which any {@link Module} has
   1141  specifically requested static injection for, using
   1142  {@link Binder#requestStaticInjection}.
   1143  </ul>
   1144 
   1145  In all cases, a member can be injected regardless of its Java access
   1146  specifier (private, default, protected, public).
   1147 
   1148  @author crazybob (a] google.com (Bob Lee)]]>
   1149     </doc>
   1150   </class>
   1151   <!-- end class com.google.inject.Inject -->
   1152   <!-- start interface com.google.inject.Injector -->
   1153   <interface name="Injector"    abstract="true"
   1154     static="false" final="false" visibility="public"
   1155     deprecated="not deprecated">
   1156     <method name="injectMembers"
   1157       abstract="false" native="false" synchronized="false"
   1158       static="false" final="false" visibility="public"
   1159       deprecated="not deprecated">
   1160       <param name="instance" type="java.lang.Object"/>
   1161       <doc>
   1162       <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
   1163  absence of an injectable constructor.
   1164 
   1165  <p>Whenever Guice creates an instance, it performs this injection automatically (after first
   1166  performing constructor injection), so if you're able to let Guice create all your objects for
   1167  you, you'll never need to use this method.
   1168 
   1169  @param instance to inject members on
   1170 
   1171  @see Binder#getMembersInjector(Class) for a preferred alternative that supports checks before
   1172   run time]]>
   1173       </doc>
   1174     </method>
   1175     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   1176       abstract="false" native="false" synchronized="false"
   1177       static="false" final="false" visibility="public"
   1178       deprecated="not deprecated">
   1179       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1180       <doc>
   1181       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   1182  of the given type {@code T}.
   1183 
   1184  @param typeLiteral type to get members injector for
   1185  @see Binder#getMembersInjector(TypeLiteral) for an alternative that offers up front error
   1186   detection
   1187  @since 2.0]]>
   1188       </doc>
   1189     </method>
   1190     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   1191       abstract="false" native="false" synchronized="false"
   1192       static="false" final="false" visibility="public"
   1193       deprecated="not deprecated">
   1194       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1195       <doc>
   1196       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   1197  of the given type {@code T}. When feasible, use {@link Binder#getMembersInjector(TypeLiteral)}
   1198  instead to get increased up front error detection.
   1199 
   1200  @param type type to get members injector for
   1201  @see Binder#getMembersInjector(Class) for an alternative that offers up front error
   1202   detection
   1203  @since 2.0]]>
   1204       </doc>
   1205     </method>
   1206     <method name="getBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
   1207       abstract="false" native="false" synchronized="false"
   1208       static="false" final="false" visibility="public"
   1209       deprecated="not deprecated">
   1210       <doc>
   1211       <![CDATA[Returns this injector's <strong>explicit</strong> bindings.
   1212 
   1213  <p>The returned map does not include bindings inherited from a {@link #getParent() parent
   1214  injector}, should one exist. The returned map is guaranteed to iterate (for example, with
   1215  its {@link Map#entrySet()} iterator) in the order of insertion. In other words, the order in
   1216  which bindings appear in user Modules.
   1217 
   1218  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
   1219       </doc>
   1220     </method>
   1221     <method name="getAllBindings" return="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, com.google.inject.Binding&lt;?&gt;&gt;"
   1222       abstract="false" native="false" synchronized="false"
   1223       static="false" final="false" visibility="public"
   1224       deprecated="not deprecated">
   1225       <doc>
   1226       <![CDATA[Returns a snapshot of this injector's bindings, <strong>both explicit and
   1227  just-in-time</strong>. The returned map is immutable; it contains only the bindings that were
   1228  present when {@code getAllBindings()} was invoked. Subsequent calls may return a map with
   1229  additional just-in-time bindings.
   1230 
   1231  <p>The returned map does not include bindings inherited from a {@link #getParent() parent
   1232  injector}, should one exist.
   1233 
   1234  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1235  
   1236  @since 3.0]]>
   1237       </doc>
   1238     </method>
   1239     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   1240       abstract="false" native="false" synchronized="false"
   1241       static="false" final="false" visibility="public"
   1242       deprecated="not deprecated">
   1243       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1244       <doc>
   1245       <![CDATA[Returns the binding for the given injection key. This will be an explicit bindings if the key
   1246  was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
   1247  be created if necessary.
   1248 
   1249  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1250 
   1251  @throws ConfigurationException if this injector cannot find or create the binding.]]>
   1252       </doc>
   1253     </method>
   1254     <method name="getBinding" return="com.google.inject.Binding&lt;T&gt;"
   1255       abstract="false" native="false" synchronized="false"
   1256       static="false" final="false" visibility="public"
   1257       deprecated="not deprecated">
   1258       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1259       <doc>
   1260       <![CDATA[Returns the binding for the given type. This will be an explicit bindings if the injection key
   1261  was bound explicitly by a module, or an implicit binding otherwise. The implicit binding will
   1262  be created if necessary.
   1263 
   1264  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1265 
   1266  @throws ConfigurationException if this injector cannot find or create the binding.
   1267  @since 2.0]]>
   1268       </doc>
   1269     </method>
   1270     <method name="getExistingBinding" return="com.google.inject.Binding&lt;T&gt;"
   1271       abstract="false" native="false" synchronized="false"
   1272       static="false" final="false" visibility="public"
   1273       deprecated="not deprecated">
   1274       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1275       <doc>
   1276       <![CDATA[Returns the binding if it already exists, or null if does not exist. Unlike
   1277  {@link #getBinding(Key)}, this does not attempt to create just-in-time bindings
   1278  for keys that aren't bound.
   1279  
   1280  <p> This method is part of the Guice SPI and is intended for use by tools and extensions.
   1281  
   1282  @since 3.0]]>
   1283       </doc>
   1284     </method>
   1285     <method name="findBindingsByType" return="java.util.List&lt;com.google.inject.Binding&lt;T&gt;&gt;"
   1286       abstract="false" native="false" synchronized="false"
   1287       static="false" final="false" visibility="public"
   1288       deprecated="not deprecated">
   1289       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1290       <doc>
   1291       <![CDATA[Returns all explicit bindings for {@code type}.
   1292 
   1293  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.]]>
   1294       </doc>
   1295     </method>
   1296     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   1297       abstract="false" native="false" synchronized="false"
   1298       static="false" final="false" visibility="public"
   1299       deprecated="not deprecated">
   1300       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1301       <doc>
   1302       <![CDATA[Returns the provider used to obtain instances for the given injection key. When feasible, avoid
   1303  using this method, in favor of having Guice inject your dependencies ahead of time.
   1304 
   1305  @throws ConfigurationException if this injector cannot find or create the provider.
   1306  @see Binder#getProvider(Key) for an alternative that offers up front error detection]]>
   1307       </doc>
   1308     </method>
   1309     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   1310       abstract="false" native="false" synchronized="false"
   1311       static="false" final="false" visibility="public"
   1312       deprecated="not deprecated">
   1313       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1314       <doc>
   1315       <![CDATA[Returns the provider used to obtain instances for the given type. When feasible, avoid
   1316  using this method, in favor of having Guice inject your dependencies ahead of time.
   1317 
   1318  @throws ConfigurationException if this injector cannot find or create the provider.
   1319  @see Binder#getProvider(Class) for an alternative that offers up front error detection]]>
   1320       </doc>
   1321     </method>
   1322     <method name="getInstance" return="T"
   1323       abstract="false" native="false" synchronized="false"
   1324       static="false" final="false" visibility="public"
   1325       deprecated="not deprecated">
   1326       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1327       <doc>
   1328       <![CDATA[Returns the appropriate instance for the given injection key; equivalent to {@code
   1329  getProvider(key).get()}. When feasible, avoid using this method, in favor of having Guice
   1330  inject your dependencies ahead of time.
   1331 
   1332  @throws ConfigurationException if this injector cannot find or create the provider.
   1333  @throws ProvisionException if there was a runtime failure while providing an instance.]]>
   1334       </doc>
   1335     </method>
   1336     <method name="getInstance" return="T"
   1337       abstract="false" native="false" synchronized="false"
   1338       static="false" final="false" visibility="public"
   1339       deprecated="not deprecated">
   1340       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1341       <doc>
   1342       <![CDATA[Returns the appropriate instance for the given injection type; equivalent to {@code
   1343  getProvider(type).get()}. When feasible, avoid using this method, in favor of having Guice
   1344  inject your dependencies ahead of time.
   1345 
   1346  @throws ConfigurationException if this injector cannot find or create the provider.
   1347  @throws ProvisionException if there was a runtime failure while providing an instance.]]>
   1348       </doc>
   1349     </method>
   1350     <method name="getParent" return="com.google.inject.Injector"
   1351       abstract="false" native="false" synchronized="false"
   1352       static="false" final="false" visibility="public"
   1353       deprecated="not deprecated">
   1354       <doc>
   1355       <![CDATA[Returns this injector's parent, or {@code null} if this is a top-level injector.
   1356 
   1357  @since 2.0]]>
   1358       </doc>
   1359     </method>
   1360     <method name="createChildInjector" return="com.google.inject.Injector"
   1361       abstract="false" native="false" synchronized="false"
   1362       static="false" final="false" visibility="public"
   1363       deprecated="not deprecated">
   1364       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   1365       <doc>
   1366       <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
   1367  interceptors and type converters are inherited -- they are visible to the child injector.
   1368  Elements of the child injector are not visible to its parent.
   1369 
   1370  <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
   1371  whenever possible. This allows for scoped instances to be shared between injectors. Use
   1372  explicit bindings to prevent bindings from being shared with the parent injector.  Optional
   1373  injections in just-in-time bindings (created in the parent injector) may be silently
   1374  ignored if the optional dependencies are from the child injector.
   1375 
   1376  <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
   1377  bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
   1378  injector to itself.
   1379 
   1380  @since 2.0]]>
   1381       </doc>
   1382     </method>
   1383     <method name="createChildInjector" return="com.google.inject.Injector"
   1384       abstract="false" native="false" synchronized="false"
   1385       static="false" final="false" visibility="public"
   1386       deprecated="not deprecated">
   1387       <param name="modules" type="com.google.inject.Module[]"/>
   1388       <doc>
   1389       <![CDATA[Returns a new injector that inherits all state from this injector. All bindings, scopes,
   1390  interceptors and type converters are inherited -- they are visible to the child injector.
   1391  Elements of the child injector are not visible to its parent.
   1392 
   1393  <p>Just-in-time bindings created for child injectors will be created in an ancestor injector
   1394  whenever possible. This allows for scoped instances to be shared between injectors. Use
   1395  explicit bindings to prevent bindings from being shared with the parent injector.
   1396 
   1397  <p>No key may be bound by both an injector and one of its ancestors. This includes just-in-time
   1398  bindings. The lone exception is the key for {@code Injector.class}, which is bound by each
   1399  injector to itself.
   1400 
   1401  @since 2.0]]>
   1402       </doc>
   1403     </method>
   1404     <method name="getScopeBindings" return="java.util.Map&lt;java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;, com.google.inject.Scope&gt;"
   1405       abstract="false" native="false" synchronized="false"
   1406       static="false" final="false" visibility="public"
   1407       deprecated="not deprecated">
   1408       <doc>
   1409       <![CDATA[Returns a map containing all scopes in the injector. The maps keys are scoping annotations
   1410  like {@code Singleton.class}, and the values are scope instances, such as {@code
   1411  Scopes.SINGLETON}. The returned map is immutable.
   1412 
   1413  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1414  
   1415  @since 3.0]]>
   1416       </doc>
   1417     </method>
   1418     <method name="getTypeConverterBindings" return="java.util.Set&lt;com.google.inject.spi.TypeConverterBinding&gt;"
   1419       abstract="false" native="false" synchronized="false"
   1420       static="false" final="false" visibility="public"
   1421       deprecated="not deprecated">
   1422       <doc>
   1423       <![CDATA[Returns a set containing all type converter bindings in the injector. The returned set is
   1424  immutable.
   1425 
   1426  <p>This method is part of the Guice SPI and is intended for use by tools and extensions.
   1427  
   1428  @since 3.0]]>
   1429       </doc>
   1430     </method>
   1431     <doc>
   1432     <![CDATA[Builds the graphs of objects that make up your application. The injector tracks the dependencies
   1433  for each type and uses bindings to inject them. This is the core of Guice, although you rarely
   1434  interact with it directly. This "behind-the-scenes" operation is what distinguishes dependency
   1435  injection from its cousin, the service locator pattern.
   1436 
   1437  <p>Contains several default bindings:
   1438 
   1439  <ul>
   1440  <li>This {@link Injector} instance itself
   1441  <li>A {@code Provider<T>} for each binding of type {@code T}
   1442  <li>The {@link java.util.logging.Logger} for the class being injected
   1443  <li>The {@link Stage} in which the Injector was created
   1444  </ul>
   1445 
   1446  Injectors are created using the facade class {@link Guice}.
   1447 
   1448  <p>An injector can also {@link #injectMembers(Object) inject the dependencies} of
   1449  already-constructed instances. This can be used to interoperate with objects created by other
   1450  frameworks or services.
   1451 
   1452  <p>Injectors can be {@link #createChildInjector(Iterable) hierarchical}. Child injectors inherit
   1453  the configuration of their parent injectors, but the converse does not hold.
   1454 
   1455  <p>The injector's {@link #getBindings() internal bindings} are available for introspection. This
   1456  enables tools and extensions to operate on an injector reflectively.
   1457 
   1458  @author crazybob (a] google.com (Bob Lee)
   1459  @author jessewilson (a] google.com (Jesse Wilson)]]>
   1460     </doc>
   1461   </interface>
   1462   <!-- end interface com.google.inject.Injector -->
   1463   <!-- start class com.google.inject.Key -->
   1464   <class name="Key" extends="java.lang.Object"
   1465     abstract="false"
   1466     static="false" final="false" visibility="public"
   1467     deprecated="not deprecated">
   1468     <constructor name="Key" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   1469       static="false" final="false" visibility="protected"
   1470       deprecated="not deprecated">
   1471       <doc>
   1472       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1473 
   1474  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1475  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1476  at runtime despite erasure.
   1477 
   1478  <p>Example usage for a binding of type {@code Foo} annotated with
   1479  {@code @Bar}:
   1480 
   1481  <p>{@code new Key<Foo>(Bar.class) {}}.]]>
   1482       </doc>
   1483     </constructor>
   1484     <constructor name="Key" type="java.lang.annotation.Annotation"
   1485       static="false" final="false" visibility="protected"
   1486       deprecated="not deprecated">
   1487       <doc>
   1488       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1489 
   1490  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1491  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1492  at runtime despite erasure.
   1493 
   1494  <p>Example usage for a binding of type {@code Foo} annotated with
   1495  {@code @Bar}:
   1496 
   1497  <p>{@code new Key<Foo>(new Bar()) {}}.]]>
   1498       </doc>
   1499     </constructor>
   1500     <constructor name="Key"
   1501       static="false" final="false" visibility="protected"
   1502       deprecated="not deprecated">
   1503       <doc>
   1504       <![CDATA[Constructs a new key. Derives the type from this class's type parameter.
   1505 
   1506  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   1507  parameter in the anonymous class's type hierarchy so we can reconstitute it
   1508  at runtime despite erasure.
   1509 
   1510  <p>Example usage for a binding of type {@code Foo}:
   1511 
   1512  <p>{@code new Key<Foo>() {}}.]]>
   1513       </doc>
   1514     </constructor>
   1515     <method name="getTypeLiteral" return="com.google.inject.TypeLiteral&lt;T&gt;"
   1516       abstract="false" native="false" synchronized="false"
   1517       static="false" final="true" visibility="public"
   1518       deprecated="not deprecated">
   1519       <doc>
   1520       <![CDATA[Gets the key type.]]>
   1521       </doc>
   1522     </method>
   1523     <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   1524       abstract="false" native="false" synchronized="false"
   1525       static="false" final="true" visibility="public"
   1526       deprecated="not deprecated">
   1527       <doc>
   1528       <![CDATA[Gets the annotation type.]]>
   1529       </doc>
   1530     </method>
   1531     <method name="getAnnotation" return="java.lang.annotation.Annotation"
   1532       abstract="false" native="false" synchronized="false"
   1533       static="false" final="true" visibility="public"
   1534       deprecated="not deprecated">
   1535       <doc>
   1536       <![CDATA[Gets the annotation.]]>
   1537       </doc>
   1538     </method>
   1539     <method name="equals" return="boolean"
   1540       abstract="false" native="false" synchronized="false"
   1541       static="false" final="true" visibility="public"
   1542       deprecated="not deprecated">
   1543       <param name="o" type="java.lang.Object"/>
   1544     </method>
   1545     <method name="hashCode" return="int"
   1546       abstract="false" native="false" synchronized="false"
   1547       static="false" final="true" visibility="public"
   1548       deprecated="not deprecated">
   1549     </method>
   1550     <method name="toString" return="java.lang.String"
   1551       abstract="false" native="false" synchronized="false"
   1552       static="false" final="true" visibility="public"
   1553       deprecated="not deprecated">
   1554     </method>
   1555     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1556       abstract="false" native="false" synchronized="false"
   1557       static="true" final="false" visibility="public"
   1558       deprecated="not deprecated">
   1559       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1560       <doc>
   1561       <![CDATA[Gets a key for an injection type.]]>
   1562       </doc>
   1563     </method>
   1564     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1565       abstract="false" native="false" synchronized="false"
   1566       static="true" final="false" visibility="public"
   1567       deprecated="not deprecated">
   1568       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1569       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1570       <doc>
   1571       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1572       </doc>
   1573     </method>
   1574     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1575       abstract="false" native="false" synchronized="false"
   1576       static="true" final="false" visibility="public"
   1577       deprecated="not deprecated">
   1578       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1579       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1580       <doc>
   1581       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1582       </doc>
   1583     </method>
   1584     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1585       abstract="false" native="false" synchronized="false"
   1586       static="true" final="false" visibility="public"
   1587       deprecated="not deprecated">
   1588       <param name="type" type="java.lang.reflect.Type"/>
   1589       <doc>
   1590       <![CDATA[Gets a key for an injection type.]]>
   1591       </doc>
   1592     </method>
   1593     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1594       abstract="false" native="false" synchronized="false"
   1595       static="true" final="false" visibility="public"
   1596       deprecated="not deprecated">
   1597       <param name="type" type="java.lang.reflect.Type"/>
   1598       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1599       <doc>
   1600       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1601       </doc>
   1602     </method>
   1603     <method name="get" return="com.google.inject.Key&lt;?&gt;"
   1604       abstract="false" native="false" synchronized="false"
   1605       static="true" final="false" visibility="public"
   1606       deprecated="not deprecated">
   1607       <param name="type" type="java.lang.reflect.Type"/>
   1608       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1609       <doc>
   1610       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1611       </doc>
   1612     </method>
   1613     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1614       abstract="false" native="false" synchronized="false"
   1615       static="true" final="false" visibility="public"
   1616       deprecated="not deprecated">
   1617       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1618       <doc>
   1619       <![CDATA[Gets a key for an injection type.]]>
   1620       </doc>
   1621     </method>
   1622     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1623       abstract="false" native="false" synchronized="false"
   1624       static="true" final="false" visibility="public"
   1625       deprecated="not deprecated">
   1626       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1627       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1628       <doc>
   1629       <![CDATA[Gets a key for an injection type and an annotation type.]]>
   1630       </doc>
   1631     </method>
   1632     <method name="get" return="com.google.inject.Key&lt;T&gt;"
   1633       abstract="false" native="false" synchronized="false"
   1634       static="true" final="false" visibility="public"
   1635       deprecated="not deprecated">
   1636       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1637       <param name="annotation" type="java.lang.annotation.Annotation"/>
   1638       <doc>
   1639       <![CDATA[Gets a key for an injection type and an annotation.]]>
   1640       </doc>
   1641     </method>
   1642     <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
   1643       abstract="false" native="false" synchronized="false"
   1644       static="false" final="false" visibility="public"
   1645       deprecated="not deprecated">
   1646       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   1647       <doc>
   1648       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1649  key.
   1650  
   1651  @since 3.0]]>
   1652       </doc>
   1653     </method>
   1654     <method name="ofType" return="com.google.inject.Key&lt;?&gt;"
   1655       abstract="false" native="false" synchronized="false"
   1656       static="false" final="false" visibility="public"
   1657       deprecated="not deprecated">
   1658       <param name="type" type="java.lang.reflect.Type"/>
   1659       <doc>
   1660       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1661  key.
   1662  
   1663  @since 3.0]]>
   1664       </doc>
   1665     </method>
   1666     <method name="ofType" return="com.google.inject.Key&lt;T&gt;"
   1667       abstract="false" native="false" synchronized="false"
   1668       static="false" final="false" visibility="public"
   1669       deprecated="not deprecated">
   1670       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1671       <doc>
   1672       <![CDATA[Returns a new key of the specified type with the same annotation as this
   1673  key.
   1674  
   1675  @since 3.0]]>
   1676       </doc>
   1677     </method>
   1678     <method name="hasAttributes" return="boolean"
   1679       abstract="false" native="false" synchronized="false"
   1680       static="false" final="false" visibility="public"
   1681       deprecated="not deprecated">
   1682       <doc>
   1683       <![CDATA[Returns true if this key has annotation attributes.
   1684  
   1685  @since 3.0]]>
   1686       </doc>
   1687     </method>
   1688     <method name="withoutAttributes" return="com.google.inject.Key&lt;T&gt;"
   1689       abstract="false" native="false" synchronized="false"
   1690       static="false" final="false" visibility="public"
   1691       deprecated="not deprecated">
   1692       <doc>
   1693       <![CDATA[Returns this key without annotation attributes, i.e. with only the
   1694  annotation type.
   1695  
   1696  @since 3.0]]>
   1697       </doc>
   1698     </method>
   1699     <doc>
   1700     <![CDATA[Binding key consisting of an injection type and an optional annotation.
   1701  Matches the type and annotation at a point of injection.
   1702 
   1703  <p>For example, {@code Key.get(Service.class, Transactional.class)} will
   1704  match:
   1705 
   1706  <pre>
   1707    {@literal @}Inject
   1708    public void setService({@literal @}Transactional Service service) {
   1709      ...
   1710    }
   1711  </pre>
   1712 
   1713  <p>{@code Key} supports generic types via subclassing just like {@link
   1714  TypeLiteral}.
   1715 
   1716  <p>Keys do not differentiate between primitive types (int, char, etc.) and
   1717  their correpsonding wrapper types (Integer, Character, etc.). Primitive
   1718  types will be replaced with their wrapper types when keys are created.
   1719 
   1720  @author crazybob (a] google.com (Bob Lee)]]>
   1721     </doc>
   1722   </class>
   1723   <!-- end class com.google.inject.Key -->
   1724   <!-- start interface com.google.inject.MembersInjector -->
   1725   <interface name="MembersInjector"    abstract="true"
   1726     static="false" final="false" visibility="public"
   1727     deprecated="not deprecated">
   1728     <method name="injectMembers"
   1729       abstract="false" native="false" synchronized="false"
   1730       static="false" final="false" visibility="public"
   1731       deprecated="not deprecated">
   1732       <param name="instance" type="T"/>
   1733       <doc>
   1734       <![CDATA[Injects dependencies into the fields and methods of {@code instance}. Ignores the presence or
   1735  absence of an injectable constructor.
   1736 
   1737  <p>Whenever Guice creates an instance, it performs this injection automatically (after first
   1738  performing constructor injection), so if you're able to let Guice create all your objects for
   1739  you, you'll never need to use this method.
   1740 
   1741  @param instance to inject members on. May be {@code null}.]]>
   1742       </doc>
   1743     </method>
   1744     <doc>
   1745     <![CDATA[Injects dependencies into the fields and methods on instances of type {@code T}. Ignores the
   1746  presence or absence of an injectable constructor.
   1747 
   1748  @param <T> type to inject members of
   1749 
   1750  @author crazybob (a] google.com (Bob Lee)
   1751  @author jessewilson (a] google.com (Jesse Wilson)
   1752  @since 2.0]]>
   1753     </doc>
   1754   </interface>
   1755   <!-- end interface com.google.inject.MembersInjector -->
   1756   <!-- start interface com.google.inject.Module -->
   1757   <interface name="Module"    abstract="true"
   1758     static="false" final="false" visibility="public"
   1759     deprecated="not deprecated">
   1760     <method name="configure"
   1761       abstract="false" native="false" synchronized="false"
   1762       static="false" final="false" visibility="public"
   1763       deprecated="not deprecated">
   1764       <param name="binder" type="com.google.inject.Binder"/>
   1765       <doc>
   1766       <![CDATA[Contributes bindings and other configurations for this module to {@code binder}.
   1767 
   1768  <p><strong>Do not invoke this method directly</strong> to install submodules. Instead use
   1769  {@link Binder#install(Module)}, which ensures that {@link Provides provider methods} are
   1770  discovered.]]>
   1771       </doc>
   1772     </method>
   1773     <doc>
   1774     <![CDATA[A module contributes configuration information, typically interface
   1775  bindings, which will be used to create an {@link Injector}. A Guice-based
   1776  application is ultimately composed of little more than a set of
   1777  {@code Module}s and some bootstrapping code.
   1778 
   1779  <p>Your Module classes can use a more streamlined syntax by extending
   1780  {@link AbstractModule} rather than implementing this interface directly.
   1781 
   1782  <p>In addition to the bindings configured via {@link #configure}, bindings
   1783  will be created for all methods annotated with {@literal @}{@link Provides}.
   1784  Use scope and binding annotations on these methods to configure the
   1785  bindings.]]>
   1786     </doc>
   1787   </interface>
   1788   <!-- end interface com.google.inject.Module -->
   1789   <!-- start class com.google.inject.OutOfScopeException -->
   1790   <class name="OutOfScopeException" extends="java.lang.RuntimeException"
   1791     abstract="false"
   1792     static="false" final="true" visibility="public"
   1793     deprecated="not deprecated">
   1794     <constructor name="OutOfScopeException" type="java.lang.String"
   1795       static="false" final="false" visibility="public"
   1796       deprecated="not deprecated">
   1797     </constructor>
   1798     <constructor name="OutOfScopeException" type="java.lang.String, java.lang.Throwable"
   1799       static="false" final="false" visibility="public"
   1800       deprecated="not deprecated">
   1801     </constructor>
   1802     <constructor name="OutOfScopeException" type="java.lang.Throwable"
   1803       static="false" final="false" visibility="public"
   1804       deprecated="not deprecated">
   1805     </constructor>
   1806     <doc>
   1807     <![CDATA[Thrown from {@link Provider#get} when an attempt is made to access a scoped
   1808  object while the scope in question is not currently active.
   1809 
   1810  @author kevinb (a] google.com (Kevin Bourrillion)
   1811  @since 2.0]]>
   1812     </doc>
   1813   </class>
   1814   <!-- end class com.google.inject.OutOfScopeException -->
   1815   <!-- start interface com.google.inject.PrivateBinder -->
   1816   <interface name="PrivateBinder"    abstract="true"
   1817     static="false" final="false" visibility="public"
   1818     deprecated="not deprecated">
   1819     <implements name="com.google.inject.Binder"/>
   1820     <method name="expose"
   1821       abstract="false" native="false" synchronized="false"
   1822       static="false" final="false" visibility="public"
   1823       deprecated="not deprecated">
   1824       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   1825       <doc>
   1826       <![CDATA[Makes the binding for {@code key} available to the enclosing environment]]>
   1827       </doc>
   1828     </method>
   1829     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1830       abstract="false" native="false" synchronized="false"
   1831       static="false" final="false" visibility="public"
   1832       deprecated="not deprecated">
   1833       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   1834       <doc>
   1835       <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
   1836  com.google.inject.binder.AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1837  binding annotation.]]>
   1838       </doc>
   1839     </method>
   1840     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1841       abstract="false" native="false" synchronized="false"
   1842       static="false" final="false" visibility="public"
   1843       deprecated="not deprecated">
   1844       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   1845       <doc>
   1846       <![CDATA[Makes a binding for {@code type} available to the enclosing environment. Use {@link
   1847  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1848  binding annotation.]]>
   1849       </doc>
   1850     </method>
   1851     <method name="withSource" return="com.google.inject.PrivateBinder"
   1852       abstract="false" native="false" synchronized="false"
   1853       static="false" final="false" visibility="public"
   1854       deprecated="not deprecated">
   1855       <param name="source" type="java.lang.Object"/>
   1856     </method>
   1857     <method name="skipSources" return="com.google.inject.PrivateBinder"
   1858       abstract="false" native="false" synchronized="false"
   1859       static="false" final="false" visibility="public"
   1860       deprecated="not deprecated">
   1861       <param name="classesToSkip" type="java.lang.Class[]"/>
   1862     </method>
   1863     <doc>
   1864     <![CDATA[Returns a binder whose configuration information is hidden from its environment by default. See
   1865  {@link com.google.inject.PrivateModule PrivateModule} for details.
   1866  
   1867  @author jessewilson (a] google.com (Jesse Wilson)
   1868  @since 2.0]]>
   1869     </doc>
   1870   </interface>
   1871   <!-- end interface com.google.inject.PrivateBinder -->
   1872   <!-- start class com.google.inject.PrivateModule -->
   1873   <class name="PrivateModule" extends="java.lang.Object"
   1874     abstract="true"
   1875     static="false" final="false" visibility="public"
   1876     deprecated="not deprecated">
   1877     <implements name="com.google.inject.Module"/>
   1878     <constructor name="PrivateModule"
   1879       static="false" final="false" visibility="public"
   1880       deprecated="not deprecated">
   1881     </constructor>
   1882     <method name="configure"
   1883       abstract="false" native="false" synchronized="true"
   1884       static="false" final="true" visibility="public"
   1885       deprecated="not deprecated">
   1886       <param name="binder" type="com.google.inject.Binder"/>
   1887     </method>
   1888     <method name="configure"
   1889       abstract="true" native="false" synchronized="false"
   1890       static="false" final="false" visibility="protected"
   1891       deprecated="not deprecated">
   1892       <doc>
   1893       <![CDATA[Creates bindings and other configurations private to this module. Use {@link #expose(Class)
   1894  expose()} to make the bindings in this module available externally.]]>
   1895       </doc>
   1896     </method>
   1897     <method name="expose"
   1898       abstract="false" native="false" synchronized="false"
   1899       static="false" final="true" visibility="protected"
   1900       deprecated="not deprecated">
   1901       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1902       <doc>
   1903       <![CDATA[Makes the binding for {@code key} available to other modules and the injector.]]>
   1904       </doc>
   1905     </method>
   1906     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1907       abstract="false" native="false" synchronized="false"
   1908       static="false" final="true" visibility="protected"
   1909       deprecated="not deprecated">
   1910       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   1911       <doc>
   1912       <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
   1913  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1914  binding annotation.]]>
   1915       </doc>
   1916     </method>
   1917     <method name="expose" return="com.google.inject.binder.AnnotatedElementBuilder"
   1918       abstract="false" native="false" synchronized="false"
   1919       static="false" final="true" visibility="protected"
   1920       deprecated="not deprecated">
   1921       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   1922       <doc>
   1923       <![CDATA[Makes a binding for {@code type} available to other modules and the injector. Use {@link
   1924  AnnotatedElementBuilder#annotatedWith(Class) annotatedWith()} to expose {@code type} with a
   1925  binding annotation.]]>
   1926       </doc>
   1927     </method>
   1928     <method name="binder" return="com.google.inject.PrivateBinder"
   1929       abstract="false" native="false" synchronized="false"
   1930       static="false" final="true" visibility="protected"
   1931       deprecated="not deprecated">
   1932       <doc>
   1933       <![CDATA[Returns the current binder.]]>
   1934       </doc>
   1935     </method>
   1936     <method name="bindScope"
   1937       abstract="false" native="false" synchronized="false"
   1938       static="false" final="true" visibility="protected"
   1939       deprecated="not deprecated">
   1940       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   1941       <param name="scope" type="com.google.inject.Scope"/>
   1942       <doc>
   1943       <![CDATA[@see Binder#bindScope(Class, Scope)]]>
   1944       </doc>
   1945     </method>
   1946     <method name="bind" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   1947       abstract="false" native="false" synchronized="false"
   1948       static="false" final="true" visibility="protected"
   1949       deprecated="not deprecated">
   1950       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   1951       <doc>
   1952       <![CDATA[@see Binder#bind(Key)]]>
   1953       </doc>
   1954     </method>
   1955     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
   1956       abstract="false" native="false" synchronized="false"
   1957       static="false" final="true" visibility="protected"
   1958       deprecated="not deprecated">
   1959       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   1960       <doc>
   1961       <![CDATA[@see Binder#bind(TypeLiteral)]]>
   1962       </doc>
   1963     </method>
   1964     <method name="bind" return="com.google.inject.binder.AnnotatedBindingBuilder&lt;T&gt;"
   1965       abstract="false" native="false" synchronized="false"
   1966       static="false" final="true" visibility="protected"
   1967       deprecated="not deprecated">
   1968       <param name="clazz" type="java.lang.Class&lt;T&gt;"/>
   1969       <doc>
   1970       <![CDATA[@see Binder#bind(Class)]]>
   1971       </doc>
   1972     </method>
   1973     <method name="bindConstant" return="com.google.inject.binder.AnnotatedConstantBindingBuilder"
   1974       abstract="false" native="false" synchronized="false"
   1975       static="false" final="true" visibility="protected"
   1976       deprecated="not deprecated">
   1977       <doc>
   1978       <![CDATA[@see Binder#bindConstant()]]>
   1979       </doc>
   1980     </method>
   1981     <method name="install"
   1982       abstract="false" native="false" synchronized="false"
   1983       static="false" final="true" visibility="protected"
   1984       deprecated="not deprecated">
   1985       <param name="module" type="com.google.inject.Module"/>
   1986       <doc>
   1987       <![CDATA[@see Binder#install(Module)]]>
   1988       </doc>
   1989     </method>
   1990     <method name="addError"
   1991       abstract="false" native="false" synchronized="false"
   1992       static="false" final="true" visibility="protected"
   1993       deprecated="not deprecated">
   1994       <param name="message" type="java.lang.String"/>
   1995       <param name="arguments" type="java.lang.Object[]"/>
   1996       <doc>
   1997       <![CDATA[@see Binder#addError(String, Object[])]]>
   1998       </doc>
   1999     </method>
   2000     <method name="addError"
   2001       abstract="false" native="false" synchronized="false"
   2002       static="false" final="true" visibility="protected"
   2003       deprecated="not deprecated">
   2004       <param name="t" type="java.lang.Throwable"/>
   2005       <doc>
   2006       <![CDATA[@see Binder#addError(Throwable)]]>
   2007       </doc>
   2008     </method>
   2009     <method name="addError"
   2010       abstract="false" native="false" synchronized="false"
   2011       static="false" final="true" visibility="protected"
   2012       deprecated="not deprecated">
   2013       <param name="message" type="com.google.inject.spi.Message"/>
   2014       <doc>
   2015       <![CDATA[@see Binder#addError(Message)]]>
   2016       </doc>
   2017     </method>
   2018     <method name="requestInjection"
   2019       abstract="false" native="false" synchronized="false"
   2020       static="false" final="true" visibility="protected"
   2021       deprecated="not deprecated">
   2022       <param name="instance" type="java.lang.Object"/>
   2023       <doc>
   2024       <![CDATA[@see Binder#requestInjection(Object)]]>
   2025       </doc>
   2026     </method>
   2027     <method name="requestStaticInjection"
   2028       abstract="false" native="false" synchronized="false"
   2029       static="false" final="true" visibility="protected"
   2030       deprecated="not deprecated">
   2031       <param name="types" type="java.lang.Class[]"/>
   2032       <doc>
   2033       <![CDATA[@see Binder#requestStaticInjection(Class[])]]>
   2034       </doc>
   2035     </method>
   2036     <method name="bindInterceptor"
   2037       abstract="false" native="false" synchronized="false"
   2038       static="false" final="true" visibility="protected"
   2039       deprecated="not deprecated">
   2040       <param name="classMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
   2041       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
   2042       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
   2043       <doc>
   2044       <![CDATA[@see Binder#bindInterceptor(com.google.inject.matcher.Matcher, com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])]]>
   2045       </doc>
   2046     </method>
   2047     <method name="requireBinding"
   2048       abstract="false" native="false" synchronized="false"
   2049       static="false" final="true" visibility="protected"
   2050       deprecated="not deprecated">
   2051       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   2052       <doc>
   2053       <![CDATA[Instructs Guice to require a binding to the given key.]]>
   2054       </doc>
   2055     </method>
   2056     <method name="requireBinding"
   2057       abstract="false" native="false" synchronized="false"
   2058       static="false" final="true" visibility="protected"
   2059       deprecated="not deprecated">
   2060       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   2061       <doc>
   2062       <![CDATA[Instructs Guice to require a binding to the given type.]]>
   2063       </doc>
   2064     </method>
   2065     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   2066       abstract="false" native="false" synchronized="false"
   2067       static="false" final="true" visibility="protected"
   2068       deprecated="not deprecated">
   2069       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2070       <doc>
   2071       <![CDATA[@see Binder#getProvider(Key)]]>
   2072       </doc>
   2073     </method>
   2074     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   2075       abstract="false" native="false" synchronized="false"
   2076       static="false" final="true" visibility="protected"
   2077       deprecated="not deprecated">
   2078       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2079       <doc>
   2080       <![CDATA[@see Binder#getProvider(Class)]]>
   2081       </doc>
   2082     </method>
   2083     <method name="convertToTypes"
   2084       abstract="false" native="false" synchronized="false"
   2085       static="false" final="true" visibility="protected"
   2086       deprecated="not deprecated">
   2087       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
   2088       <param name="converter" type="com.google.inject.spi.TypeConverter"/>
   2089       <doc>
   2090       <![CDATA[@see Binder#convertToTypes(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeConverter)]]>
   2091       </doc>
   2092     </method>
   2093     <method name="currentStage" return="com.google.inject.Stage"
   2094       abstract="false" native="false" synchronized="false"
   2095       static="false" final="true" visibility="protected"
   2096       deprecated="not deprecated">
   2097       <doc>
   2098       <![CDATA[@see Binder#currentStage()]]>
   2099       </doc>
   2100     </method>
   2101     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   2102       abstract="false" native="false" synchronized="false"
   2103       static="false" final="false" visibility="protected"
   2104       deprecated="not deprecated">
   2105       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2106       <doc>
   2107       <![CDATA[@see Binder#getMembersInjector(Class)]]>
   2108       </doc>
   2109     </method>
   2110     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   2111       abstract="false" native="false" synchronized="false"
   2112       static="false" final="false" visibility="protected"
   2113       deprecated="not deprecated">
   2114       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2115       <doc>
   2116       <![CDATA[@see Binder#getMembersInjector(TypeLiteral)]]>
   2117       </doc>
   2118     </method>
   2119     <method name="bindListener"
   2120       abstract="false" native="false" synchronized="false"
   2121       static="false" final="false" visibility="protected"
   2122       deprecated="not deprecated">
   2123       <param name="typeMatcher" type="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"/>
   2124       <param name="listener" type="com.google.inject.spi.TypeListener"/>
   2125       <doc>
   2126       <![CDATA[@see Binder#bindListener(com.google.inject.matcher.Matcher, com.google.inject.spi.TypeListener)]]>
   2127       </doc>
   2128     </method>
   2129     <doc>
   2130     <![CDATA[A module whose configuration information is hidden from its environment by default. Only bindings
   2131  that are explicitly exposed will be available to other modules and to the users of the injector.
   2132  This module may expose the bindings it creates and the bindings of the modules it installs.
   2133 
   2134  <p>A private module can be nested within a regular module or within another private module using
   2135  {@link Binder#install install()}.  Its bindings live in a new environment that inherits bindings,
   2136  type converters, scopes, and interceptors from the surrounding ("parent") environment.  When you
   2137  nest multiple private modules, the result is a tree of environments where the injector's
   2138  environment is the root.
   2139 
   2140  <p>Guice EDSL bindings can be exposed with {@link #expose(Class) expose()}. {@literal @}{@link
   2141  com.google.inject.Provides Provides} bindings can be exposed with the {@literal @}{@link
   2142  Exposed} annotation:
   2143 
   2144  <pre>
   2145  public class FooBarBazModule extends PrivateModule {
   2146    protected void configure() {
   2147      bind(Foo.class).to(RealFoo.class);
   2148      expose(Foo.class);
   2149 
   2150      install(new TransactionalBarModule());
   2151      expose(Bar.class).annotatedWith(Transactional.class);
   2152 
   2153      bind(SomeImplementationDetail.class);
   2154      install(new MoreImplementationDetailsModule());
   2155    }
   2156 
   2157    {@literal @}Provides {@literal @}Exposed
   2158    public Baz provideBaz() {
   2159      return new SuperBaz();
   2160    }
   2161  }
   2162  </pre>
   2163 
   2164  <p>Private modules are implemented using {@link Injector#createChildInjector(Module[]) parent
   2165  injectors}. When it can satisfy their dependencies, just-in-time bindings will be created in the
   2166  root environment. Such bindings are shared among all environments in the tree.
   2167  
   2168  <p>The scope of a binding is constrained to its environment. A singleton bound in a private
   2169  module will be unique to its environment. But a binding for the same type in a different private
   2170  module will yield a different instance.
   2171 
   2172  <p>A shared binding that injects the {@code Injector} gets the root injector, which only has
   2173  access to bindings in the root environment. An explicit binding that injects the {@code Injector}
   2174  gets access to all bindings in the child environment.
   2175 
   2176  <p>To promote a just-in-time binding to an explicit binding, bind it:
   2177  <pre>
   2178    bind(FooImpl.class);
   2179  </pre>
   2180 
   2181  @author jessewilson (a] google.com (Jesse Wilson)
   2182  @since 2.0]]>
   2183     </doc>
   2184   </class>
   2185   <!-- end class com.google.inject.PrivateModule -->
   2186   <!-- start class com.google.inject.ProvidedBy -->
   2187   <class name="ProvidedBy"    abstract="true"
   2188     static="false" final="false" visibility="public"
   2189     deprecated="not deprecated">
   2190     <implements name="java.lang.annotation.Annotation"/>
   2191     <doc>
   2192     <![CDATA[A pointer to the default provider type for a type.
   2193 
   2194  @author crazybob (a] google.com (Bob Lee)]]>
   2195     </doc>
   2196   </class>
   2197   <!-- end class com.google.inject.ProvidedBy -->
   2198   <!-- start interface com.google.inject.Provider -->
   2199   <interface name="Provider"    abstract="true"
   2200     static="false" final="false" visibility="public"
   2201     deprecated="not deprecated">
   2202     <implements name="javax.inject.Provider&lt;T&gt;"/>
   2203     <method name="get" return="T"
   2204       abstract="false" native="false" synchronized="false"
   2205       static="false" final="false" visibility="public"
   2206       deprecated="not deprecated">
   2207       <doc>
   2208       <![CDATA[Provides an instance of {@code T}. Must never return {@code null}.
   2209 
   2210  @throws OutOfScopeException when an attempt is made to access a scoped object while the scope
   2211      in question is not currently active
   2212  @throws ProvisionException if an instance cannot be provided. Such exceptions include messages
   2213      and throwables to describe why provision failed.]]>
   2214       </doc>
   2215     </method>
   2216     <doc>
   2217     <![CDATA[An object capable of providing instances of type {@code T}. Providers are used in numerous ways
   2218  by Guice:
   2219 
   2220  <ul>
   2221  <li>When the default means for obtaining instances (an injectable or parameterless constructor)
   2222  is insufficient for a particular binding, the module can specify a custom {@code Provider}
   2223  instead, to control exactly how Guice creates or obtains instances for the binding.
   2224 
   2225  <li>An implementation class may always choose to have a {@code Provider<T>} instance injected,
   2226  rather than having a {@code T} injected directly.  This may give you access to multiple
   2227  instances, instances you wish to safely mutate and discard, instances which are out of scope
   2228  (e.g. using a {@code @RequestScoped} object from within a {@code @SessionScoped} object), or
   2229  instances that will be initialized lazily.
   2230 
   2231  <li>A custom {@link Scope} is implemented as a decorator of {@code Provider<T>}, which decides
   2232  when to delegate to the backing provider and when to provide the instance some other way.
   2233 
   2234  <li>The {@link Injector} offers access to the {@code Provider<T>} it uses to fulfill requests
   2235  for a given key, via the {@link Injector#getProvider} methods.
   2236  </ul>
   2237 
   2238  @param <T> the type of object this provides
   2239 
   2240  @author crazybob (a] google.com (Bob Lee)]]>
   2241     </doc>
   2242   </interface>
   2243   <!-- end interface com.google.inject.Provider -->
   2244   <!-- start class com.google.inject.Provides -->
   2245   <class name="Provides"    abstract="true"
   2246     static="false" final="false" visibility="public"
   2247     deprecated="not deprecated">
   2248     <implements name="java.lang.annotation.Annotation"/>
   2249     <doc>
   2250     <![CDATA[Annotates methods of a {@link Module} to create a provider method binding. The method's return
   2251  type is bound to it's returned value. Guice will pass dependencies to the method as parameters.
   2252 
   2253  @author crazybob (a] google.com (Bob Lee)
   2254  @since 2.0]]>
   2255     </doc>
   2256   </class>
   2257   <!-- end class com.google.inject.Provides -->
   2258   <!-- start class com.google.inject.ProvisionException -->
   2259   <class name="ProvisionException" extends="java.lang.RuntimeException"
   2260     abstract="false"
   2261     static="false" final="true" visibility="public"
   2262     deprecated="not deprecated">
   2263     <constructor name="ProvisionException" type="java.lang.Iterable&lt;com.google.inject.spi.Message&gt;"
   2264       static="false" final="false" visibility="public"
   2265       deprecated="not deprecated">
   2266       <doc>
   2267       <![CDATA[Creates a ProvisionException containing {@code messages}.]]>
   2268       </doc>
   2269     </constructor>
   2270     <constructor name="ProvisionException" type="java.lang.String, java.lang.Throwable"
   2271       static="false" final="false" visibility="public"
   2272       deprecated="not deprecated">
   2273     </constructor>
   2274     <constructor name="ProvisionException" type="java.lang.String"
   2275       static="false" final="false" visibility="public"
   2276       deprecated="not deprecated">
   2277     </constructor>
   2278     <method name="getErrorMessages" return="java.util.Collection&lt;com.google.inject.spi.Message&gt;"
   2279       abstract="false" native="false" synchronized="false"
   2280       static="false" final="false" visibility="public"
   2281       deprecated="not deprecated">
   2282       <doc>
   2283       <![CDATA[Returns messages for the errors that caused this exception.]]>
   2284       </doc>
   2285     </method>
   2286     <method name="getMessage" return="java.lang.String"
   2287       abstract="false" native="false" synchronized="false"
   2288       static="false" final="false" visibility="public"
   2289       deprecated="not deprecated">
   2290     </method>
   2291     <doc>
   2292     <![CDATA[Indicates that there was a runtime failure while providing an instance.
   2293 
   2294  @author kevinb (a] google.com (Kevin Bourrillion)
   2295  @author jessewilson (a] google.com (Jesse Wilson)
   2296  @since 2.0]]>
   2297     </doc>
   2298   </class>
   2299   <!-- end class com.google.inject.ProvisionException -->
   2300   <!-- start interface com.google.inject.Scope -->
   2301   <interface name="Scope"    abstract="true"
   2302     static="false" final="false" visibility="public"
   2303     deprecated="not deprecated">
   2304     <method name="scope" return="com.google.inject.Provider&lt;T&gt;"
   2305       abstract="false" native="false" synchronized="false"
   2306       static="false" final="false" visibility="public"
   2307       deprecated="not deprecated">
   2308       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   2309       <param name="unscoped" type="com.google.inject.Provider&lt;T&gt;"/>
   2310       <doc>
   2311       <![CDATA[Scopes a provider. The returned provider returns objects from this scope.
   2312  If an object does not exist in this scope, the provider can use the given
   2313  unscoped provider to retrieve one.
   2314 
   2315  <p>Scope implementations are strongly encouraged to override
   2316  {@link Object#toString} in the returned provider and include the backing
   2317  provider's {@code toString()} output.
   2318 
   2319  @param key binding key
   2320  @param unscoped locates an instance when one doesn't already exist in this
   2321   scope.
   2322  @return a new provider which only delegates to the given unscoped provider
   2323   when an instance of the requested object doesn't already exist in this
   2324   scope]]>
   2325       </doc>
   2326     </method>
   2327     <method name="toString" return="java.lang.String"
   2328       abstract="false" native="false" synchronized="false"
   2329       static="false" final="false" visibility="public"
   2330       deprecated="not deprecated">
   2331       <doc>
   2332       <![CDATA[A short but useful description of this scope.  For comparison, the standard
   2333  scopes that ship with guice use the descriptions
   2334  {@code "Scopes.SINGLETON"}, {@code "ServletScopes.SESSION"} and
   2335  {@code "ServletScopes.REQUEST"}.]]>
   2336       </doc>
   2337     </method>
   2338     <doc>
   2339     <![CDATA[A scope is a level of visibility that instances provided by Guice may have.
   2340  By default, an instance created by the {@link Injector} has <i>no scope</i>,
   2341  meaning it has no state from the framework's perspective -- the
   2342  {@code Injector} creates it, injects it once into the class that required it,
   2343  and then immediately forgets it. Associating a scope with a particular
   2344  binding allows the created instance to be "remembered" and possibly used
   2345  again for other injections.
   2346 
   2347  <p>An example of a scope is {@link Scopes#SINGLETON}.
   2348 
   2349  @author crazybob (a] google.com (Bob Lee)]]>
   2350     </doc>
   2351   </interface>
   2352   <!-- end interface com.google.inject.Scope -->
   2353   <!-- start class com.google.inject.ScopeAnnotation -->
   2354   <class name="ScopeAnnotation"    abstract="true"
   2355     static="false" final="false" visibility="public"
   2356     deprecated="not deprecated">
   2357     <implements name="java.lang.annotation.Annotation"/>
   2358     <doc>
   2359     <![CDATA[Annotates annotations which are used for scoping. Only one such annotation
   2360  may apply to a single implementation class. You must also annotate scope
   2361  annotations with {@code @Retention(RUNTIME)}. For example:
   2362 
   2363  <pre>
   2364    {@code @}Retention(RUNTIME)
   2365    {@code @}Target(TYPE, METHOD)
   2366    {@code @}ScopeAnnotation
   2367    public {@code @}interface SessionScoped {}
   2368  </pre>
   2369 
   2370  @author crazybob (a] google.com (Bob Lee)]]>
   2371     </doc>
   2372   </class>
   2373   <!-- end class com.google.inject.ScopeAnnotation -->
   2374   <!-- start class com.google.inject.Scopes -->
   2375   <class name="Scopes" extends="java.lang.Object"
   2376     abstract="false"
   2377     static="false" final="false" visibility="public"
   2378     deprecated="not deprecated">
   2379     <method name="isSingleton" return="boolean"
   2380       abstract="false" native="false" synchronized="false"
   2381       static="true" final="false" visibility="public"
   2382       deprecated="not deprecated">
   2383       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   2384       <doc>
   2385       <![CDATA[Returns true if {@code binding} is singleton-scoped. If the binding is a {@link
   2386  com.google.inject.spi.LinkedKeyBinding linked key binding} and belongs to an injector (ie. it
   2387  was retrieved via {@link Injector#getBinding Injector.getBinding()}), then this method will
   2388  also true if the target binding is singleton-scoped.
   2389 
   2390  @since 3.0]]>
   2391       </doc>
   2392     </method>
   2393     <field name="SINGLETON" type="com.google.inject.Scope"
   2394       transient="false" volatile="false"
   2395       static="true" final="true" visibility="public"
   2396       deprecated="not deprecated">
   2397       <doc>
   2398       <![CDATA[One instance per {@link Injector}. Also see {@code @}{@link Singleton}.]]>
   2399       </doc>
   2400     </field>
   2401     <field name="NO_SCOPE" type="com.google.inject.Scope"
   2402       transient="false" volatile="false"
   2403       static="true" final="true" visibility="public"
   2404       deprecated="not deprecated">
   2405       <doc>
   2406       <![CDATA[No scope; the same as not applying any scope at all.  Each time the
   2407  Injector obtains an instance of an object with "no scope", it injects this
   2408  instance then immediately forgets it.  When the next request for the same
   2409  binding arrives it will need to obtain the instance over again.
   2410 
   2411  <p>This exists only in case a class has been annotated with a scope
   2412  annotation such as {@link Singleton @Singleton}, and you need to override
   2413  this to "no scope" in your binding.
   2414 
   2415  @since 2.0]]>
   2416       </doc>
   2417     </field>
   2418     <doc>
   2419     <![CDATA[Built-in scope implementations.
   2420 
   2421  @author crazybob (a] google.com (Bob Lee)]]>
   2422     </doc>
   2423   </class>
   2424   <!-- end class com.google.inject.Scopes -->
   2425   <!-- start class com.google.inject.Singleton -->
   2426   <class name="Singleton"    abstract="true"
   2427     static="false" final="false" visibility="public"
   2428     deprecated="not deprecated">
   2429     <implements name="java.lang.annotation.Annotation"/>
   2430     <doc>
   2431     <![CDATA[Apply this to implementation classes when you want only one instance
   2432  (per {@link Injector}) to be reused for all injections for that binding.
   2433 
   2434  @author crazybob (a] google.com (Bob Lee)]]>
   2435     </doc>
   2436   </class>
   2437   <!-- end class com.google.inject.Singleton -->
   2438   <!-- start class com.google.inject.Stage -->
   2439   <class name="Stage" extends="java.lang.Enum&lt;com.google.inject.Stage&gt;"
   2440     abstract="false"
   2441     static="false" final="true" visibility="public"
   2442     deprecated="not deprecated">
   2443     <method name="values" return="com.google.inject.Stage[]"
   2444       abstract="false" native="false" synchronized="false"
   2445       static="true" final="false" visibility="public"
   2446       deprecated="not deprecated">
   2447     </method>
   2448     <method name="valueOf" return="com.google.inject.Stage"
   2449       abstract="false" native="false" synchronized="false"
   2450       static="true" final="false" visibility="public"
   2451       deprecated="not deprecated">
   2452       <param name="name" type="java.lang.String"/>
   2453     </method>
   2454     <doc>
   2455     <![CDATA[The stage we're running in.
   2456 
   2457  @author crazybob (a] google.com (Bob Lee)]]>
   2458     </doc>
   2459   </class>
   2460   <!-- end class com.google.inject.Stage -->
   2461   <!-- start class com.google.inject.TypeLiteral -->
   2462   <class name="TypeLiteral" extends="java.lang.Object"
   2463     abstract="false"
   2464     static="false" final="false" visibility="public"
   2465     deprecated="not deprecated">
   2466     <constructor name="TypeLiteral"
   2467       static="false" final="false" visibility="protected"
   2468       deprecated="not deprecated">
   2469       <doc>
   2470       <![CDATA[Constructs a new type literal. Derives represented class from type
   2471  parameter.
   2472 
   2473  <p>Clients create an empty anonymous subclass. Doing so embeds the type
   2474  parameter in the anonymous class's type hierarchy so we can reconstitute it
   2475  at runtime despite erasure.]]>
   2476       </doc>
   2477     </constructor>
   2478     <method name="getRawType" return="java.lang.Class&lt;? super T&gt;"
   2479       abstract="false" native="false" synchronized="false"
   2480       static="false" final="true" visibility="public"
   2481       deprecated="not deprecated">
   2482       <doc>
   2483       <![CDATA[Returns the raw (non-generic) type for this type.
   2484  
   2485  @since 2.0]]>
   2486       </doc>
   2487     </method>
   2488     <method name="getType" return="java.lang.reflect.Type"
   2489       abstract="false" native="false" synchronized="false"
   2490       static="false" final="true" visibility="public"
   2491       deprecated="not deprecated">
   2492       <doc>
   2493       <![CDATA[Gets underlying {@code Type} instance.]]>
   2494       </doc>
   2495     </method>
   2496     <method name="hashCode" return="int"
   2497       abstract="false" native="false" synchronized="false"
   2498       static="false" final="true" visibility="public"
   2499       deprecated="not deprecated">
   2500     </method>
   2501     <method name="equals" return="boolean"
   2502       abstract="false" native="false" synchronized="false"
   2503       static="false" final="true" visibility="public"
   2504       deprecated="not deprecated">
   2505       <param name="o" type="java.lang.Object"/>
   2506     </method>
   2507     <method name="toString" return="java.lang.String"
   2508       abstract="false" native="false" synchronized="false"
   2509       static="false" final="true" visibility="public"
   2510       deprecated="not deprecated">
   2511     </method>
   2512     <method name="get" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2513       abstract="false" native="false" synchronized="false"
   2514       static="true" final="false" visibility="public"
   2515       deprecated="not deprecated">
   2516       <param name="type" type="java.lang.reflect.Type"/>
   2517       <doc>
   2518       <![CDATA[Gets type literal for the given {@code Type} instance.]]>
   2519       </doc>
   2520     </method>
   2521     <method name="get" return="com.google.inject.TypeLiteral&lt;T&gt;"
   2522       abstract="false" native="false" synchronized="false"
   2523       static="true" final="false" visibility="public"
   2524       deprecated="not deprecated">
   2525       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   2526       <doc>
   2527       <![CDATA[Gets type literal for the given {@code Class} instance.]]>
   2528       </doc>
   2529     </method>
   2530     <method name="getSupertype" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2531       abstract="false" native="false" synchronized="false"
   2532       static="false" final="false" visibility="public"
   2533       deprecated="not deprecated">
   2534       <param name="supertype" type="java.lang.Class&lt;?&gt;"/>
   2535       <doc>
   2536       <![CDATA[Returns the generic form of {@code supertype}. For example, if this is {@code
   2537  ArrayList<String>}, this returns {@code Iterable<String>} given the input {@code
   2538  Iterable.class}.
   2539 
   2540  @param supertype a superclass of, or interface implemented by, this.
   2541  @since 2.0]]>
   2542       </doc>
   2543     </method>
   2544     <method name="getFieldType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2545       abstract="false" native="false" synchronized="false"
   2546       static="false" final="false" visibility="public"
   2547       deprecated="not deprecated">
   2548       <param name="field" type="java.lang.reflect.Field"/>
   2549       <doc>
   2550       <![CDATA[Returns the resolved generic type of {@code field}.
   2551 
   2552  @param field a field defined by this or any superclass.
   2553  @since 2.0]]>
   2554       </doc>
   2555     </method>
   2556     <method name="getParameterTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   2557       abstract="false" native="false" synchronized="false"
   2558       static="false" final="false" visibility="public"
   2559       deprecated="not deprecated">
   2560       <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
   2561       <doc>
   2562       <![CDATA[Returns the resolved generic parameter types of {@code methodOrConstructor}.
   2563 
   2564  @param methodOrConstructor a method or constructor defined by this or any supertype.
   2565  @since 2.0]]>
   2566       </doc>
   2567     </method>
   2568     <method name="getExceptionTypes" return="java.util.List&lt;com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   2569       abstract="false" native="false" synchronized="false"
   2570       static="false" final="false" visibility="public"
   2571       deprecated="not deprecated">
   2572       <param name="methodOrConstructor" type="java.lang.reflect.Member"/>
   2573       <doc>
   2574       <![CDATA[Returns the resolved generic exception types thrown by {@code constructor}.
   2575 
   2576  @param methodOrConstructor a method or constructor defined by this or any supertype.
   2577  @since 2.0]]>
   2578       </doc>
   2579     </method>
   2580     <method name="getReturnType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2581       abstract="false" native="false" synchronized="false"
   2582       static="false" final="false" visibility="public"
   2583       deprecated="not deprecated">
   2584       <param name="method" type="java.lang.reflect.Method"/>
   2585       <doc>
   2586       <![CDATA[Returns the resolved generic return type of {@code method}.
   2587 
   2588  @param method a method defined by this or any supertype.
   2589  @since 2.0]]>
   2590       </doc>
   2591     </method>
   2592     <doc>
   2593     <![CDATA[Represents a generic type {@code T}. Java doesn't yet provide a way to
   2594  represent generic types, so this class does. Forces clients to create a
   2595  subclass of this class which enables retrieval the type information even at
   2596  runtime.
   2597 
   2598  <p>For example, to create a type literal for {@code List<String>}, you can
   2599  create an empty anonymous inner class:
   2600 
   2601  <p>
   2602  {@code TypeLiteral<List<String>> list = new TypeLiteral<List<String>>() {};}
   2603 
   2604  <p>Along with modeling generic types, this class can resolve type parameters.
   2605  For example, to figure out what type {@code keySet()} returns on a {@code
   2606  Map<Integer, String>}, use this code:<pre>   {@code
   2607 
   2608    TypeLiteral<Map<Integer, String>> mapType
   2609        = new TypeLiteral<Map<Integer, String>>() {};
   2610    TypeLiteral<?> keySetType
   2611        = mapType.getReturnType(Map.class.getMethod("keySet"));
   2612    System.out.println(keySetType); // prints "Set<Integer>"}</pre>
   2613 
   2614  @author crazybob (a] google.com (Bob Lee)
   2615  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2616     </doc>
   2617   </class>
   2618   <!-- end class com.google.inject.TypeLiteral -->
   2619 </package>
   2620 <package name="com.google.inject.assistedinject">
   2621   <!-- start class com.google.inject.assistedinject.Assisted -->
   2622   <class name="Assisted"    abstract="true"
   2623     static="false" final="false" visibility="public"
   2624     deprecated="not deprecated">
   2625     <implements name="java.lang.annotation.Annotation"/>
   2626     <doc>
   2627     <![CDATA[Annotates an injected parameter or field whose value comes from an argument to a factory method.
   2628 
   2629  @author jmourits (a] google.com (Jerome Mourits)
   2630  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2631     </doc>
   2632   </class>
   2633   <!-- end class com.google.inject.assistedinject.Assisted -->
   2634   <!-- start class com.google.inject.assistedinject.AssistedInject -->
   2635   <class name="AssistedInject"    abstract="true"
   2636     static="false" final="false" visibility="public"
   2637     deprecated="not deprecated">
   2638     <implements name="java.lang.annotation.Annotation"/>
   2639     <doc>
   2640     <![CDATA[<p>
   2641  When used in tandem with {@link FactoryModuleBuilder}, constructors annotated with 
   2642  {@code @AssistedInject} indicate that multiple constructors can be injected, each with different
   2643  parameters. AssistedInject annotations should not be mixed with {@literal @}{@link Inject}
   2644  annotations. The assisted parameters must exactly match one corresponding factory method within
   2645  the factory interface, but the parameters do not need to be in the same order. Constructors
   2646  annotated with AssistedInject <b>are</b> created by Guice and receive all the benefits
   2647  (such as AOP).
   2648  
   2649  <p>
   2650  <strong>Obsolete Usage:</strong> When used in tandem with {@link FactoryProvider}, constructors
   2651  annotated with {@code @AssistedInject} trigger a "backwards compatibility mode". The assisted
   2652  parameters must exactly match one corresponding factory method within the factory interface and
   2653  all must be in the same order as listed in the factory. In this backwards compatable mode,
   2654  constructors annotated with AssistedInject <b>are not</b> created by Guice and thus receive
   2655  none of the benefits.
   2656  
   2657  <p>
   2658  Constructor parameters must be either supplied by the factory interface and marked with
   2659  <code>@Assisted</code>, or they must be injectable.
   2660  
   2661  @author jmourits (a] google.com (Jerome Mourits)
   2662  @author jessewilson (a] google.com (Jesse Wilson)]]>
   2663     </doc>
   2664   </class>
   2665   <!-- end class com.google.inject.assistedinject.AssistedInject -->
   2666   <!-- start interface com.google.inject.assistedinject.AssistedInjectBinding -->
   2667   <interface name="AssistedInjectBinding"    abstract="true"
   2668     static="false" final="false" visibility="public"
   2669     deprecated="not deprecated">
   2670     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   2671       abstract="false" native="false" synchronized="false"
   2672       static="false" final="false" visibility="public"
   2673       deprecated="not deprecated">
   2674       <doc>
   2675       <![CDATA[Returns the {@link Key} for the factory binding.]]>
   2676       </doc>
   2677     </method>
   2678     <method name="getAssistedMethods" return="java.util.Collection&lt;com.google.inject.assistedinject.AssistedMethod&gt;"
   2679       abstract="false" native="false" synchronized="false"
   2680       static="false" final="false" visibility="public"
   2681       deprecated="not deprecated">
   2682       <doc>
   2683       <![CDATA[Returns an {@link AssistedMethod} for each method in the factory.]]>
   2684       </doc>
   2685     </method>
   2686     <doc>
   2687     <![CDATA[A binding for a factory created by FactoryModuleBuilder.
   2688  
   2689  @param <T> The fully qualified type of the factory.
   2690   
   2691  @since 3.0
   2692  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2693     </doc>
   2694   </interface>
   2695   <!-- end interface com.google.inject.assistedinject.AssistedInjectBinding -->
   2696   <!-- start interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
   2697   <interface name="AssistedInjectTargetVisitor"    abstract="true"
   2698     static="false" final="false" visibility="public"
   2699     deprecated="not deprecated">
   2700     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   2701     <method name="visit" return="V"
   2702       abstract="false" native="false" synchronized="false"
   2703       static="false" final="false" visibility="public"
   2704       deprecated="not deprecated">
   2705       <param name="assistedInjectBinding" type="com.google.inject.assistedinject.AssistedInjectBinding&lt;? extends T&gt;"/>
   2706       <doc>
   2707       <![CDATA[Visits an {@link AssistedInjectBinding} created through {@link FactoryModuleBuilder}.]]>
   2708       </doc>
   2709     </method>
   2710     <doc>
   2711     <![CDATA[A visitor for the AssistedInject extension.
   2712  <p>
   2713  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   2714  {@link FactoryModuleBuilder} will be visited through this interface.
   2715 
   2716  @since 3.0
   2717  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2718     </doc>
   2719   </interface>
   2720   <!-- end interface com.google.inject.assistedinject.AssistedInjectTargetVisitor -->
   2721   <!-- start interface com.google.inject.assistedinject.AssistedMethod -->
   2722   <interface name="AssistedMethod"    abstract="true"
   2723     static="false" final="false" visibility="public"
   2724     deprecated="not deprecated">
   2725     <method name="getFactoryMethod" return="java.lang.reflect.Method"
   2726       abstract="false" native="false" synchronized="false"
   2727       static="false" final="false" visibility="public"
   2728       deprecated="not deprecated">
   2729       <doc>
   2730       <![CDATA[Returns the factory method that is being assisted.]]>
   2731       </doc>
   2732     </method>
   2733     <method name="getImplementationType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   2734       abstract="false" native="false" synchronized="false"
   2735       static="false" final="false" visibility="public"
   2736       deprecated="not deprecated">
   2737       <doc>
   2738       <![CDATA[Returns the implementation type that will be created when the method is
   2739  used.]]>
   2740       </doc>
   2741     </method>
   2742     <method name="getImplementationConstructor" return="java.lang.reflect.Constructor&lt;?&gt;"
   2743       abstract="false" native="false" synchronized="false"
   2744       static="false" final="false" visibility="public"
   2745       deprecated="not deprecated">
   2746       <doc>
   2747       <![CDATA[Returns the constructor that will be used to construct instances of the 
   2748  implementation.]]>
   2749       </doc>
   2750     </method>
   2751     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   2752       abstract="false" native="false" synchronized="false"
   2753       static="false" final="false" visibility="public"
   2754       deprecated="not deprecated">
   2755       <doc>
   2756       <![CDATA[Returns all non-assisted dependencies required to construct and inject
   2757  the implementation.]]>
   2758       </doc>
   2759     </method>
   2760     <doc>
   2761     <![CDATA[Details about how a method in an assisted inject factory will be assisted.
   2762  
   2763  @since 3.0
   2764  @author ramakrishna (a] google.com (Ramakrishna Rajanna)]]>
   2765     </doc>
   2766   </interface>
   2767   <!-- end interface com.google.inject.assistedinject.AssistedMethod -->
   2768   <!-- start class com.google.inject.assistedinject.FactoryModuleBuilder -->
   2769   <class name="FactoryModuleBuilder" extends="java.lang.Object"
   2770     abstract="false"
   2771     static="false" final="true" visibility="public"
   2772     deprecated="not deprecated">
   2773     <constructor name="FactoryModuleBuilder"
   2774       static="false" final="false" visibility="public"
   2775       deprecated="not deprecated">
   2776     </constructor>
   2777     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2778       abstract="false" native="false" synchronized="false"
   2779       static="false" final="false" visibility="public"
   2780       deprecated="not deprecated">
   2781       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2782       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2783       <doc>
   2784       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2785       </doc>
   2786     </method>
   2787     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2788       abstract="false" native="false" synchronized="false"
   2789       static="false" final="false" visibility="public"
   2790       deprecated="not deprecated">
   2791       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2792       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2793       <doc>
   2794       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2795       </doc>
   2796     </method>
   2797     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2798       abstract="false" native="false" synchronized="false"
   2799       static="false" final="false" visibility="public"
   2800       deprecated="not deprecated">
   2801       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2802       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2803       <doc>
   2804       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2805       </doc>
   2806     </method>
   2807     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2808       abstract="false" native="false" synchronized="false"
   2809       static="false" final="false" visibility="public"
   2810       deprecated="not deprecated">
   2811       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2812       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2813       <doc>
   2814       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2815       </doc>
   2816     </method>
   2817     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2818       abstract="false" native="false" synchronized="false"
   2819       static="false" final="false" visibility="public"
   2820       deprecated="not deprecated">
   2821       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2822       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2823       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2824       <doc>
   2825       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2826       </doc>
   2827     </method>
   2828     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2829       abstract="false" native="false" synchronized="false"
   2830       static="false" final="false" visibility="public"
   2831       deprecated="not deprecated">
   2832       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2833       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2834       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2835       <doc>
   2836       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2837       </doc>
   2838     </method>
   2839     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2840       abstract="false" native="false" synchronized="false"
   2841       static="false" final="false" visibility="public"
   2842       deprecated="not deprecated">
   2843       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2844       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2845       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2846       <doc>
   2847       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2848       </doc>
   2849     </method>
   2850     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2851       abstract="false" native="false" synchronized="false"
   2852       static="false" final="false" visibility="public"
   2853       deprecated="not deprecated">
   2854       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2855       <param name="annotation" type="java.lang.annotation.Annotation"/>
   2856       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2857       <doc>
   2858       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2859       </doc>
   2860     </method>
   2861     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2862       abstract="false" native="false" synchronized="false"
   2863       static="false" final="false" visibility="public"
   2864       deprecated="not deprecated">
   2865       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2866       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2867       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2868       <doc>
   2869       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2870       </doc>
   2871     </method>
   2872     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2873       abstract="false" native="false" synchronized="false"
   2874       static="false" final="false" visibility="public"
   2875       deprecated="not deprecated">
   2876       <param name="source" type="java.lang.Class&lt;T&gt;"/>
   2877       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2878       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2879       <doc>
   2880       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2881       </doc>
   2882     </method>
   2883     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2884       abstract="false" native="false" synchronized="false"
   2885       static="false" final="false" visibility="public"
   2886       deprecated="not deprecated">
   2887       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2888       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2889       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2890       <doc>
   2891       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2892       </doc>
   2893     </method>
   2894     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2895       abstract="false" native="false" synchronized="false"
   2896       static="false" final="false" visibility="public"
   2897       deprecated="not deprecated">
   2898       <param name="source" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   2899       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   2900       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2901       <doc>
   2902       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2903       </doc>
   2904     </method>
   2905     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2906       abstract="false" native="false" synchronized="false"
   2907       static="false" final="false" visibility="public"
   2908       deprecated="not deprecated">
   2909       <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
   2910       <param name="target" type="java.lang.Class&lt;? extends T&gt;"/>
   2911       <doc>
   2912       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2913       </doc>
   2914     </method>
   2915     <method name="implement" return="com.google.inject.assistedinject.FactoryModuleBuilder"
   2916       abstract="false" native="false" synchronized="false"
   2917       static="false" final="false" visibility="public"
   2918       deprecated="not deprecated">
   2919       <param name="source" type="com.google.inject.Key&lt;T&gt;"/>
   2920       <param name="target" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   2921       <doc>
   2922       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2923       </doc>
   2924     </method>
   2925     <method name="build" return="com.google.inject.Module"
   2926       abstract="false" native="false" synchronized="false"
   2927       static="false" final="false" visibility="public"
   2928       deprecated="not deprecated">
   2929       <param name="factoryInterface" type="java.lang.Class&lt;F&gt;"/>
   2930       <doc>
   2931       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2932       </doc>
   2933     </method>
   2934     <method name="build" return="com.google.inject.Module"
   2935       abstract="false" native="false" synchronized="false"
   2936       static="false" final="false" visibility="public"
   2937       deprecated="not deprecated">
   2938       <param name="factoryInterface" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
   2939       <doc>
   2940       <![CDATA[See the factory configuration examples at {@link FactoryModuleBuilder}.]]>
   2941       </doc>
   2942     </method>
   2943     <method name="build" return="com.google.inject.Module"
   2944       abstract="false" native="false" synchronized="false"
   2945       static="false" final="false" visibility="public"
   2946       deprecated="not deprecated">
   2947       <param name="factoryInterface" type="com.google.inject.Key&lt;F&gt;"/>
   2948     </method>
   2949     <doc>
   2950     <![CDATA[Provides a factory that combines the caller's arguments with injector-supplied values to
   2951  construct objects.
   2952 
   2953  <h3>Defining a factory</h3>
   2954  Create an interface whose methods return the constructed type, or any of its supertypes. The
   2955  method's parameters are the arguments required to build the constructed type.
   2956 
   2957  <pre>public interface PaymentFactory {
   2958    Payment create(Date startDate, Money amount);
   2959  }</pre>
   2960 
   2961  You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
   2962  or <i>newPayment</i>.
   2963 
   2964  <h3>Creating a type that accepts factory parameters</h3>
   2965  {@code constructedType} is a concrete class with an {@literal @}{@link com.google.inject.Inject
   2966  Inject}-annotated constructor. In addition to injector-supplied parameters, the constructor
   2967  should have parameters that match each of the factory method's parameters. Each factory-supplied
   2968  parameter requires an {@literal @}{@link Assisted} annotation. This serves to document that the
   2969  parameter is not bound by your application's modules.
   2970 
   2971  <pre>public class RealPayment implements Payment {
   2972    {@literal @}Inject
   2973    public RealPayment(
   2974       CreditService creditService,
   2975       AuthService authService,
   2976       <strong>{@literal @}Assisted Date startDate</strong>,
   2977       <strong>{@literal @}Assisted Money amount</strong>) {
   2978      ...
   2979    }
   2980  }</pre>
   2981  
   2982  <h3>Multiple factory methods for the same type</h3>
   2983  If the factory contains many methods that return the same type, you can create multiple
   2984  constructors in your concrete class, each constructor marked with with
   2985  {@literal @}{@link AssistedInject}, in order to match the different parameters types of the
   2986  factory methods. 
   2987  
   2988  <pre>public interface PaymentFactory {
   2989     Payment create(Date startDate, Money amount);
   2990     Payment createWithoutDate(Money amount);
   2991  }
   2992  
   2993  public class RealPayment implements Payment {
   2994   {@literal @}AssistedInject
   2995    public RealPayment(
   2996       CreditService creditService,
   2997       AuthService authService,
   2998      <strong>{@literal @}Assisted Date startDate</strong>,
   2999      <strong>{@literal @}Assisted Money amount</strong>) {
   3000      ...
   3001    }
   3002    
   3003   {@literal @}AssistedInject
   3004    public RealPayment(
   3005       CreditService creditService,
   3006       AuthService authService,
   3007      <strong>{@literal @}Assisted Money amount</strong>) {
   3008      ...
   3009    }   
   3010  }</pre> 
   3011 
   3012  <h3>Configuring simple factories</h3>
   3013  In your {@link Module module}, install a {@code FactoryModuleBuilder} that creates the
   3014  factory:
   3015 
   3016  <pre>install(new FactoryModuleBuilder()
   3017      .implement(Payment.class, RealPayment.class)
   3018      .build(PaymentFactory.class);</pre>
   3019 
   3020  As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
   3021  factory cannot be used until the injector has been initialized.
   3022  
   3023  <h3>Configuring complex factories</h3>
   3024  Factories can create an arbitrary number of objects, one per each method.  Each factory
   3025  method can be configured using <code>.implement</code>.
   3026 
   3027  <pre>public interface OrderFactory {
   3028     Payment create(Date startDate, Money amount);
   3029     Shipment create(Customer customer, Item item);
   3030     Receipt create(Payment payment, Shipment shipment);
   3031  }
   3032  
   3033  [...]
   3034  
   3035  install(new FactoryModuleBuilder()
   3036      .implement(Payment.class, RealPayment.class)
   3037      // excluding .implement for Shipment means the implementation class
   3038      // will be 'Shipment' itself, which is legal if it's not an interface.
   3039      .implement(Receipt.class, RealReceipt.class)
   3040      .build(OrderFactory.class);</pre>
   3041  </pre>
   3042 
   3043  <h3>Using the factory</h3>
   3044  Inject your factory into your application classes. When you use the factory, your arguments
   3045  will be combined with values from the injector to construct an instance.
   3046 
   3047  <pre>public class PaymentAction {
   3048    {@literal @}Inject private PaymentFactory paymentFactory;
   3049 
   3050    public void doPayment(Money amount) {
   3051      Payment payment = paymentFactory.create(new Date(), amount);
   3052      payment.apply();
   3053    }
   3054  }</pre>
   3055 
   3056  <h3>Making parameter types distinct</h3>
   3057  The types of the factory method's parameters must be distinct. To use multiple parameters of
   3058  the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
   3059  parameters. The names must be applied to the factory method's parameters:
   3060 
   3061  <pre>public interface PaymentFactory {
   3062    Payment create(
   3063        <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3064        <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3065        Money amount);
   3066  } </pre>
   3067 
   3068  ...and to the concrete type's constructor parameters:
   3069 
   3070  <pre>public class RealPayment implements Payment {
   3071    {@literal @}Inject
   3072    public RealPayment(
   3073       CreditService creditService,
   3074       AuthService authService,
   3075       <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3076       <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3077       <strong>{@literal @}Assisted</strong> Money amount) {
   3078      ...
   3079    }
   3080  }</pre>
   3081 
   3082  <h3>Values are created by Guice</h3>
   3083  Returned factories use child injectors to create values. The values are eligible for method
   3084  interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
   3085  returned.
   3086 
   3087  <h3>More configuration options</h3>
   3088  In addition to simply specifying an implementation class for any returned type, factories' return
   3089  values can be automatic or can be configured to use annotations:
   3090  <p/>
   3091  If you just want to return the types specified in the factory, do not configure any
   3092  implementations:
   3093 
   3094  <pre>public interface FruitFactory {
   3095    Apple getApple(Color color);
   3096  }
   3097  ...
   3098  protected void configure() {
   3099    install(new FactoryModuleBuilder().build(FruitFactory.class));
   3100  }</pre>
   3101 
   3102  Note that any type returned by the factory in this manner needs to be an implementation class.
   3103  <p/>
   3104  To return two different implementations for the same interface from your factory, use binding
   3105  annotations on your return types:
   3106 
   3107  <pre>interface CarFactory {
   3108    {@literal @}Named("fast") Car getFastCar(Color color);
   3109    {@literal @}Named("clean") Car getCleanCar(Color color);
   3110  }
   3111  ...
   3112  protected void configure() {
   3113    install(new FactoryModuleBuilder()
   3114        .implement(Car.class, Names.named("fast"), Porsche.class)
   3115        .implement(Car.class, Names.named("clean"), Prius.class)
   3116        .build(CarFactory.class));
   3117  }</pre>
   3118  
   3119  <h3>Implementation limitations</h3>
   3120  As a limitation of the implementation, it is prohibited to declare a factory method that
   3121  accepts a {@code Provider} as one of its arguments.
   3122 
   3123  @since 3.0
   3124  @author schmitt (a] google.com (Peter Schmitt)]]>
   3125     </doc>
   3126   </class>
   3127   <!-- end class com.google.inject.assistedinject.FactoryModuleBuilder -->
   3128   <!-- start class com.google.inject.assistedinject.FactoryProvider -->
   3129   <class name="FactoryProvider" extends="java.lang.Object"
   3130     abstract="false"
   3131     static="false" final="false" visibility="public"
   3132     deprecated="use {@link FactoryModuleBuilder} instead.">
   3133     <implements name="com.google.inject.Provider&lt;F&gt;"/>
   3134     <implements name="com.google.inject.spi.HasDependencies"/>
   3135     <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
   3136       abstract="false" native="false" synchronized="false"
   3137       static="true" final="false" visibility="public"
   3138       deprecated="not deprecated">
   3139       <param name="factoryType" type="java.lang.Class&lt;F&gt;"/>
   3140       <param name="implementationType" type="java.lang.Class&lt;?&gt;"/>
   3141     </method>
   3142     <method name="newFactory" return="com.google.inject.Provider&lt;F&gt;"
   3143       abstract="false" native="false" synchronized="false"
   3144       static="true" final="false" visibility="public"
   3145       deprecated="not deprecated">
   3146       <param name="factoryType" type="com.google.inject.TypeLiteral&lt;F&gt;"/>
   3147       <param name="implementationType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   3148     </method>
   3149     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   3150       abstract="false" native="false" synchronized="false"
   3151       static="false" final="false" visibility="public"
   3152       deprecated="not deprecated">
   3153     </method>
   3154     <method name="get" return="F"
   3155       abstract="false" native="false" synchronized="false"
   3156       static="false" final="false" visibility="public"
   3157       deprecated="not deprecated">
   3158     </method>
   3159     <doc>
   3160     <![CDATA[<strong>Obsolete.</strong> Prefer {@link FactoryModuleBuilder} for its more concise API and
   3161  additional capability.
   3162 
   3163  <p>Provides a factory that combines the caller's arguments with injector-supplied values to
   3164  construct objects.
   3165 
   3166  <h3>Defining a factory</h3>
   3167  Create an interface whose methods return the constructed type, or any of its supertypes. The
   3168  method's parameters are the arguments required to build the constructed type.
   3169  <pre>public interface PaymentFactory {
   3170    Payment create(Date startDate, Money amount);
   3171  }</pre>
   3172  You can name your factory methods whatever you like, such as <i>create</i>, <i>createPayment</i>
   3173  or <i>newPayment</i>.
   3174 
   3175  <h3>Creating a type that accepts factory parameters</h3>
   3176  {@code constructedType} is a concrete class with an {@literal @}{@link Inject}-annotated
   3177  constructor. In addition to injector-supplied parameters, the constructor should have
   3178  parameters that match each of the factory method's parameters. Each factory-supplied parameter
   3179  requires an {@literal @}{@link Assisted} annotation. This serves to document that the parameter
   3180  is not bound by your application's modules.
   3181  <pre>public class RealPayment implements Payment {
   3182    {@literal @}Inject
   3183    public RealPayment(
   3184       CreditService creditService,
   3185       AuthService authService,
   3186       <strong>{@literal @}Assisted Date startDate</strong>,
   3187       <strong>{@literal @}Assisted Money amount</strong>) {
   3188      ...
   3189    }
   3190  }</pre>
   3191  Any parameter that permits a null value should also be annotated {@code @Nullable}.
   3192 
   3193  <h3>Configuring factories</h3>
   3194  In your {@link com.google.inject.Module module}, bind the factory interface to the returned
   3195  factory:
   3196  <pre>bind(PaymentFactory.class).toProvider(
   3197      FactoryProvider.newFactory(PaymentFactory.class, RealPayment.class));</pre>
   3198  As a side-effect of this binding, Guice will inject the factory to initialize it for use. The
   3199  factory cannot be used until the injector has been initialized.
   3200 
   3201  <h3>Using the factory</h3>
   3202  Inject your factory into your application classes. When you use the factory, your arguments
   3203  will be combined with values from the injector to construct an instance.
   3204  <pre>public class PaymentAction {
   3205    {@literal @}Inject private PaymentFactory paymentFactory;
   3206 
   3207    public void doPayment(Money amount) {
   3208      Payment payment = paymentFactory.create(new Date(), amount);
   3209      payment.apply();
   3210    }
   3211  }</pre>
   3212 
   3213  <h3>Making parameter types distinct</h3>
   3214  The types of the factory method's parameters must be distinct. To use multiple parameters of
   3215  the same type, use a named {@literal @}{@link Assisted} annotation to disambiguate the
   3216  parameters. The names must be applied to the factory method's parameters:
   3217 
   3218  <pre>public interface PaymentFactory {
   3219    Payment create(
   3220        <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3221        <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3222        Money amount);
   3223  } </pre>
   3224  ...and to the concrete type's constructor parameters:
   3225  <pre>public class RealPayment implements Payment {
   3226    {@literal @}Inject
   3227    public RealPayment(
   3228       CreditService creditService,
   3229       AuthService authService,
   3230       <strong>{@literal @}Assisted("startDate")</strong> Date startDate,
   3231       <strong>{@literal @}Assisted("dueDate")</strong> Date dueDate,
   3232       <strong>{@literal @}Assisted</strong> Money amount) {
   3233      ...
   3234    }
   3235  }</pre>
   3236 
   3237  <h3>Values are created by Guice</h3>
   3238  Returned factories use child injectors to create values. The values are eligible for method
   3239  interception. In addition, {@literal @}{@literal Inject} members will be injected before they are
   3240  returned.
   3241 
   3242  <h3>Backwards compatibility using {@literal @}AssistedInject</h3>
   3243  Instead of the {@literal @}Inject annotation, you may annotate the constructed classes with
   3244  {@literal @}{@link AssistedInject}. This triggers a limited backwards-compatability mode.
   3245 
   3246  <p>Instead of matching factory method arguments to constructor parameters using their names, the
   3247  <strong>parameters are matched by their order</strong>. The first factory method argument is
   3248  used for the first {@literal @}Assisted constructor parameter, etc.. Annotation names have no
   3249  effect.
   3250 
   3251  <p>Returned values are <strong>not created by Guice</strong>. These types are not eligible for
   3252  method interception. They do receive post-construction member injection.
   3253 
   3254  @param <F> The factory interface
   3255 
   3256  @author jmourits (a] google.com (Jerome Mourits)
   3257  @author jessewilson (a] google.com (Jesse Wilson)
   3258  @author dtm (a] google.com (Daniel Martin)
   3259  
   3260  @deprecated use {@link FactoryModuleBuilder} instead.]]>
   3261     </doc>
   3262   </class>
   3263   <!-- end class com.google.inject.assistedinject.FactoryProvider -->
   3264 </package>
   3265 <package name="com.google.inject.binder">
   3266   <!-- start interface com.google.inject.binder.AnnotatedBindingBuilder -->
   3267   <interface name="AnnotatedBindingBuilder"    abstract="true"
   3268     static="false" final="false" visibility="public"
   3269     deprecated="not deprecated">
   3270     <implements name="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"/>
   3271     <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   3272       abstract="false" native="false" synchronized="false"
   3273       static="false" final="false" visibility="public"
   3274       deprecated="not deprecated">
   3275       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3276       <doc>
   3277       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3278       </doc>
   3279     </method>
   3280     <method name="annotatedWith" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   3281       abstract="false" native="false" synchronized="false"
   3282       static="false" final="false" visibility="public"
   3283       deprecated="not deprecated">
   3284       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3285       <doc>
   3286       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3287       </doc>
   3288     </method>
   3289     <doc>
   3290     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3291 
   3292  @author crazybob (a] google.com (Bob Lee)]]>
   3293     </doc>
   3294   </interface>
   3295   <!-- end interface com.google.inject.binder.AnnotatedBindingBuilder -->
   3296   <!-- start interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
   3297   <interface name="AnnotatedConstantBindingBuilder"    abstract="true"
   3298     static="false" final="false" visibility="public"
   3299     deprecated="not deprecated">
   3300     <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
   3301       abstract="false" native="false" synchronized="false"
   3302       static="false" final="false" visibility="public"
   3303       deprecated="not deprecated">
   3304       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3305       <doc>
   3306       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3307       </doc>
   3308     </method>
   3309     <method name="annotatedWith" return="com.google.inject.binder.ConstantBindingBuilder"
   3310       abstract="false" native="false" synchronized="false"
   3311       static="false" final="false" visibility="public"
   3312       deprecated="not deprecated">
   3313       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3314       <doc>
   3315       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3316       </doc>
   3317     </method>
   3318     <doc>
   3319     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3320 
   3321  @author crazybob (a] google.com (Bob Lee)]]>
   3322     </doc>
   3323   </interface>
   3324   <!-- end interface com.google.inject.binder.AnnotatedConstantBindingBuilder -->
   3325   <!-- start interface com.google.inject.binder.AnnotatedElementBuilder -->
   3326   <interface name="AnnotatedElementBuilder"    abstract="true"
   3327     static="false" final="false" visibility="public"
   3328     deprecated="not deprecated">
   3329     <method name="annotatedWith"
   3330       abstract="false" native="false" synchronized="false"
   3331       static="false" final="false" visibility="public"
   3332       deprecated="not deprecated">
   3333       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3334       <doc>
   3335       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3336       </doc>
   3337     </method>
   3338     <method name="annotatedWith"
   3339       abstract="false" native="false" synchronized="false"
   3340       static="false" final="false" visibility="public"
   3341       deprecated="not deprecated">
   3342       <param name="annotation" type="java.lang.annotation.Annotation"/>
   3343       <doc>
   3344       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3345       </doc>
   3346     </method>
   3347     <doc>
   3348     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3349 
   3350  @author jessewilson (a] google.com (Jesse Wilson)
   3351  @since 2.0]]>
   3352     </doc>
   3353   </interface>
   3354   <!-- end interface com.google.inject.binder.AnnotatedElementBuilder -->
   3355   <!-- start interface com.google.inject.binder.ConstantBindingBuilder -->
   3356   <interface name="ConstantBindingBuilder"    abstract="true"
   3357     static="false" final="false" visibility="public"
   3358     deprecated="not deprecated">
   3359     <method name="to"
   3360       abstract="false" native="false" synchronized="false"
   3361       static="false" final="false" visibility="public"
   3362       deprecated="not deprecated">
   3363       <param name="value" type="java.lang.String"/>
   3364       <doc>
   3365       <![CDATA[Binds constant to the given value.]]>
   3366       </doc>
   3367     </method>
   3368     <method name="to"
   3369       abstract="false" native="false" synchronized="false"
   3370       static="false" final="false" visibility="public"
   3371       deprecated="not deprecated">
   3372       <param name="value" type="int"/>
   3373       <doc>
   3374       <![CDATA[Binds constant to the given value.]]>
   3375       </doc>
   3376     </method>
   3377     <method name="to"
   3378       abstract="false" native="false" synchronized="false"
   3379       static="false" final="false" visibility="public"
   3380       deprecated="not deprecated">
   3381       <param name="value" type="long"/>
   3382       <doc>
   3383       <![CDATA[Binds constant to the given value.]]>
   3384       </doc>
   3385     </method>
   3386     <method name="to"
   3387       abstract="false" native="false" synchronized="false"
   3388       static="false" final="false" visibility="public"
   3389       deprecated="not deprecated">
   3390       <param name="value" type="boolean"/>
   3391       <doc>
   3392       <![CDATA[Binds constant to the given value.]]>
   3393       </doc>
   3394     </method>
   3395     <method name="to"
   3396       abstract="false" native="false" synchronized="false"
   3397       static="false" final="false" visibility="public"
   3398       deprecated="not deprecated">
   3399       <param name="value" type="double"/>
   3400       <doc>
   3401       <![CDATA[Binds constant to the given value.]]>
   3402       </doc>
   3403     </method>
   3404     <method name="to"
   3405       abstract="false" native="false" synchronized="false"
   3406       static="false" final="false" visibility="public"
   3407       deprecated="not deprecated">
   3408       <param name="value" type="float"/>
   3409       <doc>
   3410       <![CDATA[Binds constant to the given value.]]>
   3411       </doc>
   3412     </method>
   3413     <method name="to"
   3414       abstract="false" native="false" synchronized="false"
   3415       static="false" final="false" visibility="public"
   3416       deprecated="not deprecated">
   3417       <param name="value" type="short"/>
   3418       <doc>
   3419       <![CDATA[Binds constant to the given value.]]>
   3420       </doc>
   3421     </method>
   3422     <method name="to"
   3423       abstract="false" native="false" synchronized="false"
   3424       static="false" final="false" visibility="public"
   3425       deprecated="not deprecated">
   3426       <param name="value" type="char"/>
   3427       <doc>
   3428       <![CDATA[Binds constant to the given value.]]>
   3429       </doc>
   3430     </method>
   3431     <method name="to"
   3432       abstract="false" native="false" synchronized="false"
   3433       static="false" final="false" visibility="public"
   3434       deprecated="not deprecated">
   3435       <param name="value" type="byte"/>
   3436       <doc>
   3437       <![CDATA[Binds constant to the given value.
   3438  
   3439  @since 3.0]]>
   3440       </doc>
   3441     </method>
   3442     <method name="to"
   3443       abstract="false" native="false" synchronized="false"
   3444       static="false" final="false" visibility="public"
   3445       deprecated="not deprecated">
   3446       <param name="value" type="java.lang.Class&lt;?&gt;"/>
   3447       <doc>
   3448       <![CDATA[Binds constant to the given value.]]>
   3449       </doc>
   3450     </method>
   3451     <method name="to"
   3452       abstract="false" native="false" synchronized="false"
   3453       static="false" final="false" visibility="public"
   3454       deprecated="not deprecated">
   3455       <param name="value" type="E extends java.lang.Enum&lt;E&gt;"/>
   3456       <doc>
   3457       <![CDATA[Binds constant to the given value.]]>
   3458       </doc>
   3459     </method>
   3460     <doc>
   3461     <![CDATA[Binds to a constant value.]]>
   3462     </doc>
   3463   </interface>
   3464   <!-- end interface com.google.inject.binder.ConstantBindingBuilder -->
   3465   <!-- start interface com.google.inject.binder.LinkedBindingBuilder -->
   3466   <interface name="LinkedBindingBuilder"    abstract="true"
   3467     static="false" final="false" visibility="public"
   3468     deprecated="not deprecated">
   3469     <implements name="com.google.inject.binder.ScopedBindingBuilder"/>
   3470     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3471       abstract="false" native="false" synchronized="false"
   3472       static="false" final="false" visibility="public"
   3473       deprecated="not deprecated">
   3474       <param name="implementation" type="java.lang.Class&lt;? extends T&gt;"/>
   3475       <doc>
   3476       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3477       </doc>
   3478     </method>
   3479     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3480       abstract="false" native="false" synchronized="false"
   3481       static="false" final="false" visibility="public"
   3482       deprecated="not deprecated">
   3483       <param name="implementation" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   3484       <doc>
   3485       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3486       </doc>
   3487     </method>
   3488     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   3489       abstract="false" native="false" synchronized="false"
   3490       static="false" final="false" visibility="public"
   3491       deprecated="not deprecated">
   3492       <param name="targetKey" type="com.google.inject.Key&lt;? extends T&gt;"/>
   3493       <doc>
   3494       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3495       </doc>
   3496     </method>
   3497     <method name="toInstance"
   3498       abstract="false" native="false" synchronized="false"
   3499       static="false" final="false" visibility="public"
   3500       deprecated="not deprecated">
   3501       <param name="instance" type="T"/>
   3502       <doc>
   3503       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3504 
   3505  @see com.google.inject.Injector#injectMembers]]>
   3506       </doc>
   3507     </method>
   3508     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3509       abstract="false" native="false" synchronized="false"
   3510       static="false" final="false" visibility="public"
   3511       deprecated="not deprecated">
   3512       <param name="provider" type="com.google.inject.Provider&lt;? extends T&gt;"/>
   3513       <doc>
   3514       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3515 
   3516  @see com.google.inject.Injector#injectMembers]]>
   3517       </doc>
   3518     </method>
   3519     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3520       abstract="false" native="false" synchronized="false"
   3521       static="false" final="false" visibility="public"
   3522       deprecated="not deprecated">
   3523       <param name="providerType" type="java.lang.Class&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3524       <doc>
   3525       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3526       </doc>
   3527     </method>
   3528     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3529       abstract="false" native="false" synchronized="false"
   3530       static="false" final="false" visibility="public"
   3531       deprecated="not deprecated">
   3532       <param name="providerType" type="com.google.inject.TypeLiteral&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3533       <doc>
   3534       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3535       </doc>
   3536     </method>
   3537     <method name="toProvider" return="com.google.inject.binder.ScopedBindingBuilder"
   3538       abstract="false" native="false" synchronized="false"
   3539       static="false" final="false" visibility="public"
   3540       deprecated="not deprecated">
   3541       <param name="providerKey" type="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"/>
   3542       <doc>
   3543       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3544       </doc>
   3545     </method>
   3546     <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
   3547       abstract="false" native="false" synchronized="false"
   3548       static="false" final="false" visibility="public"
   3549       deprecated="not deprecated">
   3550       <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
   3551       <doc>
   3552       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3553  
   3554  @since 3.0]]>
   3555       </doc>
   3556     </method>
   3557     <method name="toConstructor" return="com.google.inject.binder.ScopedBindingBuilder"
   3558       abstract="false" native="false" synchronized="false"
   3559       static="false" final="false" visibility="public"
   3560       deprecated="not deprecated">
   3561       <param name="constructor" type="java.lang.reflect.Constructor&lt;S&gt;"/>
   3562       <param name="type" type="com.google.inject.TypeLiteral&lt;? extends S&gt;"/>
   3563       <doc>
   3564       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3565  
   3566  @since 3.0]]>
   3567       </doc>
   3568     </method>
   3569     <doc>
   3570     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3571 
   3572  @author crazybob (a] google.com (Bob Lee)]]>
   3573     </doc>
   3574   </interface>
   3575   <!-- end interface com.google.inject.binder.LinkedBindingBuilder -->
   3576   <!-- start interface com.google.inject.binder.ScopedBindingBuilder -->
   3577   <interface name="ScopedBindingBuilder"    abstract="true"
   3578     static="false" final="false" visibility="public"
   3579     deprecated="not deprecated">
   3580     <method name="in"
   3581       abstract="false" native="false" synchronized="false"
   3582       static="false" final="false" visibility="public"
   3583       deprecated="not deprecated">
   3584       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   3585       <doc>
   3586       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3587       </doc>
   3588     </method>
   3589     <method name="in"
   3590       abstract="false" native="false" synchronized="false"
   3591       static="false" final="false" visibility="public"
   3592       deprecated="not deprecated">
   3593       <param name="scope" type="com.google.inject.Scope"/>
   3594       <doc>
   3595       <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.]]>
   3596       </doc>
   3597     </method>
   3598     <method name="asEagerSingleton"
   3599       abstract="false" native="false" synchronized="false"
   3600       static="false" final="false" visibility="public"
   3601       deprecated="not deprecated">
   3602       <doc>
   3603       <![CDATA[Instructs the {@link com.google.inject.Injector} to eagerly initialize this
   3604  singleton-scoped binding upon creation. Useful for application
   3605  initialization logic.  See the EDSL examples at
   3606  {@link com.google.inject.Binder}.]]>
   3607       </doc>
   3608     </method>
   3609     <doc>
   3610     <![CDATA[See the EDSL examples at {@link com.google.inject.Binder}.
   3611 
   3612  @author crazybob (a] google.com (Bob Lee)]]>
   3613     </doc>
   3614   </interface>
   3615   <!-- end interface com.google.inject.binder.ScopedBindingBuilder -->
   3616 </package>
   3617 <package name="com.google.inject.grapher">
   3618   <!-- start interface com.google.inject.grapher.BindingEdge -->
   3619   <interface name="BindingEdge"    abstract="true"
   3620     static="false" final="false" visibility="public"
   3621     deprecated="not deprecated">
   3622     <method name="setType"
   3623       abstract="false" native="false" synchronized="false"
   3624       static="false" final="false" visibility="public"
   3625       deprecated="not deprecated">
   3626       <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/>
   3627     </method>
   3628     <doc>
   3629     <![CDATA[Interface for an edge that connects an interface to the type or instance
   3630  that is bound to implement it.
   3631 
   3632  @author phopkins (a] gmail.com (Pete Hopkins)
   3633 
   3634  @param <K> The type for node IDs.]]>
   3635     </doc>
   3636   </interface>
   3637   <!-- end interface com.google.inject.grapher.BindingEdge -->
   3638   <!-- start interface com.google.inject.grapher.BindingEdge.Factory -->
   3639   <interface name="BindingEdge.Factory"    abstract="true"
   3640     static="true" final="false" visibility="public"
   3641     deprecated="not deprecated">
   3642     <method name="newBindingEdge" return="T extends com.google.inject.grapher.BindingEdge&lt;K&gt;"
   3643       abstract="false" native="false" synchronized="false"
   3644       static="false" final="false" visibility="public"
   3645       deprecated="not deprecated">
   3646       <param name="fromId" type="K"/>
   3647       <param name="toId" type="K"/>
   3648       <doc>
   3649       <![CDATA[Creates a new {@link BindingEdge} instance and adds it to the graph.
   3650 
   3651  @param fromId Node ID for the interface node.
   3652  @param toId Node ID for the implementation (class or instance) node.
   3653  @return The newly created and added {@link BindingEdge}.]]>
   3654       </doc>
   3655     </method>
   3656     <doc>
   3657     <![CDATA[Factory interface for {@link BindingEdge}s. Renderer implementations will
   3658  need to provide an implementation for this.
   3659 
   3660  @param <K> The type for node IDs.
   3661  @param <T> The {@link BindingEdge} sub-type that this factory provides.]]>
   3662     </doc>
   3663   </interface>
   3664   <!-- end interface com.google.inject.grapher.BindingEdge.Factory -->
   3665   <!-- start class com.google.inject.grapher.BindingEdge.Type -->
   3666   <class name="BindingEdge.Type" extends="java.lang.Enum&lt;com.google.inject.grapher.BindingEdge.Type&gt;"
   3667     abstract="false"
   3668     static="true" final="true" visibility="public"
   3669     deprecated="not deprecated">
   3670     <method name="values" return="com.google.inject.grapher.BindingEdge.Type[]"
   3671       abstract="false" native="false" synchronized="false"
   3672       static="true" final="false" visibility="public"
   3673       deprecated="not deprecated">
   3674     </method>
   3675     <method name="valueOf" return="com.google.inject.grapher.BindingEdge.Type"
   3676       abstract="false" native="false" synchronized="false"
   3677       static="true" final="false" visibility="public"
   3678       deprecated="not deprecated">
   3679       <param name="name" type="java.lang.String"/>
   3680     </method>
   3681     <doc>
   3682     <![CDATA[Classification for what kind of binding this edge represents.]]>
   3683     </doc>
   3684   </class>
   3685   <!-- end class com.google.inject.grapher.BindingEdge.Type -->
   3686   <!-- start interface com.google.inject.grapher.DependencyEdge -->
   3687   <interface name="DependencyEdge"    abstract="true"
   3688     static="false" final="false" visibility="public"
   3689     deprecated="not deprecated">
   3690     <doc>
   3691     <![CDATA[Interface for an edge from a class or {@link InjectionPoint} to the
   3692  interface node that will satisfy the dependency.
   3693 
   3694  @author phopkins (a] gmail.com (Pete Hopkins)
   3695 
   3696  @param <K> The type for node IDs.]]>
   3697     </doc>
   3698   </interface>
   3699   <!-- end interface com.google.inject.grapher.DependencyEdge -->
   3700   <!-- start interface com.google.inject.grapher.DependencyEdge.Factory -->
   3701   <interface name="DependencyEdge.Factory"    abstract="true"
   3702     static="true" final="false" visibility="public"
   3703     deprecated="not deprecated">
   3704     <method name="newDependencyEdge" return="T extends com.google.inject.grapher.DependencyEdge&lt;K&gt;"
   3705       abstract="false" native="false" synchronized="false"
   3706       static="false" final="false" visibility="public"
   3707       deprecated="not deprecated">
   3708       <param name="fromId" type="K"/>
   3709       <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/>
   3710       <param name="toId" type="K"/>
   3711       <doc>
   3712       <![CDATA[Creates a new {@link DependencyEdge} and adds it to the graph.
   3713 
   3714  @param fromId The ID for the class or instance node that has the
   3715      dependency.
   3716  @param fromPoint The point where the dependency will be
   3717      {@literal @}{@link Inject}ed. 
   3718  @param toId The ID for the interface node that satisfies the dependency.]]>
   3719       </doc>
   3720     </method>
   3721     <doc>
   3722     <![CDATA[Factory interface for {@link DependencyEdge}s. Renderer implementations
   3723  will need to provide an implementation for this.
   3724 
   3725  @param <K> The type for node IDs.
   3726  @param <T> The {@link DependencyEdge} sub-type that this factory provides.]]>
   3727     </doc>
   3728   </interface>
   3729   <!-- end interface com.google.inject.grapher.DependencyEdge.Factory -->
   3730   <!-- start class com.google.inject.grapher.GrapherModule -->
   3731   <class name="GrapherModule" extends="com.google.inject.AbstractModule"
   3732     abstract="false"
   3733     static="false" final="false" visibility="public"
   3734     deprecated="not deprecated">
   3735     <constructor name="GrapherModule"
   3736       static="false" final="false" visibility="public"
   3737       deprecated="not deprecated">
   3738     </constructor>
   3739     <method name="configure"
   3740       abstract="false" native="false" synchronized="false"
   3741       static="false" final="false" visibility="protected"
   3742       deprecated="not deprecated">
   3743     </method>
   3744     <doc>
   3745     <![CDATA[Module for the common bindings for {@link InjectorGrapher}. You will also
   3746  need to bind a {@link Module} that satisfies the {@link Renderer}
   3747  dependency.
   3748  <p>
   3749  If you want to use subtypes of the node and edge classes, or a different
   3750  node ID type, you will need to override the {@link GraphingVisitor} binding
   3751  to specify the new type parameters. 
   3752 
   3753  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   3754     </doc>
   3755   </class>
   3756   <!-- end class com.google.inject.grapher.GrapherModule -->
   3757   <!-- start class com.google.inject.grapher.GraphingVisitor -->
   3758   <class name="GraphingVisitor" extends="java.lang.Object"
   3759     abstract="false"
   3760     static="false" final="false" visibility="public"
   3761     deprecated="not deprecated">
   3762     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.lang.Void&gt;"/>
   3763     <constructor name="GraphingVisitor" type="com.google.inject.grapher.NodeIdFactory&lt;K&gt;, com.google.inject.grapher.InterfaceNode.Factory&lt;K, N&gt;, com.google.inject.grapher.ImplementationNode.Factory&lt;K, M&gt;, com.google.inject.grapher.BindingEdge.Factory&lt;K, B&gt;, com.google.inject.grapher.DependencyEdge.Factory&lt;K, D&gt;, com.google.inject.grapher.NodeAliasFactory&lt;K&gt;"
   3764       static="false" final="false" visibility="public"
   3765       deprecated="not deprecated">
   3766     </constructor>
   3767     <method name="getClassNodeId" return="K"
   3768       abstract="false" native="false" synchronized="false"
   3769       static="false" final="true" visibility="protected"
   3770       deprecated="not deprecated">
   3771       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   3772       <doc>
   3773       <![CDATA[Helper method to return the standard node ID for the {@link Binding}'s
   3774  {@link Key}.
   3775  
   3776  @see NodeIdFactory#getClassNodeId(Key)]]>
   3777       </doc>
   3778     </method>
   3779     <method name="getInstanceNodeId" return="K"
   3780       abstract="false" native="false" synchronized="false"
   3781       static="false" final="true" visibility="protected"
   3782       deprecated="not deprecated">
   3783       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   3784       <doc>
   3785       <![CDATA[Helper method to return the instance node ID for the {@link Binding}'s
   3786  {@link Key}.
   3787  
   3788  @see NodeIdFactory#getInstanceNodeId(Key)]]>
   3789       </doc>
   3790     </method>
   3791     <method name="newInterfaceNode" return="N extends com.google.inject.grapher.InterfaceNode&lt;K&gt;"
   3792       abstract="false" native="false" synchronized="false"
   3793       static="false" final="false" visibility="protected"
   3794       deprecated="not deprecated">
   3795       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   3796       <doc>
   3797       <![CDATA[Creates and returns a new {@link InterfaceNode} object for the given
   3798  {@link Binding}.]]>
   3799       </doc>
   3800     </method>
   3801     <method name="newClassImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"
   3802       abstract="false" native="false" synchronized="false"
   3803       static="false" final="false" visibility="protected"
   3804       deprecated="not deprecated">
   3805       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   3806       <param name="constructorInjectionPoint" type="com.google.inject.spi.InjectionPoint"/>
   3807       <param name="memberInjectionPoints" type="java.util.Collection&lt;com.google.inject.spi.InjectionPoint&gt;"/>
   3808       <doc>
   3809       <![CDATA[Creates and returns a new {@link ImplementationNode} for the given
   3810  {@link Binding}, where the {@link Binding} is for a class that Guice
   3811  will instantiate, rather than a specific instance.]]>
   3812       </doc>
   3813     </method>
   3814     <method name="newInstanceImplementationNode" return="M extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"
   3815       abstract="false" native="false" synchronized="false"
   3816       static="false" final="false" visibility="protected"
   3817       deprecated="not deprecated">
   3818       <param name="binding" type="com.google.inject.Binding&lt;?&gt;"/>
   3819       <param name="instance" type="java.lang.Object"/>
   3820       <doc>
   3821       <![CDATA[Creates and returns a new {@link ImplementationNode} for the given
   3822  {@link Binding}, where the {@link Binding} is for an instance, rather than
   3823  a class.]]>
   3824       </doc>
   3825     </method>
   3826     <method name="newBindingEdge" return="B extends com.google.inject.grapher.BindingEdge&lt;K&gt;"
   3827       abstract="false" native="false" synchronized="false"
   3828       static="false" final="false" visibility="protected"
   3829       deprecated="not deprecated">
   3830       <param name="nodeId" type="K"/>
   3831       <param name="toId" type="K"/>
   3832       <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/>
   3833       <doc>
   3834       <![CDATA[Creates a new {@link BindingEdge} from the given node to the specified
   3835  node.
   3836 
   3837  @param nodeId ID of the {@link InterfaceNode} that binds to the other.
   3838  @param toId The node ID of a class or instance that is bound.
   3839  @param type The {@link BindingEdge.Type} of this binding.
   3840  @return The newly-created and added {@link BindingEdge}.]]>
   3841       </doc>
   3842     </method>
   3843     <method name="newDependencyEdges" return="java.util.Collection&lt;D&gt;"
   3844       abstract="false" native="false" synchronized="false"
   3845       static="false" final="false" visibility="protected"
   3846       deprecated="not deprecated">
   3847       <param name="nodeId" type="K"/>
   3848       <param name="node" type="M extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"/>
   3849       <param name="dependencies" type="java.util.Collection&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"/>
   3850       <doc>
   3851       <![CDATA[Adds {@link DependencyEdge}s to the graph for each of the provided
   3852  {@link Dependency}s. These will be from the given node ID to the
   3853  {@link Dependency}'s {@link Key}.
   3854  <p>
   3855  If a {@link Dependency} has an associated {@link InjectionPoint}, its
   3856  member will be added to the given {@link ImplementationNode} and the edge
   3857  will start at the {@link Member}.
   3858 
   3859  @see #newDependencyEdge(Object, InjectionPoint, Dependency)
   3860  
   3861  @param nodeId ID of the node that should be the tail of the
   3862      {@link DependencyEdge}s.
   3863  @param node An {@link ImplementationNode} to add {@link Member}s to.
   3864  @param dependencies {@link Collection} of {@link Dependency}s from the
   3865      {@link Binding}.
   3866  @return A {@link Collection} of the {@link DependencyEdge}s that were
   3867      added to the graph.]]>
   3868       </doc>
   3869     </method>
   3870     <method name="newDependencyEdge" return="D extends com.google.inject.grapher.DependencyEdge&lt;K&gt;"
   3871       abstract="false" native="false" synchronized="false"
   3872       static="false" final="false" visibility="protected"
   3873       deprecated="not deprecated">
   3874       <param name="nodeId" type="K"/>
   3875       <param name="injectionPoint" type="com.google.inject.spi.InjectionPoint"/>
   3876       <param name="dependency" type="com.google.inject.spi.Dependency&lt;?&gt;"/>
   3877       <doc>
   3878       <![CDATA[Creates a new {@link DependencyEdge} from the given node to a
   3879  {@link Dependency}.
   3880  <p>
   3881  This method takes more comprehensive parameters than strictly necessary
   3882  in case they would be useful to overriding implementations.
   3883 
   3884  @param nodeId ID of the {@link ImplementationNode} where the edges will start.
   3885  @param injectionPoint The {@link InjectionPoint} that gave rise to this
   3886      {@link Dependency}, if one exists. Used to figure out which
   3887      {@link Member} the edge should point from.
   3888  @param dependency The {@link Dependency} to represent with this edge.
   3889  @return The newly-created and added {@link DependencyEdge}.]]>
   3890       </doc>
   3891     </method>
   3892     <method name="visit" return="java.lang.Void"
   3893       abstract="false" native="false" synchronized="false"
   3894       static="false" final="false" visibility="public"
   3895       deprecated="not deprecated">
   3896       <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
   3897       <doc>
   3898       <![CDATA[Visitor for {@link ConstructorBinding}s. These are for classes that Guice
   3899  will instantiate to satisfy injection requests. We create a new
   3900  {@link ImplementationNode} for the class, then add edges to everything
   3901  that it depends on to be instantiated.
   3902 
   3903  @see #newClassImplementationNode(Binding, InjectionPoint, Collection)
   3904  @see #newDependencyEdges(Object, ImplementationNode, Collection)]]>
   3905       </doc>
   3906     </method>
   3907     <method name="visit" return="java.lang.Void"
   3908       abstract="false" native="false" synchronized="false"
   3909       static="false" final="false" visibility="public"
   3910       deprecated="not deprecated">
   3911       <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
   3912       <doc>
   3913       <![CDATA[Visitor for {@link ConvertedConstantBinding}. The {@link Binding}'s
   3914  {@link Key} will be of an annotated primitive type, and the value of
   3915  {@link ConvertedConstantBinding#getSourceKey()} will be of a
   3916  {@link String} with the same annotation.
   3917  <p>
   3918  We render this as an {@link InterfaceNode} that has a
   3919  {@link BindingEdge} to the source {@link Key}. That will then be rendered
   3920  by {@link #visit(InstanceBinding)} as an {@link InterfaceNode}
   3921  with a {@link BindingEdge} to the {@link String} instance.
   3922  
   3923  @see #newInterfaceNode(Binding)
   3924  @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]>
   3925       </doc>
   3926     </method>
   3927     <method name="visit" return="java.lang.Void"
   3928       abstract="false" native="false" synchronized="false"
   3929       static="false" final="false" visibility="public"
   3930       deprecated="not deprecated">
   3931       <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;?&gt;"/>
   3932       <doc>
   3933       <![CDATA[Currently not displayed on the graph.]]>
   3934       </doc>
   3935     </method>
   3936     <method name="visit" return="java.lang.Void"
   3937       abstract="false" native="false" synchronized="false"
   3938       static="false" final="false" visibility="public"
   3939       deprecated="not deprecated">
   3940       <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
   3941       <doc>
   3942       <![CDATA[Visitor for {@link InstanceBinding}. We render two nodes in this case: a
   3943  {@link InterfaceNode} for the binding's {@link Key}, and then an
   3944  {@link ImplementationNode} for the instance {@link Object} itself. We run
   3945  a binding node between them.
   3946  <p>
   3947  We then render any {@link DependencyEdge}s that the instance may have,
   3948  which come either from {@link InjectionPoint}s (method and field) on the
   3949  instance, or on {@link Dependency}s the instance declares through the
   3950  {@link HasDependencies} interface.
   3951  
   3952  @see #newInterfaceNode(Binding)
   3953  @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)
   3954  @see #newInstanceImplementationNode(Binding, Object)
   3955  @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]>
   3956       </doc>
   3957     </method>
   3958     <method name="visit" return="java.lang.Void"
   3959       abstract="false" native="false" synchronized="false"
   3960       static="false" final="false" visibility="public"
   3961       deprecated="not deprecated">
   3962       <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;?&gt;"/>
   3963       <doc>
   3964       <![CDATA[Visitor for {@link LinkedKeyBinding}. This is the standard {@link Binding}
   3965  you get from binding an interface class to an implementation class. We
   3966  create an {@link InterfaceNode}, then draw a {@link BindingEdge} to the
   3967  node of the implementing class.
   3968  
   3969  @see #newInterfaceNode(Binding)
   3970  @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]>
   3971       </doc>
   3972     </method>
   3973     <method name="visit" return="java.lang.Void"
   3974       abstract="false" native="false" synchronized="false"
   3975       static="false" final="false" visibility="public"
   3976       deprecated="not deprecated">
   3977       <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
   3978       <doc>
   3979       <![CDATA[Visitor for {@link ProviderBinding}. These {@link Binding}s arise from an
   3980  {@link InjectionPoint} for the {@link Provider} interface. Since this
   3981  isn't tremendously interesting information, we don't render this binding
   3982  on the graph, and instead let the {@link DependencyEdge} go straight from
   3983  the {@link InjectionPoint} to the node specified by
   3984  {@link ProviderBinding#getProvidedKey()}.
   3985  
   3986  @see NodeAliasFactory#newAlias(Object, Object)]]>
   3987       </doc>
   3988     </method>
   3989     <method name="visit" return="java.lang.Void"
   3990       abstract="false" native="false" synchronized="false"
   3991       static="false" final="false" visibility="public"
   3992       deprecated="not deprecated">
   3993       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
   3994       <doc>
   3995       <![CDATA[Same as {@link #visit(InstanceBinding)}, but the
   3996  {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}.
   3997  
   3998  @see #newInterfaceNode(Binding)
   3999  @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)
   4000  @see #newInstanceImplementationNode(Binding, Object)
   4001  @see #newDependencyEdges(Object, ImplementationNode, java.util.Collection)]]>
   4002       </doc>
   4003     </method>
   4004     <method name="visit" return="java.lang.Void"
   4005       abstract="false" native="false" synchronized="false"
   4006       static="false" final="false" visibility="public"
   4007       deprecated="not deprecated">
   4008       <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
   4009       <doc>
   4010       <![CDATA[Same as {@link #visit(LinkedKeyBinding)}, but the
   4011  {@link BindingEdge} is {@link BindingEdge.Type#PROVIDER}.
   4012  
   4013  @see #newInterfaceNode(Binding)
   4014  @see #newBindingEdge(Object, Object, com.google.inject.grapher.BindingEdge.Type)]]>
   4015       </doc>
   4016     </method>
   4017     <method name="visit" return="java.lang.Void"
   4018       abstract="false" native="false" synchronized="false"
   4019       static="false" final="false" visibility="public"
   4020       deprecated="not deprecated">
   4021       <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;?&gt;"/>
   4022       <doc>
   4023       <![CDATA[Currently not displayed on the graph.]]>
   4024       </doc>
   4025     </method>
   4026     <doc>
   4027     <![CDATA[{@link BindingTargetVisitor} that adds nodes and edges to the graph based on
   4028  the visited {@link Binding}.
   4029  <p>
   4030  This class is parameterized over the four graph element types
   4031  ({@link InterfaceNode}, {@link ImplementationNode}, {@link BindingEdge}, and
   4032  {@link DependencyEdge}) so that you can extend those interfaces and also
   4033  extend this class, and the helper methods will all return your new types.
   4034  
   4035  @author phopkins (a] gmail.com (Pete Hopkins)
   4036 
   4037  @param <K> The type for node IDs.
   4038  @param <N> Type for {@link InterfaceNode}s.
   4039  @param <M> Type for {@link ImplementationNode}.s
   4040  @param <B> Type for {@link BindingEdge}s.
   4041  @param <D> Type for {@link DependencyEdge}s.]]>
   4042     </doc>
   4043   </class>
   4044   <!-- end class com.google.inject.grapher.GraphingVisitor -->
   4045   <!-- start interface com.google.inject.grapher.ImplementationNode -->
   4046   <interface name="ImplementationNode"    abstract="true"
   4047     static="false" final="false" visibility="public"
   4048     deprecated="not deprecated">
   4049     <method name="setClassKey"
   4050       abstract="false" native="false" synchronized="false"
   4051       static="false" final="false" visibility="public"
   4052       deprecated="not deprecated">
   4053       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4054       <doc>
   4055       <![CDATA[Sets the {@link Key} that this node is for. Used when the node is
   4056  representing a class that Guice will instantiate.]]>
   4057       </doc>
   4058     </method>
   4059     <method name="setInstance"
   4060       abstract="false" native="false" synchronized="false"
   4061       static="false" final="false" visibility="public"
   4062       deprecated="not deprecated">
   4063       <param name="instance" type="java.lang.Object"/>
   4064       <doc>
   4065       <![CDATA[Sets the {@link Object} that's the already-created instance. Used when
   4066  this node is represeting the instance instead of a class.]]>
   4067       </doc>
   4068     </method>
   4069     <method name="setSource"
   4070       abstract="false" native="false" synchronized="false"
   4071       static="false" final="false" visibility="public"
   4072       deprecated="not deprecated">
   4073       <param name="source" type="java.lang.Object"/>
   4074     </method>
   4075     <method name="addMember"
   4076       abstract="false" native="false" synchronized="false"
   4077       static="false" final="false" visibility="public"
   4078       deprecated="not deprecated">
   4079       <param name="member" type="java.lang.reflect.Member"/>
   4080     </method>
   4081     <doc>
   4082     <![CDATA[Node for classes and instances that have {@link Dependency}s and are
   4083  bound to {@link InterfaceNode}s. These nodes will often have fields for
   4084  {@link Member}s that are {@link InjectionPoint}s.
   4085  
   4086  @see DependencyEdge
   4087 
   4088  @author phopkins (a] gmail.com (Pete Hopkins)
   4089 
   4090  @param <K> The type for node IDs.]]>
   4091     </doc>
   4092   </interface>
   4093   <!-- end interface com.google.inject.grapher.ImplementationNode -->
   4094   <!-- start interface com.google.inject.grapher.ImplementationNode.Factory -->
   4095   <interface name="ImplementationNode.Factory"    abstract="true"
   4096     static="true" final="false" visibility="public"
   4097     deprecated="not deprecated">
   4098     <method name="newImplementationNode" return="T extends com.google.inject.grapher.ImplementationNode&lt;K&gt;"
   4099       abstract="false" native="false" synchronized="false"
   4100       static="false" final="false" visibility="public"
   4101       deprecated="not deprecated">
   4102       <param name="nodeId" type="K"/>
   4103       <doc>
   4104       <![CDATA[Creates a new {@link ImplementationNode} and adds it to the graph.
   4105 
   4106  @param nodeId ID for the node.
   4107  @return The new {@link ImplementationNode} instance.]]>
   4108       </doc>
   4109     </method>
   4110     <doc>
   4111     <![CDATA[Factory interface for {@link ImplementationNode}s. Renderer
   4112  implementations will need to provide an implementation for this.
   4113 
   4114  @param <K> The type for node IDs.
   4115  @param <T> The {@link ImplementationNode} sub-type that this factory
   4116      provides.]]>
   4117     </doc>
   4118   </interface>
   4119   <!-- end interface com.google.inject.grapher.ImplementationNode.Factory -->
   4120   <!-- start class com.google.inject.grapher.InjectorGrapher -->
   4121   <class name="InjectorGrapher" extends="java.lang.Object"
   4122     abstract="false"
   4123     static="false" final="false" visibility="public"
   4124     deprecated="not deprecated">
   4125     <constructor name="InjectorGrapher" type="com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;&gt;, com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.lang.Void&gt;, com.google.inject.grapher.Renderer"
   4126       static="false" final="false" visibility="public"
   4127       deprecated="not deprecated">
   4128     </constructor>
   4129     <method name="of" return="com.google.inject.grapher.InjectorGrapher"
   4130       abstract="false" native="false" synchronized="false"
   4131       static="false" final="false" visibility="public"
   4132       deprecated="not deprecated">
   4133       <param name="injector" type="com.google.inject.Injector"/>
   4134       <doc>
   4135       <![CDATA[Sets the {@link Injector} to graph.]]>
   4136       </doc>
   4137     </method>
   4138     <method name="rootedAt" return="com.google.inject.grapher.InjectorGrapher"
   4139       abstract="false" native="false" synchronized="false"
   4140       static="false" final="false" visibility="public"
   4141       deprecated="not deprecated">
   4142       <param name="classes" type="java.lang.Class[]"/>
   4143       <doc>
   4144       <![CDATA[Sets an initial group of {@link Class}es to use as the starting point for
   4145  the graph. The graph will be of these classes and their transitive
   4146  dependencies and bindings.]]>
   4147       </doc>
   4148     </method>
   4149     <method name="rootedAt" return="com.google.inject.grapher.InjectorGrapher"
   4150       abstract="false" native="false" synchronized="false"
   4151       static="false" final="false" visibility="public"
   4152       deprecated="not deprecated">
   4153       <param name="keys" type="com.google.inject.Key[]"/>
   4154       <doc>
   4155       <![CDATA[Sets an initial group of {@link Key}s to use as the starting point for
   4156  the graph. The graph will be of these keys and their transitive
   4157  dependencies and bindings.]]>
   4158       </doc>
   4159     </method>
   4160     <method name="graph"
   4161       abstract="false" native="false" synchronized="false"
   4162       static="false" final="false" visibility="public"
   4163       deprecated="not deprecated">
   4164       <exception name="IOException" type="java.io.IOException"/>
   4165       <doc>
   4166       <![CDATA[Renders a graph with the bound {@link Renderer}. The {@link Injector}
   4167  must have already been specified with {@link #of(Injector)}.]]>
   4168       </doc>
   4169     </method>
   4170     <doc>
   4171     <![CDATA[Root class for graphing an {@link Injector}. Bound in {@link GrapherModule}.
   4172  <p>
   4173  Use {@link #of(Injector)} to specify the {@link Injector} to use, and
   4174  {@link graph()} to graph the {@link Injector} using the currently-bound
   4175  {@link Renderer}.
   4176  <p>
   4177  By default, this will graph the entire {@link Injector}. Use
   4178  {@link #rootedAt(Class...)} or {@link #rootedAt(Key...)} to specify an
   4179  initial set of {@link Class}es or {@link Key}s to use, and this will graph
   4180  their transitive bindings and dependencies.
   4181 
   4182  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4183     </doc>
   4184   </class>
   4185   <!-- end class com.google.inject.grapher.InjectorGrapher -->
   4186   <!-- start interface com.google.inject.grapher.InterfaceNode -->
   4187   <interface name="InterfaceNode"    abstract="true"
   4188     static="false" final="false" visibility="public"
   4189     deprecated="not deprecated">
   4190     <method name="setKey"
   4191       abstract="false" native="false" synchronized="false"
   4192       static="false" final="false" visibility="public"
   4193       deprecated="not deprecated">
   4194       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4195     </method>
   4196     <method name="setSource"
   4197       abstract="false" native="false" synchronized="false"
   4198       static="false" final="false" visibility="public"
   4199       deprecated="not deprecated">
   4200       <param name="source" type="java.lang.Object"/>
   4201     </method>
   4202     <doc>
   4203     <![CDATA[Node for an interface class that has been bound to an implementation class
   4204  or instance. These nodes are basically defined by a {@link Key}.
   4205 
   4206  @see BindingEdge
   4207 
   4208  @author phopkins (a] gmail.com (Pete Hopkins)
   4209 
   4210  @param <K> The type for node IDs.]]>
   4211     </doc>
   4212   </interface>
   4213   <!-- end interface com.google.inject.grapher.InterfaceNode -->
   4214   <!-- start interface com.google.inject.grapher.InterfaceNode.Factory -->
   4215   <interface name="InterfaceNode.Factory"    abstract="true"
   4216     static="true" final="false" visibility="public"
   4217     deprecated="not deprecated">
   4218     <method name="newInterfaceNode" return="T extends com.google.inject.grapher.InterfaceNode&lt;K&gt;"
   4219       abstract="false" native="false" synchronized="false"
   4220       static="false" final="false" visibility="public"
   4221       deprecated="not deprecated">
   4222       <param name="nodeId" type="K"/>
   4223       <doc>
   4224       <![CDATA[Creates a new {@link InterfaceNode} and adds it to the graph.
   4225 
   4226  @param nodeId ID for the node.
   4227  @return The new {@link InterfaceNode} instance.]]>
   4228       </doc>
   4229     </method>
   4230     <doc>
   4231     <![CDATA[Factory interface for {@link InterfaceNode}s. Renderer implementations
   4232  will need to provide an implementation for this.
   4233 
   4234  @param <K> The type for node IDs.
   4235  @param <T> The {@link InterfaceNode} sub-type that this factory provides.]]>
   4236     </doc>
   4237   </interface>
   4238   <!-- end interface com.google.inject.grapher.InterfaceNode.Factory -->
   4239   <!-- start interface com.google.inject.grapher.NameFactory -->
   4240   <interface name="NameFactory"    abstract="true"
   4241     static="false" final="false" visibility="public"
   4242     deprecated="not deprecated">
   4243     <method name="getMemberName" return="java.lang.String"
   4244       abstract="false" native="false" synchronized="false"
   4245       static="false" final="false" visibility="public"
   4246       deprecated="not deprecated">
   4247       <param name="member" type="java.lang.reflect.Member"/>
   4248     </method>
   4249     <method name="getClassName" return="java.lang.String"
   4250       abstract="false" native="false" synchronized="false"
   4251       static="false" final="false" visibility="public"
   4252       deprecated="not deprecated">
   4253       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4254     </method>
   4255     <method name="getInstanceName" return="java.lang.String"
   4256       abstract="false" native="false" synchronized="false"
   4257       static="false" final="false" visibility="public"
   4258       deprecated="not deprecated">
   4259       <param name="instance" type="java.lang.Object"/>
   4260     </method>
   4261     <method name="getAnnotationName" return="java.lang.String"
   4262       abstract="false" native="false" synchronized="false"
   4263       static="false" final="false" visibility="public"
   4264       deprecated="not deprecated">
   4265       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4266     </method>
   4267     <method name="getSourceName" return="java.lang.String"
   4268       abstract="false" native="false" synchronized="false"
   4269       static="false" final="false" visibility="public"
   4270       deprecated="not deprecated">
   4271       <param name="source" type="java.lang.Object"/>
   4272     </method>
   4273     <doc>
   4274     <![CDATA[Interface for a service that provides nice {@link String}s that we can
   4275  display in the graph for the types that come up in {@link Binding}s.
   4276 
   4277  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4278     </doc>
   4279   </interface>
   4280   <!-- end interface com.google.inject.grapher.NameFactory -->
   4281   <!-- start interface com.google.inject.grapher.NodeAliasFactory -->
   4282   <interface name="NodeAliasFactory"    abstract="true"
   4283     static="false" final="false" visibility="public"
   4284     deprecated="not deprecated">
   4285     <method name="newAlias"
   4286       abstract="false" native="false" synchronized="false"
   4287       static="false" final="false" visibility="public"
   4288       deprecated="not deprecated">
   4289       <param name="fromId" type="K"/>
   4290       <param name="toId" type="K"/>
   4291       <doc>
   4292       <![CDATA[Makes edges that would point to {@code fromId} point to
   4293  {@code toId} instead.]]>
   4294       </doc>
   4295     </method>
   4296     <doc>
   4297     <![CDATA[Factory for aliasing one node ID to another. Used when we don't want to
   4298  render {@link Key}s from {@link Binding}s that are not interesting.
   4299  
   4300  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4301     </doc>
   4302   </interface>
   4303   <!-- end interface com.google.inject.grapher.NodeAliasFactory -->
   4304   <!-- start interface com.google.inject.grapher.NodeIdFactory -->
   4305   <interface name="NodeIdFactory"    abstract="true"
   4306     static="false" final="false" visibility="public"
   4307     deprecated="not deprecated">
   4308     <method name="getClassNodeId" return="K"
   4309       abstract="false" native="false" synchronized="false"
   4310       static="false" final="false" visibility="public"
   4311       deprecated="not deprecated">
   4312       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4313     </method>
   4314     <method name="getInstanceNodeId" return="K"
   4315       abstract="false" native="false" synchronized="false"
   4316       static="false" final="false" visibility="public"
   4317       deprecated="not deprecated">
   4318       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4319     </method>
   4320     <doc>
   4321     <![CDATA[Factory for abstract identifiers for elements on the graph. Most graph nodes
   4322  will correspond directly to {@link Key}s, but we do this for additional
   4323  flexibility and because instances do not have separate {@link Key}s from the
   4324  interfaces they are bound to.
   4325  <p>
   4326  Node IDs are treated as opaque values by {@link GraphingVisitor} and the
   4327  other classes in this package.
   4328 
   4329  @author phopkins (a] gmail.com (Pete Hopkins)
   4330  
   4331  @param <K> The type for node IDs.]]>
   4332     </doc>
   4333   </interface>
   4334   <!-- end interface com.google.inject.grapher.NodeIdFactory -->
   4335   <!-- start interface com.google.inject.grapher.Renderer -->
   4336   <interface name="Renderer"    abstract="true"
   4337     static="false" final="false" visibility="public"
   4338     deprecated="not deprecated">
   4339     <method name="render"
   4340       abstract="false" native="false" synchronized="false"
   4341       static="false" final="false" visibility="public"
   4342       deprecated="not deprecated">
   4343       <exception name="IOException" type="java.io.IOException"/>
   4344     </method>
   4345     <doc>
   4346     <![CDATA[Interface for the service that renders the graph. It is assumed that the
   4347  implementations for {@link BindingEdge.Factory},
   4348  {@link ImplementationNode.Factory}, etc. will have direct access to the
   4349  internals of the {@link Renderer} implementation, so the only external
   4350  interface needed is the {@link #render()} call that {@link InjectorGrapher}
   4351  calls when it's done.
   4352 
   4353  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4354     </doc>
   4355   </interface>
   4356   <!-- end interface com.google.inject.grapher.Renderer -->
   4357   <!-- start class com.google.inject.grapher.ShortNameFactory -->
   4358   <class name="ShortNameFactory" extends="java.lang.Object"
   4359     abstract="false"
   4360     static="false" final="false" visibility="public"
   4361     deprecated="not deprecated">
   4362     <implements name="com.google.inject.grapher.NameFactory"/>
   4363     <constructor name="ShortNameFactory"
   4364       static="false" final="false" visibility="public"
   4365       deprecated="not deprecated">
   4366     </constructor>
   4367     <method name="getMemberName" return="java.lang.String"
   4368       abstract="false" native="false" synchronized="false"
   4369       static="false" final="false" visibility="public"
   4370       deprecated="not deprecated">
   4371       <param name="member" type="java.lang.reflect.Member"/>
   4372     </method>
   4373     <method name="getAnnotationName" return="java.lang.String"
   4374       abstract="false" native="false" synchronized="false"
   4375       static="false" final="false" visibility="public"
   4376       deprecated="not deprecated">
   4377       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4378     </method>
   4379     <method name="getClassName" return="java.lang.String"
   4380       abstract="false" native="false" synchronized="false"
   4381       static="false" final="false" visibility="public"
   4382       deprecated="not deprecated">
   4383       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4384     </method>
   4385     <method name="getInstanceName" return="java.lang.String"
   4386       abstract="false" native="false" synchronized="false"
   4387       static="false" final="false" visibility="public"
   4388       deprecated="not deprecated">
   4389       <param name="instance" type="java.lang.Object"/>
   4390     </method>
   4391     <method name="getSourceName" return="java.lang.String"
   4392       abstract="false" native="false" synchronized="false"
   4393       static="false" final="false" visibility="public"
   4394       deprecated="not deprecated">
   4395       <param name="source" type="java.lang.Object"/>
   4396       <doc>
   4397       <![CDATA[Returns a name for a Guice "source" object. This will typically be either
   4398  a {@link StackTraceElement} for when the binding is made to the instance,
   4399  or a {@link Method} when a provider method is used.]]>
   4400       </doc>
   4401     </method>
   4402     <method name="getFileString" return="java.lang.String"
   4403       abstract="false" native="false" synchronized="false"
   4404       static="false" final="false" visibility="protected"
   4405       deprecated="not deprecated">
   4406       <param name="stackTraceElement" type="java.lang.StackTraceElement"/>
   4407     </method>
   4408     <method name="getMethodString" return="java.lang.String"
   4409       abstract="false" native="false" synchronized="false"
   4410       static="false" final="false" visibility="protected"
   4411       deprecated="not deprecated">
   4412       <param name="method" type="java.lang.reflect.Method"/>
   4413     </method>
   4414     <doc>
   4415     <![CDATA[Reasonable implementation for {@link NameFactory}. Mostly takes various
   4416  {@link Object#toString()}s and strips package names out of them so that
   4417  they'll fit on the graph.
   4418 
   4419  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4420     </doc>
   4421   </class>
   4422   <!-- end class com.google.inject.grapher.ShortNameFactory -->
   4423   <!-- start class com.google.inject.grapher.StringNodeIdFactory -->
   4424   <class name="StringNodeIdFactory" extends="java.lang.Object"
   4425     abstract="false"
   4426     static="false" final="false" visibility="public"
   4427     deprecated="not deprecated">
   4428     <implements name="com.google.inject.grapher.NodeIdFactory&lt;java.lang.String&gt;"/>
   4429     <constructor name="StringNodeIdFactory"
   4430       static="false" final="false" visibility="public"
   4431       deprecated="not deprecated">
   4432     </constructor>
   4433     <method name="getClassNodeId" return="java.lang.String"
   4434       abstract="false" 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="getInstanceNodeId" return="java.lang.String"
   4440       abstract="false" native="false" synchronized="false"
   4441       static="false" final="false" visibility="public"
   4442       deprecated="not deprecated">
   4443       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   4444     </method>
   4445     <doc>
   4446     <![CDATA[{@link IdFactory} implementation that for {@link String} node IDs. The IDs
   4447  are comprised of letters, numbers and underscores.
   4448 
   4449  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4450     </doc>
   4451   </class>
   4452   <!-- end class com.google.inject.grapher.StringNodeIdFactory -->
   4453   <!-- start class com.google.inject.grapher.TransitiveDependencyVisitor -->
   4454   <class name="TransitiveDependencyVisitor" extends="java.lang.Object"
   4455     abstract="false"
   4456     static="false" final="false" visibility="public"
   4457     deprecated="not deprecated">
   4458     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;java.lang.Object, java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;&gt;"/>
   4459     <constructor name="TransitiveDependencyVisitor"
   4460       static="false" final="false" visibility="public"
   4461       deprecated="not deprecated">
   4462     </constructor>
   4463     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4464       abstract="false" native="false" synchronized="false"
   4465       static="false" final="false" visibility="public"
   4466       deprecated="not deprecated">
   4467       <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;?&gt;"/>
   4468     </method>
   4469     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4470       abstract="false" native="false" synchronized="false"
   4471       static="false" final="false" visibility="public"
   4472       deprecated="not deprecated">
   4473       <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;?&gt;"/>
   4474     </method>
   4475     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4476       abstract="false" native="false" synchronized="false"
   4477       static="false" final="false" visibility="public"
   4478       deprecated="not deprecated">
   4479       <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;?&gt;"/>
   4480     </method>
   4481     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4482       abstract="false" native="false" synchronized="false"
   4483       static="false" final="false" visibility="public"
   4484       deprecated="not deprecated">
   4485       <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;?&gt;"/>
   4486     </method>
   4487     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4488       abstract="false" native="false" synchronized="false"
   4489       static="false" final="false" visibility="public"
   4490       deprecated="not deprecated">
   4491       <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;?&gt;"/>
   4492     </method>
   4493     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4494       abstract="false" native="false" synchronized="false"
   4495       static="false" final="false" visibility="public"
   4496       deprecated="not deprecated">
   4497       <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;?&gt;"/>
   4498     </method>
   4499     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4500       abstract="false" native="false" synchronized="false"
   4501       static="false" final="false" visibility="public"
   4502       deprecated="not deprecated">
   4503       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;?&gt;"/>
   4504     </method>
   4505     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4506       abstract="false" native="false" synchronized="false"
   4507       static="false" final="false" visibility="public"
   4508       deprecated="not deprecated">
   4509       <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;?&gt;"/>
   4510     </method>
   4511     <method name="visit" return="java.util.Collection&lt;com.google.inject.Key&lt;?&gt;&gt;"
   4512       abstract="false" native="false" synchronized="false"
   4513       static="false" final="false" visibility="public"
   4514       deprecated="not deprecated">
   4515       <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;?&gt;"/>
   4516     </method>
   4517     <doc>
   4518     <![CDATA[{@link BindingTargetVisitor} that returns a {@link Collection} of the
   4519  {@link Key}s of each {@link Binding}'s dependencies. Used by
   4520  {@link InjectorGropher} to walk the dependency graph from a starting set of
   4521  {@link Binding}s.
   4522 
   4523  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4524     </doc>
   4525   </class>
   4526   <!-- end class com.google.inject.grapher.TransitiveDependencyVisitor -->
   4527 </package>
   4528 <package name="com.google.inject.grapher.graphviz">
   4529   <!-- start class com.google.inject.grapher.graphviz.ArrowType -->
   4530   <class name="ArrowType" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4531     abstract="false"
   4532     static="false" final="true" visibility="public"
   4533     deprecated="not deprecated">
   4534     <method name="values" return="com.google.inject.grapher.graphviz.ArrowType[]"
   4535       abstract="false" native="false" synchronized="false"
   4536       static="true" final="false" visibility="public"
   4537       deprecated="not deprecated">
   4538     </method>
   4539     <method name="valueOf" return="com.google.inject.grapher.graphviz.ArrowType"
   4540       abstract="false" native="false" synchronized="false"
   4541       static="true" final="false" visibility="public"
   4542       deprecated="not deprecated">
   4543       <param name="name" type="java.lang.String"/>
   4544     </method>
   4545     <method name="toString" return="java.lang.String"
   4546       abstract="false" native="false" synchronized="false"
   4547       static="false" final="false" visibility="public"
   4548       deprecated="not deprecated">
   4549     </method>
   4550     <doc>
   4551     <![CDATA[Arrow symbols that are available from Graphviz. These can be composed by
   4552  concatenation to make double arrows and such.
   4553  <p>
   4554  See: http://www.graphviz.org/doc/info/arrows.html
   4555 
   4556  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4557     </doc>
   4558   </class>
   4559   <!-- end class com.google.inject.grapher.graphviz.ArrowType -->
   4560   <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory -->
   4561   <class name="BindingEdgeFactory" extends="java.lang.Object"
   4562     abstract="false"
   4563     static="false" final="false" visibility="public"
   4564     deprecated="not deprecated">
   4565     <implements name="com.google.inject.grapher.BindingEdge.Factory&lt;java.lang.String, com.google.inject.grapher.BindingEdge&lt;java.lang.String&gt;&gt;"/>
   4566     <constructor name="BindingEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer"
   4567       static="false" final="false" visibility="public"
   4568       deprecated="not deprecated">
   4569     </constructor>
   4570     <method name="newBindingEdge" return="com.google.inject.grapher.BindingEdge&lt;java.lang.String&gt;"
   4571       abstract="false" native="false" synchronized="false"
   4572       static="false" final="false" visibility="public"
   4573       deprecated="not deprecated">
   4574       <param name="fromId" type="java.lang.String"/>
   4575       <param name="toId" type="java.lang.String"/>
   4576     </method>
   4577     <method name="newAdaptor" return="com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor"
   4578       abstract="false" native="false" synchronized="false"
   4579       static="false" final="false" visibility="protected"
   4580       deprecated="not deprecated">
   4581       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   4582     </method>
   4583     <doc>
   4584     <![CDATA[Graphviz-specific implementation of {@link BindingEdge.Factory}. Uses a
   4585  {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}.
   4586 
   4587  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4588     </doc>
   4589   </class>
   4590   <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory -->
   4591   <!-- start class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor -->
   4592   <class name="BindingEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object"
   4593     abstract="false"
   4594     static="false" final="false" visibility="protected"
   4595     deprecated="not deprecated">
   4596     <implements name="com.google.inject.grapher.BindingEdge&lt;java.lang.String&gt;"/>
   4597     <constructor name="BindingEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge"
   4598       static="false" final="false" visibility="public"
   4599       deprecated="not deprecated">
   4600     </constructor>
   4601     <method name="setType"
   4602       abstract="false" native="false" synchronized="false"
   4603       static="false" final="false" visibility="public"
   4604       deprecated="not deprecated">
   4605       <param name="type" type="com.google.inject.grapher.BindingEdge.Type"/>
   4606     </method>
   4607     <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"
   4608       transient="false" volatile="false"
   4609       static="false" final="true" visibility="protected"
   4610       deprecated="not deprecated">
   4611     </field>
   4612     <doc>
   4613     <![CDATA[Adaptor class that converts {@link BindingEdge} methods to display
   4614  operations on a {@link GraphvizEdge}.]]>
   4615     </doc>
   4616   </class>
   4617   <!-- end class com.google.inject.grapher.graphviz.BindingEdgeFactory.GraphvizEdgeAdaptor -->
   4618   <!-- start class com.google.inject.grapher.graphviz.CompassPoint -->
   4619   <class name="CompassPoint" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.CompassPoint&gt;"
   4620     abstract="false"
   4621     static="false" final="true" visibility="public"
   4622     deprecated="not deprecated">
   4623     <method name="values" return="com.google.inject.grapher.graphviz.CompassPoint[]"
   4624       abstract="false" native="false" synchronized="false"
   4625       static="true" final="false" visibility="public"
   4626       deprecated="not deprecated">
   4627     </method>
   4628     <method name="valueOf" return="com.google.inject.grapher.graphviz.CompassPoint"
   4629       abstract="false" native="false" synchronized="false"
   4630       static="true" final="false" visibility="public"
   4631       deprecated="not deprecated">
   4632       <param name="name" type="java.lang.String"/>
   4633     </method>
   4634     <method name="toString" return="java.lang.String"
   4635       abstract="false" native="false" synchronized="false"
   4636       static="false" final="false" visibility="public"
   4637       deprecated="not deprecated">
   4638     </method>
   4639     <doc>
   4640     <![CDATA[Enum for the "compass point" values used to control where edge
   4641  end points appear on the graph.
   4642  <p>
   4643  See: http://www.graphviz.org/doc/info/attrs.html#k:portPos
   4644 
   4645  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4646     </doc>
   4647   </class>
   4648   <!-- end class com.google.inject.grapher.graphviz.CompassPoint -->
   4649   <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory -->
   4650   <class name="DependencyEdgeFactory" extends="java.lang.Object"
   4651     abstract="false"
   4652     static="false" final="false" visibility="public"
   4653     deprecated="not deprecated">
   4654     <implements name="com.google.inject.grapher.DependencyEdge.Factory&lt;java.lang.String, com.google.inject.grapher.DependencyEdge&lt;java.lang.String&gt;&gt;"/>
   4655     <constructor name="DependencyEdgeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.graphviz.PortIdFactory"
   4656       static="false" final="false" visibility="public"
   4657       deprecated="not deprecated">
   4658     </constructor>
   4659     <method name="newDependencyEdge" return="com.google.inject.grapher.DependencyEdge&lt;java.lang.String&gt;"
   4660       abstract="false" native="false" synchronized="false"
   4661       static="false" final="false" visibility="public"
   4662       deprecated="not deprecated">
   4663       <param name="fromId" type="java.lang.String"/>
   4664       <param name="fromPoint" type="com.google.inject.spi.InjectionPoint"/>
   4665       <param name="toId" type="java.lang.String"/>
   4666     </method>
   4667     <method name="newAdaptor" return="com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor"
   4668       abstract="false" native="false" synchronized="false"
   4669       static="false" final="false" visibility="protected"
   4670       deprecated="not deprecated">
   4671       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   4672     </method>
   4673     <doc>
   4674     <![CDATA[Graphviz-specific implementation of {@link DependencyEdge.Factory}. Uses a
   4675  {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizEdge}.
   4676 
   4677  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4678     </doc>
   4679   </class>
   4680   <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory -->
   4681   <!-- start class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor -->
   4682   <class name="DependencyEdgeFactory.GraphvizEdgeAdaptor" extends="java.lang.Object"
   4683     abstract="false"
   4684     static="false" final="false" visibility="protected"
   4685     deprecated="not deprecated">
   4686     <implements name="com.google.inject.grapher.DependencyEdge&lt;java.lang.String&gt;"/>
   4687     <constructor name="DependencyEdgeFactory.GraphvizEdgeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizEdge"
   4688       static="false" final="false" visibility="public"
   4689       deprecated="not deprecated">
   4690     </constructor>
   4691     <field name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"
   4692       transient="false" volatile="false"
   4693       static="false" final="true" visibility="protected"
   4694       deprecated="not deprecated">
   4695     </field>
   4696     <doc>
   4697     <![CDATA[Adaptor class that converts {@link DependencyEdge} methods to display
   4698  operations on a {@link GraphvizEdge}.]]>
   4699     </doc>
   4700   </class>
   4701   <!-- end class com.google.inject.grapher.graphviz.DependencyEdgeFactory.GraphvizEdgeAdaptor -->
   4702   <!-- start class com.google.inject.grapher.graphviz.EdgeStyle -->
   4703   <class name="EdgeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.EdgeStyle&gt;"
   4704     abstract="false"
   4705     static="false" final="true" visibility="public"
   4706     deprecated="not deprecated">
   4707     <method name="values" return="com.google.inject.grapher.graphviz.EdgeStyle[]"
   4708       abstract="false" native="false" synchronized="false"
   4709       static="true" final="false" visibility="public"
   4710       deprecated="not deprecated">
   4711     </method>
   4712     <method name="valueOf" return="com.google.inject.grapher.graphviz.EdgeStyle"
   4713       abstract="false" native="false" synchronized="false"
   4714       static="true" final="false" visibility="public"
   4715       deprecated="not deprecated">
   4716       <param name="name" type="java.lang.String"/>
   4717     </method>
   4718     <method name="toString" return="java.lang.String"
   4719       abstract="false" native="false" synchronized="false"
   4720       static="false" final="false" visibility="public"
   4721       deprecated="not deprecated">
   4722     </method>
   4723     <doc>
   4724     <![CDATA[Styles for edges.
   4725  <p>
   4726  See: http://www.graphviz.org/doc/info/attrs.html#k:style
   4727 
   4728  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4729     </doc>
   4730   </class>
   4731   <!-- end class com.google.inject.grapher.graphviz.EdgeStyle -->
   4732   <!-- start class com.google.inject.grapher.graphviz.GraphvizEdge -->
   4733   <class name="GraphvizEdge" extends="java.lang.Object"
   4734     abstract="false"
   4735     static="false" final="false" visibility="public"
   4736     deprecated="not deprecated">
   4737     <constructor name="GraphvizEdge" type="java.lang.String, java.lang.String"
   4738       static="false" final="false" visibility="public"
   4739       deprecated="not deprecated">
   4740     </constructor>
   4741     <method name="getHeadNodeId" return="java.lang.String"
   4742       abstract="false" native="false" synchronized="false"
   4743       static="false" final="false" visibility="public"
   4744       deprecated="not deprecated">
   4745     </method>
   4746     <method name="getHeadPortId" return="java.lang.String"
   4747       abstract="false" native="false" synchronized="false"
   4748       static="false" final="false" visibility="public"
   4749       deprecated="not deprecated">
   4750     </method>
   4751     <method name="setHeadPortId"
   4752       abstract="false" native="false" synchronized="false"
   4753       static="false" final="false" visibility="public"
   4754       deprecated="not deprecated">
   4755       <param name="headPortId" type="java.lang.String"/>
   4756     </method>
   4757     <method name="getHeadCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
   4758       abstract="false" native="false" synchronized="false"
   4759       static="false" final="false" visibility="public"
   4760       deprecated="not deprecated">
   4761     </method>
   4762     <method name="setHeadCompassPoint"
   4763       abstract="false" native="false" synchronized="false"
   4764       static="false" final="false" visibility="public"
   4765       deprecated="not deprecated">
   4766       <param name="headCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   4767     </method>
   4768     <method name="getArrowHead" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4769       abstract="false" native="false" synchronized="false"
   4770       static="false" final="false" visibility="public"
   4771       deprecated="not deprecated">
   4772     </method>
   4773     <method name="setArrowHead"
   4774       abstract="false" native="false" synchronized="false"
   4775       static="false" final="false" visibility="public"
   4776       deprecated="not deprecated">
   4777       <param name="arrowHead" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   4778     </method>
   4779     <method name="getTailNodeId" return="java.lang.String"
   4780       abstract="false" native="false" synchronized="false"
   4781       static="false" final="false" visibility="public"
   4782       deprecated="not deprecated">
   4783     </method>
   4784     <method name="getTailPortId" return="java.lang.String"
   4785       abstract="false" native="false" synchronized="false"
   4786       static="false" final="false" visibility="public"
   4787       deprecated="not deprecated">
   4788     </method>
   4789     <method name="setTailPortId"
   4790       abstract="false" native="false" synchronized="false"
   4791       static="false" final="false" visibility="public"
   4792       deprecated="not deprecated">
   4793       <param name="tailPortId" type="java.lang.String"/>
   4794     </method>
   4795     <method name="getTailCompassPoint" return="com.google.inject.grapher.graphviz.CompassPoint"
   4796       abstract="false" native="false" synchronized="false"
   4797       static="false" final="false" visibility="public"
   4798       deprecated="not deprecated">
   4799     </method>
   4800     <method name="setTailCompassPoint"
   4801       abstract="false" native="false" synchronized="false"
   4802       static="false" final="false" visibility="public"
   4803       deprecated="not deprecated">
   4804       <param name="tailCompassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   4805     </method>
   4806     <method name="getArrowTail" return="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"
   4807       abstract="false" native="false" synchronized="false"
   4808       static="false" final="false" visibility="public"
   4809       deprecated="not deprecated">
   4810     </method>
   4811     <method name="setArrowTail"
   4812       abstract="false" native="false" synchronized="false"
   4813       static="false" final="false" visibility="public"
   4814       deprecated="not deprecated">
   4815       <param name="arrowTail" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   4816     </method>
   4817     <method name="getStyle" return="com.google.inject.grapher.graphviz.EdgeStyle"
   4818       abstract="false" native="false" synchronized="false"
   4819       static="false" final="false" visibility="public"
   4820       deprecated="not deprecated">
   4821     </method>
   4822     <method name="setStyle"
   4823       abstract="false" native="false" synchronized="false"
   4824       static="false" final="false" visibility="public"
   4825       deprecated="not deprecated">
   4826       <param name="style" type="com.google.inject.grapher.graphviz.EdgeStyle"/>
   4827     </method>
   4828     <doc>
   4829     <![CDATA[Data object to encapsulate the attributes of Graphviz edges that we're
   4830  interested in drawing.
   4831 
   4832  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4833     </doc>
   4834   </class>
   4835   <!-- end class com.google.inject.grapher.graphviz.GraphvizEdge -->
   4836   <!-- start class com.google.inject.grapher.graphviz.GraphvizModule -->
   4837   <class name="GraphvizModule" extends="com.google.inject.AbstractModule"
   4838     abstract="false"
   4839     static="false" final="false" visibility="public"
   4840     deprecated="not deprecated">
   4841     <constructor name="GraphvizModule"
   4842       static="false" final="false" visibility="public"
   4843       deprecated="not deprecated">
   4844     </constructor>
   4845     <method name="configure"
   4846       abstract="false" native="false" synchronized="false"
   4847       static="false" final="false" visibility="protected"
   4848       deprecated="not deprecated">
   4849     </method>
   4850     <doc>
   4851     <![CDATA[Module that provides {@link GraphvizRenderer} as the {@link Renderer} and
   4852  binds the other Graphviz factories.
   4853 
   4854  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4855     </doc>
   4856   </class>
   4857   <!-- end class com.google.inject.grapher.graphviz.GraphvizModule -->
   4858   <!-- start class com.google.inject.grapher.graphviz.GraphvizNode -->
   4859   <class name="GraphvizNode" extends="java.lang.Object"
   4860     abstract="false"
   4861     static="false" final="false" visibility="public"
   4862     deprecated="not deprecated">
   4863     <constructor name="GraphvizNode" type="java.lang.String"
   4864       static="false" final="false" visibility="public"
   4865       deprecated="not deprecated">
   4866     </constructor>
   4867     <method name="getNodeId" return="java.lang.String"
   4868       abstract="false" native="false" synchronized="false"
   4869       static="false" final="false" visibility="public"
   4870       deprecated="not deprecated">
   4871     </method>
   4872     <method name="getShape" return="com.google.inject.grapher.graphviz.NodeShape"
   4873       abstract="false" native="false" synchronized="false"
   4874       static="false" final="false" visibility="public"
   4875       deprecated="not deprecated">
   4876     </method>
   4877     <method name="setShape"
   4878       abstract="false" native="false" synchronized="false"
   4879       static="false" final="false" visibility="public"
   4880       deprecated="not deprecated">
   4881       <param name="shape" type="com.google.inject.grapher.graphviz.NodeShape"/>
   4882     </method>
   4883     <method name="getStyle" return="com.google.inject.grapher.graphviz.NodeStyle"
   4884       abstract="false" native="false" synchronized="false"
   4885       static="false" final="false" visibility="public"
   4886       deprecated="not deprecated">
   4887     </method>
   4888     <method name="setStyle"
   4889       abstract="false" native="false" synchronized="false"
   4890       static="false" final="false" visibility="public"
   4891       deprecated="not deprecated">
   4892       <param name="style" type="com.google.inject.grapher.graphviz.NodeStyle"/>
   4893     </method>
   4894     <method name="getTitle" return="java.lang.String"
   4895       abstract="false" native="false" synchronized="false"
   4896       static="false" final="false" visibility="public"
   4897       deprecated="not deprecated">
   4898     </method>
   4899     <method name="setTitle"
   4900       abstract="false" native="false" synchronized="false"
   4901       static="false" final="false" visibility="public"
   4902       deprecated="not deprecated">
   4903       <param name="title" type="java.lang.String"/>
   4904     </method>
   4905     <method name="getSubtitles" return="java.util.List&lt;java.lang.String&gt;"
   4906       abstract="false" native="false" synchronized="false"
   4907       static="false" final="false" visibility="public"
   4908       deprecated="not deprecated">
   4909     </method>
   4910     <method name="addSubtitle"
   4911       abstract="false" native="false" synchronized="false"
   4912       static="false" final="false" visibility="public"
   4913       deprecated="not deprecated">
   4914       <param name="position" type="int"/>
   4915       <param name="subtitle" type="java.lang.String"/>
   4916     </method>
   4917     <method name="getHeaderTextColor" return="java.lang.String"
   4918       abstract="false" native="false" synchronized="false"
   4919       static="false" final="false" visibility="public"
   4920       deprecated="not deprecated">
   4921     </method>
   4922     <method name="setHeaderTextColor"
   4923       abstract="false" native="false" synchronized="false"
   4924       static="false" final="false" visibility="public"
   4925       deprecated="not deprecated">
   4926       <param name="headerTextColor" type="java.lang.String"/>
   4927     </method>
   4928     <method name="getHeaderBackgroundColor" return="java.lang.String"
   4929       abstract="false" native="false" synchronized="false"
   4930       static="false" final="false" visibility="public"
   4931       deprecated="not deprecated">
   4932     </method>
   4933     <method name="setHeaderBackgroundColor"
   4934       abstract="false" native="false" synchronized="false"
   4935       static="false" final="false" visibility="public"
   4936       deprecated="not deprecated">
   4937       <param name="headerBackgroundColor" type="java.lang.String"/>
   4938     </method>
   4939     <method name="addField"
   4940       abstract="false" native="false" synchronized="false"
   4941       static="false" final="false" visibility="public"
   4942       deprecated="not deprecated">
   4943       <param name="portId" type="java.lang.String"/>
   4944       <param name="title" type="java.lang.String"/>
   4945     </method>
   4946     <method name="getFields" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   4947       abstract="false" native="false" synchronized="false"
   4948       static="false" final="false" visibility="public"
   4949       deprecated="not deprecated">
   4950     </method>
   4951     <doc>
   4952     <![CDATA[Data object to encapsulate the attributes of Graphviz nodes that we're
   4953  interested in drawing.
   4954 
   4955  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   4956     </doc>
   4957   </class>
   4958   <!-- end class com.google.inject.grapher.graphviz.GraphvizNode -->
   4959   <!-- start class com.google.inject.grapher.graphviz.GraphvizRenderer -->
   4960   <class name="GraphvizRenderer" extends="java.lang.Object"
   4961     abstract="false"
   4962     static="false" final="false" visibility="public"
   4963     deprecated="not deprecated">
   4964     <implements name="com.google.inject.grapher.Renderer"/>
   4965     <implements name="com.google.inject.grapher.NodeAliasFactory&lt;java.lang.String&gt;"/>
   4966     <constructor name="GraphvizRenderer"
   4967       static="false" final="false" visibility="public"
   4968       deprecated="not deprecated">
   4969     </constructor>
   4970     <method name="setOut" return="com.google.inject.grapher.graphviz.GraphvizRenderer"
   4971       abstract="false" native="false" synchronized="false"
   4972       static="false" final="false" visibility="public"
   4973       deprecated="not deprecated">
   4974       <param name="out" type="java.io.PrintWriter"/>
   4975     </method>
   4976     <method name="setRankdir" return="com.google.inject.grapher.graphviz.GraphvizRenderer"
   4977       abstract="false" native="false" synchronized="false"
   4978       static="false" final="false" visibility="public"
   4979       deprecated="not deprecated">
   4980       <param name="rankdir" type="java.lang.String"/>
   4981     </method>
   4982     <method name="addNode"
   4983       abstract="false" native="false" synchronized="false"
   4984       static="false" final="false" visibility="public"
   4985       deprecated="not deprecated">
   4986       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   4987     </method>
   4988     <method name="addEdge"
   4989       abstract="false" native="false" synchronized="false"
   4990       static="false" final="false" visibility="public"
   4991       deprecated="not deprecated">
   4992       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   4993     </method>
   4994     <method name="newAlias"
   4995       abstract="false" native="false" synchronized="false"
   4996       static="false" final="false" visibility="public"
   4997       deprecated="not deprecated">
   4998       <param name="fromId" type="java.lang.String"/>
   4999       <param name="toId" type="java.lang.String"/>
   5000     </method>
   5001     <method name="resolveAlias" return="java.lang.String"
   5002       abstract="false" native="false" synchronized="false"
   5003       static="false" final="false" visibility="protected"
   5004       deprecated="not deprecated">
   5005       <param name="id" type="java.lang.String"/>
   5006     </method>
   5007     <method name="render"
   5008       abstract="false" native="false" synchronized="false"
   5009       static="false" final="false" visibility="public"
   5010       deprecated="not deprecated">
   5011     </method>
   5012     <method name="getGraphAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5013       abstract="false" native="false" synchronized="false"
   5014       static="false" final="false" visibility="protected"
   5015       deprecated="not deprecated">
   5016     </method>
   5017     <method name="start"
   5018       abstract="false" native="false" synchronized="false"
   5019       static="false" final="false" visibility="protected"
   5020       deprecated="not deprecated">
   5021     </method>
   5022     <method name="finish"
   5023       abstract="false" native="false" synchronized="false"
   5024       static="false" final="false" visibility="protected"
   5025       deprecated="not deprecated">
   5026     </method>
   5027     <method name="renderNode"
   5028       abstract="false" native="false" synchronized="false"
   5029       static="false" final="false" visibility="protected"
   5030       deprecated="not deprecated">
   5031       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5032     </method>
   5033     <method name="getNodeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5034       abstract="false" native="false" synchronized="false"
   5035       static="false" final="false" visibility="protected"
   5036       deprecated="not deprecated">
   5037       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5038     </method>
   5039     <method name="getNodeLabel" return="java.lang.String"
   5040       abstract="false" native="false" synchronized="false"
   5041       static="false" final="false" visibility="protected"
   5042       deprecated="not deprecated">
   5043       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5044       <doc>
   5045       <![CDATA[Creates the "label" for a node. This is a string of HTML that defines a
   5046  table with a heading at the top and (in the case of
   5047  {@link ImplementationNode}s) rows for each of the member fields.]]>
   5048       </doc>
   5049     </method>
   5050     <method name="renderEdge"
   5051       abstract="false" native="false" synchronized="false"
   5052       static="false" final="false" visibility="protected"
   5053       deprecated="not deprecated">
   5054       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   5055     </method>
   5056     <method name="getEdgeAttributes" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   5057       abstract="false" native="false" synchronized="false"
   5058       static="false" final="false" visibility="protected"
   5059       deprecated="not deprecated">
   5060       <param name="edge" type="com.google.inject.grapher.graphviz.GraphvizEdge"/>
   5061     </method>
   5062     <method name="getArrowString" return="java.lang.String"
   5063       abstract="false" native="false" synchronized="false"
   5064       static="false" final="false" visibility="protected"
   5065       deprecated="not deprecated">
   5066       <param name="arrows" type="java.util.List&lt;com.google.inject.grapher.graphviz.ArrowType&gt;"/>
   5067       <doc>
   5068       <![CDATA[Turns a {@link List} of {@link ArrowType}s into a {@link String} that
   5069  represents combining them. With Graphviz, that just means concatenating
   5070  them.]]>
   5071       </doc>
   5072     </method>
   5073     <method name="getEdgeEndPoint" return="java.lang.String"
   5074       abstract="false" native="false" synchronized="false"
   5075       static="false" final="false" visibility="protected"
   5076       deprecated="not deprecated">
   5077       <param name="nodeId" type="java.lang.String"/>
   5078       <param name="portId" type="java.lang.String"/>
   5079       <param name="compassPoint" type="com.google.inject.grapher.graphviz.CompassPoint"/>
   5080     </method>
   5081     <method name="htmlEscape" return="java.lang.String"
   5082       abstract="false" native="false" synchronized="false"
   5083       static="false" final="false" visibility="protected"
   5084       deprecated="not deprecated">
   5085       <param name="str" type="java.lang.String"/>
   5086     </method>
   5087     <doc>
   5088     <![CDATA[{@link Renderer} implementation that writes out a Graphviz DOT file of the
   5089  graph. Bound in {@link GraphvizModule}.
   5090  <p>
   5091  Specify the {@link PrintWriter} to output to with
   5092  {@link #setOut(PrintWriter)}.
   5093 
   5094  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5095     </doc>
   5096   </class>
   5097   <!-- end class com.google.inject.grapher.graphviz.GraphvizRenderer -->
   5098   <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory -->
   5099   <class name="ImplementationNodeFactory" extends="java.lang.Object"
   5100     abstract="false"
   5101     static="false" final="false" visibility="public"
   5102     deprecated="not deprecated">
   5103     <implements name="com.google.inject.grapher.ImplementationNode.Factory&lt;java.lang.String, com.google.inject.grapher.ImplementationNode&lt;java.lang.String&gt;&gt;"/>
   5104     <constructor name="ImplementationNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory, com.google.inject.grapher.graphviz.PortIdFactory"
   5105       static="false" final="false" visibility="public"
   5106       deprecated="not deprecated">
   5107     </constructor>
   5108     <method name="newImplementationNode" return="com.google.inject.grapher.ImplementationNode&lt;java.lang.String&gt;"
   5109       abstract="false" native="false" synchronized="false"
   5110       static="false" final="false" visibility="public"
   5111       deprecated="not deprecated">
   5112       <param name="nodeId" type="java.lang.String"/>
   5113     </method>
   5114     <method name="newAdaptor" return="com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor"
   5115       abstract="false" native="false" synchronized="false"
   5116       static="false" final="false" visibility="protected"
   5117       deprecated="not deprecated">
   5118       <param name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"/>
   5119     </method>
   5120     <doc>
   5121     <![CDATA[Graphviz-specific implementation of {@link ImplementationNode.Factory}. Uses
   5122  a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}.
   5123 
   5124  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5125     </doc>
   5126   </class>
   5127   <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory -->
   5128   <!-- start class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor -->
   5129   <class name="ImplementationNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object"
   5130     abstract="false"
   5131     static="false" final="false" visibility="protected"
   5132     deprecated="not deprecated">
   5133     <implements name="com.google.inject.grapher.ImplementationNode&lt;java.lang.String&gt;"/>
   5134     <constructor name="ImplementationNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode"
   5135       static="false" final="false" visibility="public"
   5136       deprecated="not deprecated">
   5137     </constructor>
   5138     <method name="setClassKey"
   5139       abstract="false" native="false" synchronized="false"
   5140       static="false" final="false" visibility="public"
   5141       deprecated="not deprecated">
   5142       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   5143     </method>
   5144     <method name="setInstance"
   5145       abstract="false" native="false" synchronized="false"
   5146       static="false" final="false" visibility="public"
   5147       deprecated="not deprecated">
   5148       <param name="instance" type="java.lang.Object"/>
   5149     </method>
   5150     <method name="setSource"
   5151       abstract="false" native="false" synchronized="false"
   5152       static="false" final="false" visibility="public"
   5153       deprecated="not deprecated">
   5154       <param name="source" type="java.lang.Object"/>
   5155     </method>
   5156     <method name="addMember"
   5157       abstract="false" native="false" synchronized="false"
   5158       static="false" final="false" visibility="public"
   5159       deprecated="not deprecated">
   5160       <param name="member" type="java.lang.reflect.Member"/>
   5161     </method>
   5162     <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"
   5163       transient="false" volatile="false"
   5164       static="false" final="true" visibility="protected"
   5165       deprecated="not deprecated">
   5166     </field>
   5167     <doc>
   5168     <![CDATA[Adaptor class that converts {@link ImplementationNode} methods to display
   5169  operations on a {@link GraphvizNode}.]]>
   5170     </doc>
   5171   </class>
   5172   <!-- end class com.google.inject.grapher.graphviz.ImplementationNodeFactory.GraphvizNodeAdaptor -->
   5173   <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory -->
   5174   <class name="InterfaceNodeFactory" extends="java.lang.Object"
   5175     abstract="false"
   5176     static="false" final="false" visibility="public"
   5177     deprecated="not deprecated">
   5178     <implements name="com.google.inject.grapher.InterfaceNode.Factory&lt;java.lang.String, com.google.inject.grapher.InterfaceNode&lt;java.lang.String&gt;&gt;"/>
   5179     <constructor name="InterfaceNodeFactory" type="com.google.inject.grapher.graphviz.GraphvizRenderer, com.google.inject.grapher.NameFactory"
   5180       static="false" final="false" visibility="public"
   5181       deprecated="not deprecated">
   5182     </constructor>
   5183     <method name="newInterfaceNode" return="com.google.inject.grapher.InterfaceNode&lt;java.lang.String&gt;"
   5184       abstract="false" native="false" synchronized="false"
   5185       static="false" final="false" visibility="public"
   5186       deprecated="not deprecated">
   5187       <param name="nodeId" type="java.lang.String"/>
   5188     </method>
   5189     <doc>
   5190     <![CDATA[Graphviz-specific implementation of {@link InterfaceNode.Factory}. Uses
   5191  a {@link GraphvizEdgeAdaptor} to delegate to a {@link GraphvizNode}.
   5192 
   5193  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5194     </doc>
   5195   </class>
   5196   <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory -->
   5197   <!-- start class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor -->
   5198   <class name="InterfaceNodeFactory.GraphvizNodeAdaptor" extends="java.lang.Object"
   5199     abstract="false"
   5200     static="false" final="false" visibility="protected"
   5201     deprecated="not deprecated">
   5202     <implements name="com.google.inject.grapher.InterfaceNode&lt;java.lang.String&gt;"/>
   5203     <constructor name="InterfaceNodeFactory.GraphvizNodeAdaptor" type="com.google.inject.grapher.graphviz.GraphvizNode"
   5204       static="false" final="false" visibility="public"
   5205       deprecated="not deprecated">
   5206     </constructor>
   5207     <method name="setKey"
   5208       abstract="false" native="false" synchronized="false"
   5209       static="false" final="false" visibility="public"
   5210       deprecated="not deprecated">
   5211       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   5212     </method>
   5213     <method name="setSource"
   5214       abstract="false" native="false" synchronized="false"
   5215       static="false" final="false" visibility="public"
   5216       deprecated="not deprecated">
   5217       <param name="source" type="java.lang.Object"/>
   5218     </method>
   5219     <field name="node" type="com.google.inject.grapher.graphviz.GraphvizNode"
   5220       transient="false" volatile="false"
   5221       static="false" final="true" visibility="protected"
   5222       deprecated="not deprecated">
   5223     </field>
   5224     <doc>
   5225     <![CDATA[Adaptor class that converts {@link InterfaceNode} methods to display
   5226  operations on a {@link GraphvizNode}.]]>
   5227     </doc>
   5228   </class>
   5229   <!-- end class com.google.inject.grapher.graphviz.InterfaceNodeFactory.GraphvizNodeAdaptor -->
   5230   <!-- start class com.google.inject.grapher.graphviz.NodeShape -->
   5231   <class name="NodeShape" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeShape&gt;"
   5232     abstract="false"
   5233     static="false" final="true" visibility="public"
   5234     deprecated="not deprecated">
   5235     <method name="values" return="com.google.inject.grapher.graphviz.NodeShape[]"
   5236       abstract="false" native="false" synchronized="false"
   5237       static="true" final="false" visibility="public"
   5238       deprecated="not deprecated">
   5239     </method>
   5240     <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeShape"
   5241       abstract="false" native="false" synchronized="false"
   5242       static="true" final="false" visibility="public"
   5243       deprecated="not deprecated">
   5244       <param name="name" type="java.lang.String"/>
   5245     </method>
   5246     <method name="toString" return="java.lang.String"
   5247       abstract="false" native="false" synchronized="false"
   5248       static="false" final="false" visibility="public"
   5249       deprecated="not deprecated">
   5250     </method>
   5251     <doc>
   5252     <![CDATA[Enum for the shapes that are most interesting for Guice graphing.
   5253  <p>
   5254  See: http://www.graphviz.org/doc/info/shapes.html
   5255  
   5256  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5257     </doc>
   5258   </class>
   5259   <!-- end class com.google.inject.grapher.graphviz.NodeShape -->
   5260   <!-- start class com.google.inject.grapher.graphviz.NodeStyle -->
   5261   <class name="NodeStyle" extends="java.lang.Enum&lt;com.google.inject.grapher.graphviz.NodeStyle&gt;"
   5262     abstract="false"
   5263     static="false" final="true" visibility="public"
   5264     deprecated="not deprecated">
   5265     <method name="values" return="com.google.inject.grapher.graphviz.NodeStyle[]"
   5266       abstract="false" native="false" synchronized="false"
   5267       static="true" final="false" visibility="public"
   5268       deprecated="not deprecated">
   5269     </method>
   5270     <method name="valueOf" return="com.google.inject.grapher.graphviz.NodeStyle"
   5271       abstract="false" native="false" synchronized="false"
   5272       static="true" final="false" visibility="public"
   5273       deprecated="not deprecated">
   5274       <param name="name" type="java.lang.String"/>
   5275     </method>
   5276     <method name="toString" return="java.lang.String"
   5277       abstract="false" native="false" synchronized="false"
   5278       static="false" final="false" visibility="public"
   5279       deprecated="not deprecated">
   5280     </method>
   5281     <doc>
   5282     <![CDATA[Styles for nodes. Similar to {@link EdgeStyle} but with a few more options.
   5283  <p>
   5284  See: http://www.graphviz.org/doc/info/attrs.html#k:style
   5285 
   5286  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5287     </doc>
   5288   </class>
   5289   <!-- end class com.google.inject.grapher.graphviz.NodeStyle -->
   5290   <!-- start interface com.google.inject.grapher.graphviz.PortIdFactory -->
   5291   <interface name="PortIdFactory"    abstract="true"
   5292     static="false" final="false" visibility="public"
   5293     deprecated="not deprecated">
   5294     <method name="getPortId" return="java.lang.String"
   5295       abstract="false" native="false" synchronized="false"
   5296       static="false" final="false" visibility="public"
   5297       deprecated="not deprecated">
   5298       <param name="member" type="java.lang.reflect.Member"/>
   5299     </method>
   5300     <doc>
   5301     <![CDATA[Interface for a service that returns Graphviz port IDs, used for naming the
   5302  rows in {@link ImplementationNode}-displaying {@link GraphvizNode}s.
   5303  Implemented by {@link StringNodeIdFactory}.
   5304 
   5305  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5306     </doc>
   5307   </interface>
   5308   <!-- end interface com.google.inject.grapher.graphviz.PortIdFactory -->
   5309   <!-- start class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
   5310   <class name="PortIdFactoryImpl" extends="java.lang.Object"
   5311     abstract="false"
   5312     static="false" final="false" visibility="public"
   5313     deprecated="not deprecated">
   5314     <implements name="com.google.inject.grapher.graphviz.PortIdFactory"/>
   5315     <constructor name="PortIdFactoryImpl"
   5316       static="false" final="false" visibility="public"
   5317       deprecated="not deprecated">
   5318     </constructor>
   5319     <method name="getPortId" return="java.lang.String"
   5320       abstract="false" native="false" synchronized="false"
   5321       static="false" final="false" visibility="public"
   5322       deprecated="not deprecated">
   5323       <param name="member" type="java.lang.reflect.Member"/>
   5324     </method>
   5325     <doc>
   5326     <![CDATA[Implementation of {@link PortIdFactory}. Bound in {@link GraphvizModule}.
   5327 
   5328  @author phopkins (a] gmail.com (Pete Hopkins)]]>
   5329     </doc>
   5330   </class>
   5331   <!-- end class com.google.inject.grapher.graphviz.PortIdFactoryImpl -->
   5332 </package>
   5333 <package name="com.google.inject.jndi">
   5334   <!-- start class com.google.inject.jndi.JndiIntegration -->
   5335   <class name="JndiIntegration" extends="java.lang.Object"
   5336     abstract="false"
   5337     static="false" final="false" visibility="public"
   5338     deprecated="not deprecated">
   5339     <method name="fromJndi" return="com.google.inject.Provider&lt;T&gt;"
   5340       abstract="false" native="false" synchronized="false"
   5341       static="true" final="false" visibility="public"
   5342       deprecated="not deprecated">
   5343       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5344       <param name="name" type="java.lang.String"/>
   5345       <doc>
   5346       <![CDATA[Creates a provider which looks up objects in JNDI using the given name.
   5347  Example usage:
   5348 
   5349  <pre>
   5350  bind(DataSource.class).toProvider(fromJndi(DataSource.class, "java:..."));
   5351  </pre>]]>
   5352       </doc>
   5353     </method>
   5354     <doc>
   5355     <![CDATA[Integrates Guice with JNDI. Requires a binding to 
   5356  {@link javax.naming.Context}.
   5357 
   5358  @author crazybob (a] google.com (Bob Lee)]]>
   5359     </doc>
   5360   </class>
   5361   <!-- end class com.google.inject.jndi.JndiIntegration -->
   5362 </package>
   5363 <package name="com.google.inject.matcher">
   5364   <!-- start class com.google.inject.matcher.AbstractMatcher -->
   5365   <class name="AbstractMatcher" extends="java.lang.Object"
   5366     abstract="true"
   5367     static="false" final="false" visibility="public"
   5368     deprecated="not deprecated">
   5369     <implements name="com.google.inject.matcher.Matcher&lt;T&gt;"/>
   5370     <constructor name="AbstractMatcher"
   5371       static="false" final="false" visibility="public"
   5372       deprecated="not deprecated">
   5373     </constructor>
   5374     <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5375       abstract="false" native="false" synchronized="false"
   5376       static="false" final="false" visibility="public"
   5377       deprecated="not deprecated">
   5378       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5379     </method>
   5380     <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5381       abstract="false" native="false" synchronized="false"
   5382       static="false" final="false" visibility="public"
   5383       deprecated="not deprecated">
   5384       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5385     </method>
   5386     <doc>
   5387     <![CDATA[Implements {@code and()} and {@code or()}.
   5388 
   5389  @author crazybob (a] google.com (Bob Lee)]]>
   5390     </doc>
   5391   </class>
   5392   <!-- end class com.google.inject.matcher.AbstractMatcher -->
   5393   <!-- start interface com.google.inject.matcher.Matcher -->
   5394   <interface name="Matcher"    abstract="true"
   5395     static="false" final="false" visibility="public"
   5396     deprecated="not deprecated">
   5397     <method name="matches" return="boolean"
   5398       abstract="false" native="false" synchronized="false"
   5399       static="false" final="false" visibility="public"
   5400       deprecated="not deprecated">
   5401       <param name="t" type="T"/>
   5402       <doc>
   5403       <![CDATA[Returns {@code true} if this matches {@code t}, {@code false} otherwise.]]>
   5404       </doc>
   5405     </method>
   5406     <method name="and" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5407       abstract="false" native="false" synchronized="false"
   5408       static="false" final="false" visibility="public"
   5409       deprecated="not deprecated">
   5410       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5411       <doc>
   5412       <![CDATA[Returns a new matcher which returns {@code true} if both this and the
   5413  given matcher return {@code true}.]]>
   5414       </doc>
   5415     </method>
   5416     <method name="or" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5417       abstract="false" native="false" synchronized="false"
   5418       static="false" final="false" visibility="public"
   5419       deprecated="not deprecated">
   5420       <param name="other" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5421       <doc>
   5422       <![CDATA[Returns a new matcher which returns {@code true} if either this or the
   5423  given matcher return {@code true}.]]>
   5424       </doc>
   5425     </method>
   5426     <doc>
   5427     <![CDATA[Returns {@code true} or {@code false} for a given input.
   5428 
   5429  @author crazybob (a] google.com (Bob Lee)]]>
   5430     </doc>
   5431   </interface>
   5432   <!-- end interface com.google.inject.matcher.Matcher -->
   5433   <!-- start class com.google.inject.matcher.Matchers -->
   5434   <class name="Matchers" extends="java.lang.Object"
   5435     abstract="false"
   5436     static="false" final="false" visibility="public"
   5437     deprecated="not deprecated">
   5438     <method name="any" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5439       abstract="false" native="false" synchronized="false"
   5440       static="true" final="false" visibility="public"
   5441       deprecated="not deprecated">
   5442       <doc>
   5443       <![CDATA[Returns a matcher which matches any input.]]>
   5444       </doc>
   5445     </method>
   5446     <method name="not" return="com.google.inject.matcher.Matcher&lt;T&gt;"
   5447       abstract="false" native="false" synchronized="false"
   5448       static="true" final="false" visibility="public"
   5449       deprecated="not deprecated">
   5450       <param name="p" type="com.google.inject.matcher.Matcher&lt;? super T&gt;"/>
   5451       <doc>
   5452       <![CDATA[Inverts the given matcher.]]>
   5453       </doc>
   5454     </method>
   5455     <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
   5456       abstract="false" native="false" synchronized="false"
   5457       static="true" final="false" visibility="public"
   5458       deprecated="not deprecated">
   5459       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5460       <doc>
   5461       <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
   5462  with a given annotation.]]>
   5463       </doc>
   5464     </method>
   5465     <method name="annotatedWith" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.AnnotatedElement&gt;"
   5466       abstract="false" native="false" synchronized="false"
   5467       static="true" final="false" visibility="public"
   5468       deprecated="not deprecated">
   5469       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5470       <doc>
   5471       <![CDATA[Returns a matcher which matches elements (methods, classes, etc.)
   5472  with a given annotation.]]>
   5473       </doc>
   5474     </method>
   5475     <method name="subclassesOf" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5476       abstract="false" native="false" synchronized="false"
   5477       static="true" final="false" visibility="public"
   5478       deprecated="not deprecated">
   5479       <param name="superclass" type="java.lang.Class&lt;?&gt;"/>
   5480       <doc>
   5481       <![CDATA[Returns a matcher which matches subclasses of the given type (as well as
   5482  the given type).]]>
   5483       </doc>
   5484     </method>
   5485     <method name="only" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5486       abstract="false" native="false" synchronized="false"
   5487       static="true" final="false" visibility="public"
   5488       deprecated="not deprecated">
   5489       <param name="value" type="java.lang.Object"/>
   5490       <doc>
   5491       <![CDATA[Returns a matcher which matches objects equal to the given object.]]>
   5492       </doc>
   5493     </method>
   5494     <method name="identicalTo" return="com.google.inject.matcher.Matcher&lt;java.lang.Object&gt;"
   5495       abstract="false" native="false" synchronized="false"
   5496       static="true" final="false" visibility="public"
   5497       deprecated="not deprecated">
   5498       <param name="value" type="java.lang.Object"/>
   5499       <doc>
   5500       <![CDATA[Returns a matcher which matches only the given object.]]>
   5501       </doc>
   5502     </method>
   5503     <method name="inPackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5504       abstract="false" native="false" synchronized="false"
   5505       static="true" final="false" visibility="public"
   5506       deprecated="not deprecated">
   5507       <param name="targetPackage" type="java.lang.Package"/>
   5508       <doc>
   5509       <![CDATA[Returns a matcher which matches classes in the given package. Packages are specific to their
   5510  classloader, so classes with the same package name may not have the same package at runtime.]]>
   5511       </doc>
   5512     </method>
   5513     <method name="inSubpackage" return="com.google.inject.matcher.Matcher&lt;java.lang.Class&gt;"
   5514       abstract="false" native="false" synchronized="false"
   5515       static="true" final="false" visibility="public"
   5516       deprecated="not deprecated">
   5517       <param name="targetPackageName" type="java.lang.String"/>
   5518       <doc>
   5519       <![CDATA[Returns a matcher which matches classes in the given package and its subpackages. Unlike
   5520  {@link #inPackage(Package) inPackage()}, this matches classes from any classloader.
   5521  
   5522  @since 2.0]]>
   5523       </doc>
   5524     </method>
   5525     <method name="returns" return="com.google.inject.matcher.Matcher&lt;java.lang.reflect.Method&gt;"
   5526       abstract="false" native="false" synchronized="false"
   5527       static="true" final="false" visibility="public"
   5528       deprecated="not deprecated">
   5529       <param name="returnType" type="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"/>
   5530       <doc>
   5531       <![CDATA[Returns a matcher which matches methods with matching return types.]]>
   5532       </doc>
   5533     </method>
   5534     <doc>
   5535     <![CDATA[Matcher implementations. Supports matching classes and methods.
   5536 
   5537  @author crazybob (a] google.com (Bob Lee)]]>
   5538     </doc>
   5539   </class>
   5540   <!-- end class com.google.inject.matcher.Matchers -->
   5541 </package>
   5542 <package name="com.google.inject.multibindings">
   5543   <!-- start class com.google.inject.multibindings.MapBinder -->
   5544   <class name="MapBinder" extends="java.lang.Object"
   5545     abstract="true"
   5546     static="false" final="false" visibility="public"
   5547     deprecated="not deprecated">
   5548     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5549       abstract="false" native="false" synchronized="false"
   5550       static="true" final="false" visibility="public"
   5551       deprecated="not deprecated">
   5552       <param name="binder" type="com.google.inject.Binder"/>
   5553       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5554       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5555       <doc>
   5556       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5557  {@link Map} that is itself bound with no binding annotation.]]>
   5558       </doc>
   5559     </method>
   5560     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5561       abstract="false" native="false" synchronized="false"
   5562       static="true" final="false" visibility="public"
   5563       deprecated="not deprecated">
   5564       <param name="binder" type="com.google.inject.Binder"/>
   5565       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5566       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5567       <doc>
   5568       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5569  {@link Map} that is itself bound with no binding annotation.]]>
   5570       </doc>
   5571     </method>
   5572     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5573       abstract="false" native="false" synchronized="false"
   5574       static="true" final="false" visibility="public"
   5575       deprecated="not deprecated">
   5576       <param name="binder" type="com.google.inject.Binder"/>
   5577       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5578       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5579       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5580       <doc>
   5581       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5582  {@link Map} that is itself bound with {@code annotation}.]]>
   5583       </doc>
   5584     </method>
   5585     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5586       abstract="false" native="false" synchronized="false"
   5587       static="true" final="false" visibility="public"
   5588       deprecated="not deprecated">
   5589       <param name="binder" type="com.google.inject.Binder"/>
   5590       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5591       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5592       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5593       <doc>
   5594       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5595  {@link Map} that is itself bound with {@code annotation}.]]>
   5596       </doc>
   5597     </method>
   5598     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5599       abstract="false" native="false" synchronized="false"
   5600       static="true" final="false" visibility="public"
   5601       deprecated="not deprecated">
   5602       <param name="binder" type="com.google.inject.Binder"/>
   5603       <param name="keyType" type="com.google.inject.TypeLiteral&lt;K&gt;"/>
   5604       <param name="valueType" type="com.google.inject.TypeLiteral&lt;V&gt;"/>
   5605       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5606       <doc>
   5607       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5608  {@link Map} that is itself bound with {@code annotationType}.]]>
   5609       </doc>
   5610     </method>
   5611     <method name="newMapBinder" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5612       abstract="false" native="false" synchronized="false"
   5613       static="true" final="false" visibility="public"
   5614       deprecated="not deprecated">
   5615       <param name="binder" type="com.google.inject.Binder"/>
   5616       <param name="keyType" type="java.lang.Class&lt;K&gt;"/>
   5617       <param name="valueType" type="java.lang.Class&lt;V&gt;"/>
   5618       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5619       <doc>
   5620       <![CDATA[Returns a new mapbinder that collects entries of {@code keyType}/{@code valueType} in a
   5621  {@link Map} that is itself bound with {@code annotationType}.]]>
   5622       </doc>
   5623     </method>
   5624     <method name="permitDuplicates" return="com.google.inject.multibindings.MapBinder&lt;K, V&gt;"
   5625       abstract="true" native="false" synchronized="false"
   5626       static="false" final="false" visibility="public"
   5627       deprecated="not deprecated">
   5628       <doc>
   5629       <![CDATA[Configures the {@code MapBinder} to handle duplicate entries.
   5630  <p>When multiple equal keys are bound, the value that gets included in the map is
   5631  arbitrary.
   5632  <p>In addition to the {@code Map<K, V>} and {@code Map<K, Provider<V>>}
   5633  maps that are normally bound, a {@code Map<K, Set<V>>} and
   5634  {@code Map<K, Set<Provider<V>>>} are <em>also</em> bound, which contain
   5635  all values bound to each key.
   5636  <p>
   5637  When multiple modules contribute elements to the map, this configuration
   5638  option impacts all of them.
   5639 
   5640  @return this map binder
   5641  @since 3.0]]>
   5642       </doc>
   5643     </method>
   5644     <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;V&gt;"
   5645       abstract="true" native="false" synchronized="false"
   5646       static="false" final="false" visibility="public"
   5647       deprecated="not deprecated">
   5648       <param name="key" type="K"/>
   5649       <doc>
   5650       <![CDATA[Returns a binding builder used to add a new entry in the map. Each
   5651  key must be distinct (and non-null). Bound providers will be evaluated each
   5652  time the map is injected.
   5653 
   5654  <p>It is an error to call this method without also calling one of the
   5655  {@code to} methods on the returned binding builder.
   5656 
   5657  <p>Scoping elements independently is supported. Use the {@code in} method
   5658  to specify a binding scope.]]>
   5659       </doc>
   5660     </method>
   5661     <doc>
   5662     <![CDATA[An API to bind multiple map entries separately, only to later inject them as
   5663  a complete map. MapBinder is intended for use in your application's module:
   5664  <pre><code>
   5665  public class SnacksModule extends AbstractModule {
   5666    protected void configure() {
   5667      MapBinder&lt;String, Snack&gt; mapbinder
   5668          = MapBinder.newMapBinder(binder(), String.class, Snack.class);
   5669      mapbinder.addBinding("twix").toInstance(new Twix());
   5670      mapbinder.addBinding("snickers").toProvider(SnickersProvider.class);
   5671      mapbinder.addBinding("skittles").to(Skittles.class);
   5672    }
   5673  }</code></pre>
   5674 
   5675  <p>With this binding, a {@link Map}{@code <String, Snack>} can now be
   5676  injected:
   5677  <pre><code>
   5678  class SnackMachine {
   5679    {@literal @}Inject
   5680    public SnackMachine(Map&lt;String, Snack&gt; snacks) { ... }
   5681  }</code></pre>
   5682 
   5683  <p>In addition to binding {@code Map<K, V>}, a mapbinder will also bind
   5684  {@code Map<K, Provider<V>>} for lazy value provision:
   5685  <pre><code>
   5686  class SnackMachine {
   5687    {@literal @}Inject
   5688    public SnackMachine(Map&lt;String, Provider&lt;Snack&gt;&gt; snackProviders) { ... }
   5689  }</code></pre>
   5690 
   5691  <p>Contributing mapbindings from different modules is supported. For example,
   5692  it is okay to have both {@code CandyModule} and {@code ChipsModule} both
   5693  create their own {@code MapBinder<String, Snack>}, and to each contribute
   5694  bindings to the snacks map. When that map is injected, it will contain
   5695  entries from both modules.
   5696 
   5697  <p>The map's iteration order is consistent with the binding order. This is
   5698  convenient when multiple elements are contributed by the same module because
   5699  that module can order its bindings appropriately. Avoid relying on the
   5700  iteration order of elements contributed by different modules, since there is
   5701  no equivalent mechanism to order modules.
   5702  
   5703  <p>The map is unmodifiable.  Elements can only be added to the map by
   5704  configuring the MapBinder.  Elements can never be removed from the map.
   5705 
   5706  <p>Values are resolved at map injection time. If a value is bound to a
   5707  provider, that provider's get method will be called each time the map is
   5708  injected (unless the binding is also scoped, or a map of providers is injected).
   5709 
   5710  <p>Annotations are used to create different maps of the same key/value
   5711  type. Each distinct annotation gets its own independent map.
   5712 
   5713  <p><strong>Keys must be distinct.</strong> If the same key is bound more than
   5714  once, map injection will fail. However, use {@link #permitDuplicates()} in
   5715  order to allow duplicate keys; extra bindings to {@code Map<K, Set<V>>} and
   5716  {@code Map<K, Set<Provider<V>>} will be added.
   5717 
   5718  <p><strong>Keys must be non-null.</strong> {@code addBinding(null)} will
   5719  throw an unchecked exception.
   5720 
   5721  <p><strong>Values must be non-null to use map injection.</strong> If any
   5722  value is null, map injection will fail (although injecting a map of providers
   5723  will not).
   5724 
   5725  @author dpb (a] google.com (David P. Baker)]]>
   5726     </doc>
   5727   </class>
   5728   <!-- end class com.google.inject.multibindings.MapBinder -->
   5729   <!-- start interface com.google.inject.multibindings.MapBinderBinding -->
   5730   <interface name="MapBinderBinding"    abstract="true"
   5731     static="false" final="false" visibility="public"
   5732     deprecated="not deprecated">
   5733     <method name="getMapKey" return="com.google.inject.Key&lt;T&gt;"
   5734       abstract="false" native="false" synchronized="false"
   5735       static="false" final="false" visibility="public"
   5736       deprecated="not deprecated">
   5737       <doc>
   5738       <![CDATA[Returns the {@link Key} for the map.]]>
   5739       </doc>
   5740     </method>
   5741     <method name="getKeyTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5742       abstract="false" native="false" synchronized="false"
   5743       static="false" final="false" visibility="public"
   5744       deprecated="not deprecated">
   5745       <doc>
   5746       <![CDATA[Returns the TypeLiteral describing the keys of the map.
   5747  <p>
   5748  The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
   5749  returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
   5750  <code>TypeLiteral&lt;String></code>.]]>
   5751       </doc>
   5752     </method>
   5753     <method name="getValueTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5754       abstract="false" native="false" synchronized="false"
   5755       static="false" final="false" visibility="public"
   5756       deprecated="not deprecated">
   5757       <doc>
   5758       <![CDATA[Returns the TypeLiteral describing the values of the map.
   5759  <p>
   5760  The TypeLiteral will always match the type Map's generic type. For example, if getMapKey
   5761  returns a key of <code>Map&lt;String, Snack></code>, then this will always return a
   5762  <code>TypeLiteral&lt;Snack></code>.]]>
   5763       </doc>
   5764     </method>
   5765     <method name="getEntries" return="java.util.List&lt;java.util.Map.Entry&lt;?, com.google.inject.Binding&lt;?&gt;&gt;&gt;"
   5766       abstract="false" native="false" synchronized="false"
   5767       static="false" final="false" visibility="public"
   5768       deprecated="not deprecated">
   5769       <doc>
   5770       <![CDATA[Returns all entries in the Map. The returned list of Map.Entries contains the key and a binding
   5771  to the value. Duplicate keys or values will exist as separate Map.Entries in the returned list.
   5772  This is only supported on bindings returned from an injector. This will throw
   5773  {@link UnsupportedOperationException} if it is called on an element retrieved from
   5774  {@link Elements#getElements}.
   5775  <p>
   5776  The elements will always match the type Map's generic type. For example, if getMapKey returns a
   5777  key of <code>Map&lt;String, Snack></code>, then this will always return a list of type
   5778  <code>List&lt;Map.Entry&lt;String, Binding&lt;Snack>>></code>.]]>
   5779       </doc>
   5780     </method>
   5781     <method name="permitsDuplicates" return="boolean"
   5782       abstract="false" native="false" synchronized="false"
   5783       static="false" final="false" visibility="public"
   5784       deprecated="not deprecated">
   5785       <doc>
   5786       <![CDATA[Returns true if the MapBinder permits duplicates. This is only supported on bindings returned
   5787  from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
   5788  MapBinderBinding retrieved from {@link Elements#getElements}.]]>
   5789       </doc>
   5790     </method>
   5791     <method name="containsElement" return="boolean"
   5792       abstract="false" native="false" synchronized="false"
   5793       static="false" final="false" visibility="public"
   5794       deprecated="not deprecated">
   5795       <param name="element" type="com.google.inject.spi.Element"/>
   5796       <doc>
   5797       <![CDATA[Returns true if this MapBinder contains the given Element in order to build the map or uses the
   5798  given Element in order to support building and injecting the map. This will work for
   5799  MapBinderBindings retrieved from an injector and {@link Elements#getElements}. Usually this is
   5800  only necessary if you are working with elements retrieved from modules (without an Injector),
   5801  otherwise {@link #getEntries} and {@link #permitsDuplicates} are better options.
   5802  <p>
   5803  If you need to introspect the details of the map, such as the keys, values or if it permits
   5804  duplicates, it is necessary to pass the elements through an Injector and use
   5805  {@link #getEntries()} and {@link #permitsDuplicates()}.]]>
   5806       </doc>
   5807     </method>
   5808     <doc>
   5809     <![CDATA[A binding for a MapBinder.
   5810  <p>
   5811  Although MapBinders may be injected through a variety of generic types (Map&lt;K, V>, Map
   5812  &lt;K, Provider&lt;V>>, Map&lt;K, Set&lt;V>>, Map<K, Set&lt;
   5813  Provider&lt;V>>, and even Set&lt;Map.Entry&lt;K, Provider&lt;V>>), a
   5814  MapBinderBinding exists only on the Binding associated with the Map&lt;K, V> key. Other
   5815  bindings can be validated to be derived from this MapBinderBinding using
   5816  {@link #containsElement(Element)}.
   5817  
   5818  @param <T> The fully qualified type of the map, including Map. For example:
   5819           <code>MapBinderBinding&lt;Map&lt;String, Snack>></code>
   5820  
   5821  @since 3.0
   5822  @author sameb (a] google.com (Sam Berlin)]]>
   5823     </doc>
   5824   </interface>
   5825   <!-- end interface com.google.inject.multibindings.MapBinderBinding -->
   5826   <!-- start class com.google.inject.multibindings.Multibinder -->
   5827   <class name="Multibinder" extends="java.lang.Object"
   5828     abstract="true"
   5829     static="false" final="false" visibility="public"
   5830     deprecated="not deprecated">
   5831     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5832       abstract="false" native="false" synchronized="false"
   5833       static="true" final="false" visibility="public"
   5834       deprecated="not deprecated">
   5835       <param name="binder" type="com.google.inject.Binder"/>
   5836       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5837       <doc>
   5838       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5839  itself bound with no binding annotation.]]>
   5840       </doc>
   5841     </method>
   5842     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5843       abstract="false" native="false" synchronized="false"
   5844       static="true" final="false" visibility="public"
   5845       deprecated="not deprecated">
   5846       <param name="binder" type="com.google.inject.Binder"/>
   5847       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5848       <doc>
   5849       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5850  itself bound with no binding annotation.]]>
   5851       </doc>
   5852     </method>
   5853     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5854       abstract="false" native="false" synchronized="false"
   5855       static="true" final="false" visibility="public"
   5856       deprecated="not deprecated">
   5857       <param name="binder" type="com.google.inject.Binder"/>
   5858       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5859       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5860       <doc>
   5861       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5862  itself bound with {@code annotation}.]]>
   5863       </doc>
   5864     </method>
   5865     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5866       abstract="false" native="false" synchronized="false"
   5867       static="true" final="false" visibility="public"
   5868       deprecated="not deprecated">
   5869       <param name="binder" type="com.google.inject.Binder"/>
   5870       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5871       <param name="annotation" type="java.lang.annotation.Annotation"/>
   5872       <doc>
   5873       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5874  itself bound with {@code annotation}.]]>
   5875       </doc>
   5876     </method>
   5877     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5878       abstract="false" native="false" synchronized="false"
   5879       static="true" final="false" visibility="public"
   5880       deprecated="not deprecated">
   5881       <param name="binder" type="com.google.inject.Binder"/>
   5882       <param name="type" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   5883       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5884       <doc>
   5885       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5886  itself bound with {@code annotationType}.]]>
   5887       </doc>
   5888     </method>
   5889     <method name="newSetBinder" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5890       abstract="false" native="false" synchronized="false"
   5891       static="true" final="false" visibility="public"
   5892       deprecated="not deprecated">
   5893       <param name="binder" type="com.google.inject.Binder"/>
   5894       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   5895       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   5896       <doc>
   5897       <![CDATA[Returns a new multibinder that collects instances of {@code type} in a {@link Set} that is
   5898  itself bound with {@code annotationType}.]]>
   5899       </doc>
   5900     </method>
   5901     <method name="permitDuplicates" return="com.google.inject.multibindings.Multibinder&lt;T&gt;"
   5902       abstract="true" native="false" synchronized="false"
   5903       static="false" final="false" visibility="public"
   5904       deprecated="not deprecated">
   5905       <doc>
   5906       <![CDATA[Configures the bound set to silently discard duplicate elements. When multiple equal values are
   5907  bound, the one that gets included is arbitrary. When multiple modules contribute elements to
   5908  the set, this configuration option impacts all of them.
   5909 
   5910  @return this multibinder
   5911  @since 3.0]]>
   5912       </doc>
   5913     </method>
   5914     <method name="addBinding" return="com.google.inject.binder.LinkedBindingBuilder&lt;T&gt;"
   5915       abstract="true" native="false" synchronized="false"
   5916       static="false" final="false" visibility="public"
   5917       deprecated="not deprecated">
   5918       <doc>
   5919       <![CDATA[Returns a binding builder used to add a new element in the set. Each
   5920  bound element must have a distinct value. Bound providers will be
   5921  evaluated each time the set is injected.
   5922 
   5923  <p>It is an error to call this method without also calling one of the
   5924  {@code to} methods on the returned binding builder.
   5925 
   5926  <p>Scoping elements independently is supported. Use the {@code in} method
   5927  to specify a binding scope.]]>
   5928       </doc>
   5929     </method>
   5930     <doc>
   5931     <![CDATA[An API to bind multiple values separately, only to later inject them as a
   5932  complete collection. Multibinder is intended for use in your application's
   5933  module:
   5934  <pre><code>
   5935  public class SnacksModule extends AbstractModule {
   5936    protected void configure() {
   5937      Multibinder&lt;Snack&gt; multibinder
   5938          = Multibinder.newSetBinder(binder(), Snack.class);
   5939      multibinder.addBinding().toInstance(new Twix());
   5940      multibinder.addBinding().toProvider(SnickersProvider.class);
   5941      multibinder.addBinding().to(Skittles.class);
   5942    }
   5943  }</code></pre>
   5944 
   5945  <p>With this binding, a {@link Set}{@code <Snack>} can now be injected:
   5946  <pre><code>
   5947  class SnackMachine {
   5948    {@literal @}Inject
   5949    public SnackMachine(Set&lt;Snack&gt; snacks) { ... }
   5950  }</code></pre>
   5951 
   5952  <p>Contributing multibindings from different modules is supported. For
   5953  example, it is okay to have both {@code CandyModule} and {@code ChipsModule}
   5954  to both create their own {@code Multibinder<Snack>}, and to each contribute
   5955  bindings to the set of snacks. When that set is injected, it will contain
   5956  elements from both modules.
   5957  
   5958  <p>The set's iteration order is consistent with the binding order. This is
   5959  convenient when multiple elements are contributed by the same module because
   5960  that module can order its bindings appropriately. Avoid relying on the
   5961  iteration order of elements contributed by different modules, since there is
   5962  no equivalent mechanism to order modules.
   5963  
   5964  <p>The set is unmodifiable.  Elements can only be added to the set by
   5965  configuring the multibinder.  Elements can never be removed from the set.
   5966 
   5967  <p>Elements are resolved at set injection time. If an element is bound to a
   5968  provider, that provider's get method will be called each time the set is
   5969  injected (unless the binding is also scoped).
   5970 
   5971  <p>Annotations are be used to create different sets of the same element
   5972  type. Each distinct annotation gets its own independent collection of
   5973  elements.
   5974 
   5975  <p><strong>Elements must be distinct.</strong> If multiple bound elements
   5976  have the same value, set injection will fail.
   5977 
   5978  <p><strong>Elements must be non-null.</strong> If any set element is null,
   5979  set injection will fail.
   5980 
   5981  @author jessewilson (a] google.com (Jesse Wilson)]]>
   5982     </doc>
   5983   </class>
   5984   <!-- end class com.google.inject.multibindings.Multibinder -->
   5985   <!-- start interface com.google.inject.multibindings.MultibinderBinding -->
   5986   <interface name="MultibinderBinding"    abstract="true"
   5987     static="false" final="false" visibility="public"
   5988     deprecated="not deprecated">
   5989     <method name="getSetKey" return="com.google.inject.Key&lt;T&gt;"
   5990       abstract="false" native="false" synchronized="false"
   5991       static="false" final="false" visibility="public"
   5992       deprecated="not deprecated">
   5993       <doc>
   5994       <![CDATA[Returns the key for the set.]]>
   5995       </doc>
   5996     </method>
   5997     <method name="getElementTypeLiteral" return="com.google.inject.TypeLiteral&lt;?&gt;"
   5998       abstract="false" native="false" synchronized="false"
   5999       static="false" final="false" visibility="public"
   6000       deprecated="not deprecated">
   6001       <doc>
   6002       <![CDATA[Returns the TypeLiteral that describes the type of elements in the set.
   6003  <p>
   6004  The elements will always match the type Set's generic type. For example, if getSetKey returns a
   6005  key of <code>Set&lt;String></code>, then this will always return a
   6006  <code>TypeLiteral&lt;String></code>.]]>
   6007       </doc>
   6008     </method>
   6009     <method name="getElements" return="java.util.List&lt;com.google.inject.Binding&lt;?&gt;&gt;"
   6010       abstract="false" native="false" synchronized="false"
   6011       static="false" final="false" visibility="public"
   6012       deprecated="not deprecated">
   6013       <doc>
   6014       <![CDATA[Returns all bindings that make up the set. This is only supported on bindings returned from an
   6015  injector. This will throw {@link UnsupportedOperationException} if it is called on an element
   6016  retrieved from {@link Elements#getElements}.
   6017  <p>
   6018  The elements will always match the type Set's generic type. For example, if getSetKey returns a
   6019  key of <code>Set&lt;String></code>, then this will always return a list of type
   6020  <code>List&lt;Binding&lt;String>></code>.]]>
   6021       </doc>
   6022     </method>
   6023     <method name="permitsDuplicates" return="boolean"
   6024       abstract="false" native="false" synchronized="false"
   6025       static="false" final="false" visibility="public"
   6026       deprecated="not deprecated">
   6027       <doc>
   6028       <![CDATA[Returns true if the multibinder permits duplicates. This is only supported on bindings returned
   6029  from an injector. This will throw {@link UnsupportedOperationException} if it is called on a
   6030  MultibinderBinding retrieved from {@link Elements#getElements}.]]>
   6031       </doc>
   6032     </method>
   6033     <method name="containsElement" return="boolean"
   6034       abstract="false" native="false" synchronized="false"
   6035       static="false" final="false" visibility="public"
   6036       deprecated="not deprecated">
   6037       <param name="element" type="com.google.inject.spi.Element"/>
   6038       <doc>
   6039       <![CDATA[Returns true if this Multibinder uses the given Element. This will be true for bindings that
   6040  derive the elements of the set and other bindings that Multibinder uses internally. This will
   6041  work for MultibinderBindings retrieved from an injector and {@link Elements#getElements}.
   6042  Usually this is only necessary if you are working with elements retrieved from modules (without
   6043  an Injector), otherwise {@link #getElements} and {@link #permitsDuplicates} are better options.
   6044  <p>
   6045  If you need to introspect the details of the set, such as the values or if it permits
   6046  duplicates, it is necessary to pass the elements through an Injector and use
   6047  {@link #getElements()} and {@link #permitsDuplicates()}.]]>
   6048       </doc>
   6049     </method>
   6050     <doc>
   6051     <![CDATA[A binding for a Multibinder.
   6052  
   6053  @param <T> The fully qualified type of the set, including Set. For example:
   6054           <code>MultibinderBinding&lt;Set&lt;Boolean>></code>
   6055  
   6056  @since 3.0
   6057  @author sameb (a] google.com (Sam Berlin)]]>
   6058     </doc>
   6059   </interface>
   6060   <!-- end interface com.google.inject.multibindings.MultibinderBinding -->
   6061   <!-- start interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
   6062   <interface name="MultibindingsTargetVisitor"    abstract="true"
   6063     static="false" final="false" visibility="public"
   6064     deprecated="not deprecated">
   6065     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   6066     <method name="visit" return="V"
   6067       abstract="false" native="false" synchronized="false"
   6068       static="false" final="false" visibility="public"
   6069       deprecated="not deprecated">
   6070       <param name="multibinding" type="com.google.inject.multibindings.MultibinderBinding&lt;? extends T&gt;"/>
   6071       <doc>
   6072       <![CDATA[Visits a binding created through {@link Multibinder}.]]>
   6073       </doc>
   6074     </method>
   6075     <method name="visit" return="V"
   6076       abstract="false" native="false" synchronized="false"
   6077       static="false" final="false" visibility="public"
   6078       deprecated="not deprecated">
   6079       <param name="mapbinding" type="com.google.inject.multibindings.MapBinderBinding&lt;? extends T&gt;"/>
   6080       <doc>
   6081       <![CDATA[Visits a binding created through {@link MapBinder}.]]>
   6082       </doc>
   6083     </method>
   6084     <doc>
   6085     <![CDATA[A visitor for the multibinder extension.
   6086  <p>
   6087  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   6088  {@link Multibinder} or {@link MapBinder} will be visited through this interface.
   6089  
   6090  @since 3.0
   6091  @author sameb (a] google.com (Sam Berlin)]]>
   6092     </doc>
   6093   </interface>
   6094   <!-- end interface com.google.inject.multibindings.MultibindingsTargetVisitor -->
   6095 </package>
   6096 <package name="com.google.inject.name">
   6097   <!-- start class com.google.inject.name.Named -->
   6098   <class name="Named"    abstract="true"
   6099     static="false" final="false" visibility="public"
   6100     deprecated="not deprecated">
   6101     <implements name="java.lang.annotation.Annotation"/>
   6102     <doc>
   6103     <![CDATA[Annotates named things.
   6104 
   6105  @author crazybob (a] google.com (Bob Lee)]]>
   6106     </doc>
   6107   </class>
   6108   <!-- end class com.google.inject.name.Named -->
   6109   <!-- start class com.google.inject.name.Names -->
   6110   <class name="Names" extends="java.lang.Object"
   6111     abstract="false"
   6112     static="false" final="false" visibility="public"
   6113     deprecated="not deprecated">
   6114     <method name="named" return="com.google.inject.name.Named"
   6115       abstract="false" native="false" synchronized="false"
   6116       static="true" final="false" visibility="public"
   6117       deprecated="not deprecated">
   6118       <param name="name" type="java.lang.String"/>
   6119       <doc>
   6120       <![CDATA[Creates a {@link Named} annotation with {@code name} as the value.]]>
   6121       </doc>
   6122     </method>
   6123     <method name="bindProperties"
   6124       abstract="false" native="false" synchronized="false"
   6125       static="true" final="false" visibility="public"
   6126       deprecated="not deprecated">
   6127       <param name="binder" type="com.google.inject.Binder"/>
   6128       <param name="properties" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6129       <doc>
   6130       <![CDATA[Creates a constant binding to {@code @Named(key)} for each entry in
   6131  {@code properties}.]]>
   6132       </doc>
   6133     </method>
   6134     <method name="bindProperties"
   6135       abstract="false" native="false" synchronized="false"
   6136       static="true" final="false" visibility="public"
   6137       deprecated="not deprecated">
   6138       <param name="binder" type="com.google.inject.Binder"/>
   6139       <param name="properties" type="java.util.Properties"/>
   6140       <doc>
   6141       <![CDATA[Creates a constant binding to {@code @Named(key)} for each property. This
   6142  method binds all properties including those inherited from 
   6143  {@link Properties#defaults defaults}.]]>
   6144       </doc>
   6145     </method>
   6146     <doc>
   6147     <![CDATA[Utility methods for use with {@code @}{@link Named}.
   6148 
   6149  @author crazybob (a] google.com (Bob Lee)]]>
   6150     </doc>
   6151   </class>
   6152   <!-- end class com.google.inject.name.Names -->
   6153 </package>
   6154 <package name="com.google.inject.persist">
   6155   <!-- start class com.google.inject.persist.PersistFilter -->
   6156   <class name="PersistFilter" extends="java.lang.Object"
   6157     abstract="false"
   6158     static="false" final="true" visibility="public"
   6159     deprecated="not deprecated">
   6160     <constructor name="PersistFilter" type="com.google.inject.persist.UnitOfWork, com.google.inject.persist.PersistService"
   6161       static="false" final="false" visibility="public"
   6162       deprecated="not deprecated">
   6163     </constructor>
   6164     <method name="init"
   6165       abstract="false" native="false" synchronized="false"
   6166       static="false" final="false" visibility="public"
   6167       deprecated="not deprecated">
   6168       <param name="filterConfig" type="FilterConfig"/>
   6169       <exception name="ServletException" type="ServletException"/>
   6170     </method>
   6171     <method name="destroy"
   6172       abstract="false" native="false" synchronized="false"
   6173       static="false" final="false" visibility="public"
   6174       deprecated="not deprecated">
   6175     </method>
   6176     <method name="doFilter"
   6177       abstract="false" native="false" synchronized="false"
   6178       static="false" final="false" visibility="public"
   6179       deprecated="not deprecated">
   6180       <param name="servletRequest" type="ServletRequest"/>
   6181       <param name="servletResponse" type="ServletResponse"/>
   6182       <param name="filterChain" type="FilterChain"/>
   6183       <exception name="IOException" type="java.io.IOException"/>
   6184       <exception name="ServletException" type="ServletException"/>
   6185     </method>
   6186     <doc>
   6187     <![CDATA[Apply this filter to enable the HTTP Request unit of work and to have
   6188  guice-persist manage the lifecycle of active units of work.
   6189  The filter automatically starts and stops the relevant {@link PersistService}
   6190  upon {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and
   6191  {@link javax.servlet.Filter#destroy()} respectively.
   6192 
   6193  <p> To be able to use the open session-in-view pattern (i.e. work per request),
   6194  register this filter <b>once</b> in your Guice {@code ServletModule}. It is
   6195  important that you register this filter before any other filter.
   6196 
   6197  For multiple providers, you should register this filter once per provider, inside
   6198  a private module for each persist module installed (this must be the same private
   6199  module where the specific persist module is itself installed).
   6200 
   6201  <p>
   6202  Example configuration:
   6203  <pre>{@code
   6204   public class MyModule extends ServletModule {
   6205     public void configureServlets() {
   6206       filter("/*").through(PersistFilter.class);
   6207 
   6208       serve("/index.html").with(MyHtmlServlet.class);
   6209       // Etc.
   6210     }
   6211   }
   6212  }</pre>
   6213  <p>
   6214  This filter is thread safe and allows you to create injectors concurrently
   6215  and deploy multiple guice-persist modules within the same injector, or even
   6216  multiple injectors with persist modules withing the same JVM or web app.
   6217  <p>
   6218  This filter requires the Guice Servlet extension.
   6219 
   6220  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6221     </doc>
   6222   </class>
   6223   <!-- end class com.google.inject.persist.PersistFilter -->
   6224   <!-- start class com.google.inject.persist.PersistModule -->
   6225   <class name="PersistModule" extends="com.google.inject.AbstractModule"
   6226     abstract="true"
   6227     static="false" final="false" visibility="public"
   6228     deprecated="not deprecated">
   6229     <constructor name="PersistModule"
   6230       static="false" final="false" visibility="public"
   6231       deprecated="not deprecated">
   6232     </constructor>
   6233     <method name="configure"
   6234       abstract="false" native="false" synchronized="false"
   6235       static="false" final="true" visibility="protected"
   6236       deprecated="not deprecated">
   6237     </method>
   6238     <method name="configurePersistence"
   6239       abstract="true" native="false" synchronized="false"
   6240       static="false" final="false" visibility="protected"
   6241       deprecated="not deprecated">
   6242     </method>
   6243     <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
   6244       abstract="true" native="false" synchronized="false"
   6245       static="false" final="false" visibility="protected"
   6246       deprecated="not deprecated">
   6247     </method>
   6248     <doc>
   6249     <![CDATA[Install this module to add guice-persist library support for JPA persistence
   6250  providers.
   6251 
   6252  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6253     </doc>
   6254   </class>
   6255   <!-- end class com.google.inject.persist.PersistModule -->
   6256   <!-- start interface com.google.inject.persist.PersistService -->
   6257   <interface name="PersistService"    abstract="true"
   6258     static="false" final="false" visibility="public"
   6259     deprecated="not deprecated">
   6260     <method name="start"
   6261       abstract="false" native="false" synchronized="false"
   6262       static="false" final="false" visibility="public"
   6263       deprecated="not deprecated">
   6264       <doc>
   6265       <![CDATA[Starts the underlying persistence engine and makes guice-persist ready for
   6266  use. For instance, with JPA, it creates an EntityManagerFactory and may
   6267  open connection pools. This method must be called by your code prior to
   6268  using any guice-persist or JPA artifacts. If already started,
   6269  calling this method does nothing, if already stopped, it also does
   6270  nothing.]]>
   6271       </doc>
   6272     </method>
   6273     <method name="stop"
   6274       abstract="false" native="false" synchronized="false"
   6275       static="false" final="false" visibility="public"
   6276       deprecated="not deprecated">
   6277       <doc>
   6278       <![CDATA[Stops the underlying persistence engine. For instance, with JPA, it
   6279  closes the {@code EntityManagerFactory}. If already stopped, calling this
   6280  method does nothing. If not yet started, it also does nothing.]]>
   6281       </doc>
   6282     </method>
   6283     <doc>
   6284     <![CDATA[Persistence provider service. Use this to manage the overall
   6285  startup and stop of the persistence module(s).
   6286 
   6287  TODO(dhanji): Integrate with Service API when appropriate.
   6288 
   6289  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6290     </doc>
   6291   </interface>
   6292   <!-- end interface com.google.inject.persist.PersistService -->
   6293   <!-- start class com.google.inject.persist.Transactional -->
   6294   <class name="Transactional"    abstract="true"
   6295     static="false" final="false" visibility="public"
   6296     deprecated="not deprecated">
   6297     <implements name="java.lang.annotation.Annotation"/>
   6298     <doc>
   6299     <![CDATA[<p> Any method or class marked with this annotation will be considered for transactionality.
   6300  Consult the documentation on http://code.google.com/p/google-guice for detailed semantics.
   6301  Marking a method {@code @Transactional} will start a new transaction before the method
   6302  executes and commit it after the method returns.
   6303  <p>
   6304  If the method throws an exception, the transaction will be rolled back <em>unless</em>
   6305  you have specifically requested not to in the {@link #ignore()} clause.
   6306  <p>
   6307  Similarly, the set of exceptions that will trigger a rollback can be defined in
   6308  the {@link #rollbackOn()} clause. By default, only unchecked exceptions trigger a
   6309  rollback.
   6310 
   6311  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6312     </doc>
   6313   </class>
   6314   <!-- end class com.google.inject.persist.Transactional -->
   6315   <!-- start interface com.google.inject.persist.UnitOfWork -->
   6316   <interface name="UnitOfWork"    abstract="true"
   6317     static="false" final="false" visibility="public"
   6318     deprecated="not deprecated">
   6319     <method name="begin"
   6320       abstract="false" native="false" synchronized="false"
   6321       static="false" final="false" visibility="public"
   6322       deprecated="not deprecated">
   6323       <doc>
   6324       <![CDATA[Starts a Unit Of Work. Underneath, causes a session to the data layer to be opened. If there
   6325  is already one open, the invocation will do nothing. In this way, you can define arbitrary
   6326  units-of-work that nest within one another safely.
   6327 
   6328  Transaction semantics are not affected.]]>
   6329       </doc>
   6330     </method>
   6331     <method name="end"
   6332       abstract="false" native="false" synchronized="false"
   6333       static="false" final="false" visibility="public"
   6334       deprecated="not deprecated">
   6335       <doc>
   6336       <![CDATA[Declares an end to the current Unit of Work. Underneath, causes any open session to the data
   6337  layer to close. If there is no Unit of work open, then the call returns silently. You can
   6338  safely invoke end() repeatedly.
   6339  <p>
   6340  Transaction semantics are not affected.]]>
   6341       </doc>
   6342     </method>
   6343     <doc>
   6344     <![CDATA[This interface is used to gain manual control over the unit of work. This is mostly to do
   6345  work in non-request, non-transactional threads. Or where more fine-grained control over the unit
   6346  of work is required. Starting and ending a unit of work directly corresponds to opening and
   6347  closing a {@code Session}, {@code EntityManager} or {@code ObjectContainer} respectively.
   6348  <p> The
   6349  Unit of Work referred to by UnitOfWork will always be local to the calling thread. Be careful to
   6350  end() in a finally block. Neither JPA, nor Hibernate supports threadsafe sessions (reasoning
   6351  behind thread-locality of Unit of Work semantics).
   6352 
   6353  <ul>
   6354    <li>Using UnitOfWork with the PersistFilter inside a request is not recommended.</li>
   6355    <li>Using UnitOfWork with session-per-txn strategy is not terribly clever either.</li>
   6356    <li>Using UnitOfWork with session-per-request strategy but *outside* a request (i.e. in a
   6357        background or bootstrap thread) is probably a good use case.</li>
   6358   </ul>
   6359 
   6360  @author Dhanji R. Prasanna (dhanji@gmail com)]]>
   6361     </doc>
   6362   </interface>
   6363   <!-- end interface com.google.inject.persist.UnitOfWork -->
   6364 </package>
   6365 <package name="com.google.inject.persist.finder">
   6366   <!-- start class com.google.inject.persist.finder.DynamicFinder -->
   6367   <class name="DynamicFinder" extends="java.lang.Object"
   6368     abstract="false"
   6369     static="false" final="true" visibility="public"
   6370     deprecated="not deprecated">
   6371     <constructor name="DynamicFinder" type="java.lang.reflect.Method"
   6372       static="false" final="false" visibility="public"
   6373       deprecated="not deprecated">
   6374     </constructor>
   6375     <method name="from" return="com.google.inject.persist.finder.DynamicFinder"
   6376       abstract="false" native="false" synchronized="false"
   6377       static="true" final="false" visibility="public"
   6378       deprecated="not deprecated">
   6379       <param name="method" type="java.lang.reflect.Method"/>
   6380       <doc>
   6381       <![CDATA[Returns some metadata if the method is annotated {@code @Finder} or null.
   6382 
   6383  @param method a method you want to test as a dynamic finder]]>
   6384       </doc>
   6385     </method>
   6386     <method name="metadata" return="com.google.inject.persist.finder.Finder"
   6387       abstract="false" native="false" synchronized="false"
   6388       static="false" final="false" visibility="public"
   6389       deprecated="not deprecated">
   6390     </method>
   6391     <doc>
   6392     <![CDATA[Utility that helps you introspect dynamic finder methods.
   6393 
   6394  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6395     </doc>
   6396   </class>
   6397   <!-- end class com.google.inject.persist.finder.DynamicFinder -->
   6398   <!-- start class com.google.inject.persist.finder.Finder -->
   6399   <class name="Finder"    abstract="true"
   6400     static="false" final="false" visibility="public"
   6401     deprecated="not deprecated">
   6402     <implements name="java.lang.annotation.Annotation"/>
   6403     <doc>
   6404     <![CDATA[Marks a method stub as a dynamic finder. The method is intercepted and replaced with the
   6405  specified JPAQL query. Provides result auto-boxing and automatic parameter binding.
   6406 
   6407  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6408     </doc>
   6409   </class>
   6410   <!-- end class com.google.inject.persist.finder.Finder -->
   6411   <!-- start class com.google.inject.persist.finder.FirstResult -->
   6412   <class name="FirstResult"    abstract="true"
   6413     static="false" final="false" visibility="public"
   6414     deprecated="not deprecated">
   6415     <implements name="java.lang.annotation.Annotation"/>
   6416     <doc>
   6417     <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
   6418  the index of the first result in the result set you are interested in.
   6419  Useful for paging result sets. Complemented by {@link MaxResults}.
   6420 
   6421  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6422     </doc>
   6423   </class>
   6424   <!-- end class com.google.inject.persist.finder.FirstResult -->
   6425   <!-- start class com.google.inject.persist.finder.MaxResults -->
   6426   <class name="MaxResults"    abstract="true"
   6427     static="false" final="false" visibility="public"
   6428     deprecated="not deprecated">
   6429     <implements name="java.lang.annotation.Annotation"/>
   6430     <doc>
   6431     <![CDATA[Annotate any dynamic finder method's integer argument with this to pass in
   6432  the maximum size of returned result window. Usefule for paging result sets.
   6433  Complement of {@link FirstResult}.
   6434 
   6435  @author Dhanji R. Prasanna (dhanji (a] gmail.com)]]>
   6436     </doc>
   6437   </class>
   6438   <!-- end class com.google.inject.persist.finder.MaxResults -->
   6439 </package>
   6440 <package name="com.google.inject.persist.jpa">
   6441   <!-- start class com.google.inject.persist.jpa.JpaPersistModule -->
   6442   <class name="JpaPersistModule" extends="com.google.inject.persist.PersistModule"
   6443     abstract="false"
   6444     static="false" final="true" visibility="public"
   6445     deprecated="not deprecated">
   6446     <constructor name="JpaPersistModule" type="java.lang.String"
   6447       static="false" final="false" visibility="public"
   6448       deprecated="not deprecated">
   6449     </constructor>
   6450     <method name="configurePersistence"
   6451       abstract="false" native="false" synchronized="false"
   6452       static="false" final="false" visibility="protected"
   6453       deprecated="not deprecated">
   6454     </method>
   6455     <method name="getTransactionInterceptor" return="org.aopalliance.intercept.MethodInterceptor"
   6456       abstract="false" native="false" synchronized="false"
   6457       static="false" final="false" visibility="protected"
   6458       deprecated="not deprecated">
   6459     </method>
   6460     <method name="properties" return="com.google.inject.persist.jpa.JpaPersistModule"
   6461       abstract="false" native="false" synchronized="false"
   6462       static="false" final="false" visibility="public"
   6463       deprecated="not deprecated">
   6464       <param name="properties" type="java.util.Properties"/>
   6465       <doc>
   6466       <![CDATA[Configures the JPA persistence provider with a set of properties.
   6467  
   6468  @param properties A set of name value pairs that configure a JPA persistence
   6469  provider as per the specification.]]>
   6470       </doc>
   6471     </method>
   6472     <method name="addFinder" return="com.google.inject.persist.jpa.JpaPersistModule"
   6473       abstract="false" native="false" synchronized="false"
   6474       static="false" final="false" visibility="public"
   6475       deprecated="not deprecated">
   6476       <param name="iface" type="java.lang.Class&lt;T&gt;"/>
   6477       <doc>
   6478       <![CDATA[Adds an interface to this module to use as a dynamic finder.
   6479 
   6480  @param iface Any interface type whose methods are all dynamic finders.]]>
   6481       </doc>
   6482     </method>
   6483     <doc>
   6484     <![CDATA[JPA provider for guice persist.
   6485 
   6486  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6487     </doc>
   6488   </class>
   6489   <!-- end class com.google.inject.persist.jpa.JpaPersistModule -->
   6490 </package>
   6491 <package name="com.google.inject.servlet">
   6492   <!-- start class com.google.inject.servlet.GuiceFilter -->
   6493   <class name="GuiceFilter" extends="java.lang.Object"
   6494     abstract="false"
   6495     static="false" final="false" visibility="public"
   6496     deprecated="not deprecated">
   6497     <constructor name="GuiceFilter"
   6498       static="false" final="false" visibility="public"
   6499       deprecated="not deprecated">
   6500     </constructor>
   6501     <method name="doFilter"
   6502       abstract="false" native="false" synchronized="false"
   6503       static="false" final="false" visibility="public"
   6504       deprecated="not deprecated">
   6505       <param name="servletRequest" type="ServletRequest"/>
   6506       <param name="servletResponse" type="ServletResponse"/>
   6507       <param name="filterChain" type="FilterChain"/>
   6508       <exception name="IOException" type="java.io.IOException"/>
   6509       <exception name="ServletException" type="ServletException"/>
   6510     </method>
   6511     <method name="init"
   6512       abstract="false" native="false" synchronized="false"
   6513       static="false" final="false" visibility="public"
   6514       deprecated="not deprecated">
   6515       <param name="filterConfig" type="FilterConfig"/>
   6516       <exception name="ServletException" type="ServletException"/>
   6517     </method>
   6518     <method name="destroy"
   6519       abstract="false" native="false" synchronized="false"
   6520       static="false" final="false" visibility="public"
   6521       deprecated="not deprecated">
   6522     </method>
   6523     <doc>
   6524     <![CDATA[<p>
   6525  Apply this filter in web.xml above all other filters (typically), to all requests where you plan
   6526   to use servlet scopes. This is also needed in order to dispatch requests to injectable filters
   6527   and servlets:
   6528   <pre>
   6529   &lt;filter&gt;
   6530     &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
   6531     &lt;filter-class&gt;<b>com.google.inject.servlet.GuiceFilter</b>&lt;/filter-class&gt;
   6532   &lt;/filter&gt;
   6533 
   6534   &lt;filter-mapping&gt;
   6535     &lt;filter-name&gt;guiceFilter&lt;/filter-name&gt;
   6536     &lt;url-pattern&gt;/*&lt;/url-pattern&gt;
   6537   &lt;/filter-mapping&gt;
   6538   </pre>
   6539 
   6540  This filter must appear before every filter that makes use of Guice injection or servlet
   6541  scopes functionality. Typically, you will only register this filter in web.xml and register
   6542  any other filters (and servlets) using a {@link ServletModule}.
   6543 
   6544  @author crazybob (a] google.com (Bob Lee)
   6545  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6546     </doc>
   6547   </class>
   6548   <!-- end class com.google.inject.servlet.GuiceFilter -->
   6549   <!-- start class com.google.inject.servlet.GuiceServletContextListener -->
   6550   <class name="GuiceServletContextListener" extends="java.lang.Object"
   6551     abstract="true"
   6552     static="false" final="false" visibility="public"
   6553     deprecated="not deprecated">
   6554     <constructor name="GuiceServletContextListener"
   6555       static="false" final="false" visibility="public"
   6556       deprecated="not deprecated">
   6557     </constructor>
   6558     <method name="contextInitialized"
   6559       abstract="false" native="false" synchronized="false"
   6560       static="false" final="false" visibility="public"
   6561       deprecated="not deprecated">
   6562       <param name="servletContextEvent" type="ServletContextEvent"/>
   6563     </method>
   6564     <method name="contextDestroyed"
   6565       abstract="false" native="false" synchronized="false"
   6566       static="false" final="false" visibility="public"
   6567       deprecated="not deprecated">
   6568       <param name="servletContextEvent" type="ServletContextEvent"/>
   6569     </method>
   6570     <method name="getInjector" return="com.google.inject.Injector"
   6571       abstract="true" native="false" synchronized="false"
   6572       static="false" final="false" visibility="protected"
   6573       deprecated="not deprecated">
   6574       <doc>
   6575       <![CDATA[Override this method to create (or otherwise obtain a reference to) your
   6576  injector.]]>
   6577       </doc>
   6578     </method>
   6579     <doc>
   6580     <![CDATA[As of Guice 2.0 you can still use (your subclasses of) {@code GuiceServletContextListener}
   6581  class as a logical place to create and configure your injector. This will ensure the injector
   6582  is created when the web application is deployed.
   6583  
   6584  @author Kevin Bourrillion (kevinb (a] google.com)
   6585  @since 2.0]]>
   6586     </doc>
   6587   </class>
   6588   <!-- end class com.google.inject.servlet.GuiceServletContextListener -->
   6589   <!-- start interface com.google.inject.servlet.InstanceFilterBinding -->
   6590   <interface name="InstanceFilterBinding"    abstract="true"
   6591     static="false" final="false" visibility="public"
   6592     deprecated="not deprecated">
   6593     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   6594     <method name="getFilterInstance" return="Filter"
   6595       abstract="false" native="false" synchronized="false"
   6596       static="false" final="false" visibility="public"
   6597       deprecated="not deprecated">
   6598       <doc>
   6599       <![CDATA[Returns the filter instance that will be used.]]>
   6600       </doc>
   6601     </method>
   6602     <doc>
   6603     <![CDATA[A binding to a single instance of a filter. 
   6604 
   6605  @author sameb (a] google.com
   6606  @since 3.0]]>
   6607     </doc>
   6608   </interface>
   6609   <!-- end interface com.google.inject.servlet.InstanceFilterBinding -->
   6610   <!-- start interface com.google.inject.servlet.InstanceServletBinding -->
   6611   <interface name="InstanceServletBinding"    abstract="true"
   6612     static="false" final="false" visibility="public"
   6613     deprecated="not deprecated">
   6614     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   6615     <method name="getServletInstance" return="HttpServlet"
   6616       abstract="false" native="false" synchronized="false"
   6617       static="false" final="false" visibility="public"
   6618       deprecated="not deprecated">
   6619       <doc>
   6620       <![CDATA[Returns the servlet instance that will be used.]]>
   6621       </doc>
   6622     </method>
   6623     <doc>
   6624     <![CDATA[A binding to a single instance of a servlet. 
   6625 
   6626  @author sameb (a] google.com
   6627  @since 3.0]]>
   6628     </doc>
   6629   </interface>
   6630   <!-- end interface com.google.inject.servlet.InstanceServletBinding -->
   6631   <!-- start interface com.google.inject.servlet.LinkedFilterBinding -->
   6632   <interface name="LinkedFilterBinding"    abstract="true"
   6633     static="false" final="false" visibility="public"
   6634     deprecated="not deprecated">
   6635     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   6636     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends Filter&gt;"
   6637       abstract="false" native="false" synchronized="false"
   6638       static="false" final="false" visibility="public"
   6639       deprecated="not deprecated">
   6640       <doc>
   6641       <![CDATA[Returns the key used to lookup the filter instance.]]>
   6642       </doc>
   6643     </method>
   6644     <doc>
   6645     <![CDATA[A linked binding to a filter. 
   6646 
   6647  @author sameb (a] google.com
   6648  @since 3.0]]>
   6649     </doc>
   6650   </interface>
   6651   <!-- end interface com.google.inject.servlet.LinkedFilterBinding -->
   6652   <!-- start interface com.google.inject.servlet.LinkedServletBinding -->
   6653   <interface name="LinkedServletBinding"    abstract="true"
   6654     static="false" final="false" visibility="public"
   6655     deprecated="not deprecated">
   6656     <implements name="com.google.inject.servlet.ServletModuleBinding"/>
   6657     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends HttpServlet&gt;"
   6658       abstract="false" native="false" synchronized="false"
   6659       static="false" final="false" visibility="public"
   6660       deprecated="not deprecated">
   6661       <doc>
   6662       <![CDATA[Returns the key used to lookup the servlet instance.]]>
   6663       </doc>
   6664     </method>
   6665     <doc>
   6666     <![CDATA[A linked binding to a servlet. 
   6667 
   6668  @author sameb (a] google.com
   6669  @since 3.0]]>
   6670     </doc>
   6671   </interface>
   6672   <!-- end interface com.google.inject.servlet.LinkedServletBinding -->
   6673   <!-- start class com.google.inject.servlet.RequestParameters -->
   6674   <class name="RequestParameters"    abstract="true"
   6675     static="false" final="false" visibility="public"
   6676     deprecated="not deprecated">
   6677     <implements name="java.lang.annotation.Annotation"/>
   6678     <doc>
   6679     <![CDATA[Apply this to field or parameters of type {@code Map<String, String[]>}
   6680  when you want the HTTP request parameter map to be injected.
   6681 
   6682  @author crazybob (a] google.com (Bob Lee)]]>
   6683     </doc>
   6684   </class>
   6685   <!-- end class com.google.inject.servlet.RequestParameters -->
   6686   <!-- start class com.google.inject.servlet.RequestScoped -->
   6687   <class name="RequestScoped"    abstract="true"
   6688     static="false" final="false" visibility="public"
   6689     deprecated="not deprecated">
   6690     <implements name="java.lang.annotation.Annotation"/>
   6691     <doc>
   6692     <![CDATA[Apply this to implementation classes when you want one instance per request.
   6693 
   6694  @author crazybob (a] google.com (Bob Lee)]]>
   6695     </doc>
   6696   </class>
   6697   <!-- end class com.google.inject.servlet.RequestScoped -->
   6698   <!-- start class com.google.inject.servlet.ServletModule -->
   6699   <class name="ServletModule" extends="com.google.inject.AbstractModule"
   6700     abstract="false"
   6701     static="false" final="false" visibility="public"
   6702     deprecated="not deprecated">
   6703     <constructor name="ServletModule"
   6704       static="false" final="false" visibility="public"
   6705       deprecated="not deprecated">
   6706     </constructor>
   6707     <method name="configure"
   6708       abstract="false" native="false" synchronized="false"
   6709       static="false" final="true" visibility="protected"
   6710       deprecated="not deprecated">
   6711     </method>
   6712     <method name="configureServlets"
   6713       abstract="false" native="false" synchronized="false"
   6714       static="false" final="false" visibility="protected"
   6715       deprecated="not deprecated">
   6716       <doc>
   6717       <![CDATA[<h3>Servlet Mapping EDSL</h3>
   6718 
   6719  <p> Part of the EDSL builder language for configuring servlets
   6720  and filters with guice-servlet. Think of this as an in-code replacement for web.xml.
   6721  Filters and servlets are configured here using simple java method calls. Here is a typical
   6722  example of registering a filter when creating your Guice injector:
   6723 
   6724  <pre>
   6725    Guice.createInjector(..., new ServletModule() {
   6726 
   6727      {@literal @}Override
   6728      protected void configureServlets() {
   6729        <b>serve("*.html").with(MyServlet.class)</b>
   6730      }
   6731    }
   6732  </pre>
   6733 
   6734  This registers a servlet (subclass of {@code HttpServlet}) called {@code MyServlet} to service
   6735  any web pages ending in {@code .html}. You can also use a path-style syntax to register
   6736  servlets:
   6737 
   6738  <pre>
   6739        <b>serve("/my/*").with(MyServlet.class)</b>
   6740  </pre>
   6741 
   6742  Every servlet (or filter) is required to be a singleton. If you cannot annotate the class
   6743  directly, you should add a separate {@code bind(..).in(Singleton.class)} rule elsewhere in
   6744  your module. Mapping a servlet that is bound under any other scope is an error.
   6745 
   6746  <p>
   6747  <h4>Dispatch Order</h4>
   6748  You are free to register as many servlets and filters as you like this way. They will
   6749  be compared and dispatched in the order in which the filter methods are called:
   6750 
   6751  <pre>
   6752 
   6753    Guice.createInjector(..., new ServletModule() {
   6754 
   6755      {@literal @}Override
   6756      protected void configureServlets() {
   6757        filter("/*").through(MyFilter.class);
   6758        filter("*.css").through(MyCssFilter.class);
   6759        filter("*.jpg").through(new MyJpgFilter());
   6760        // etc..
   6761 
   6762        serve("*.html").with(MyServlet.class);
   6763        serve("/my/*").with(MyServlet.class);
   6764        serve("*.jpg").with(new MyServlet());
   6765        // etc..
   6766       }
   6767     }
   6768  </pre>
   6769  This will traverse down the list of rules in lexical order. For example, a url
   6770   "{@code /my/file.js}" (after it runs through the matching filters) will first
   6771   be compared against the servlet mapping:
   6772  
   6773  <pre>
   6774        serve("*.html").with(MyServlet.class);
   6775  </pre>
   6776  And failing that, it will descend to the next servlet mapping:
   6777 
   6778  <pre>
   6779        serve("/my/*").with(MyServlet.class);
   6780  </pre>
   6781 
   6782  Since this rule matches, Guice Servlet will dispatch to {@code MyServlet}. These
   6783  two mapping rules can also be written in more compact form using varargs syntax:
   6784 
   6785  <pre>
   6786        serve(<b>"*.html", "/my/*"</b>).with(MyServlet.class);
   6787  </pre>
   6788  
   6789  This way you can map several URI patterns to the same servlet. A similar syntax is
   6790  also available for filter mappings.
   6791 
   6792  <p>
   6793  <h4>Regular Expressions</h4>
   6794  You can also map servlets (or filters) to URIs using regular expressions:
   6795  <pre>
   6796     <b>serveRegex("(.)*ajax(.)*").with(MyAjaxServlet.class)</b>
   6797  </pre>
   6798 
   6799  This will map any URI containing the text "ajax" in it to {@code MyAjaxServlet}. Such as:
   6800  <ul>
   6801  <li>http://www.google.com/ajax.html</li>
   6802  <li>http://www.google.com/content/ajax/index</li>
   6803  <li>http://www.google.com/it/is_totally_ajaxian</li>
   6804  </ul>
   6805 
   6806 
   6807  <h3>Initialization Parameters</h3>
   6808 
   6809  Servlets (and filters) allow you to pass in init params
   6810  using the {@code <init-param>} tag in web.xml. You can similarly pass in parameters to
   6811  Servlets and filters registered in Guice-servlet using a {@link java.util.Map} of parameter
   6812  name/value pairs. For example, to initialize {@code MyServlet} with two parameters
   6813  ({@code name="Dhanji", site="google.com"}) you could write:
   6814 
   6815  <pre>
   6816   Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;();
   6817   params.put("name", "Dhanji");
   6818   params.put("site", "google.com");
   6819 
   6820   ...
   6821       serve("/*").with(MyServlet.class, <b>params</b>)
   6822  </pre>
   6823 
   6824  <p>
   6825  <h3>Binding Keys</h3>
   6826 
   6827  You can also bind keys rather than classes. This lets you hide
   6828  implementations with package-local visbility and expose them using
   6829  only a Guice module and an annotation:
   6830 
   6831  <pre>
   6832   ...
   6833       filter("/*").through(<b>Key.get(Filter.class, Fave.class)</b>);
   6834  </pre>
   6835 
   6836  Where {@code Filter.class} refers to the Servlet API interface and {@code Fave.class} is a
   6837  custom binding annotation. Elsewhere (in one of your own modules) you can bind this
   6838  filter's implementation:
   6839 
   6840  <pre>
   6841    bind(Filter.class)<b>.annotatedWith(Fave.class)</b>.to(MyFilterImpl.class);
   6842  </pre>
   6843 
   6844  See {@link com.google.inject.Binder} for more information on binding syntax.
   6845 
   6846  <p>
   6847  <h3>Multiple Modules</h3>
   6848 
   6849  It is sometimes useful to capture servlet and filter mappings from multiple different
   6850  modules. This is essential if you want to package and offer drop-in Guice plugins that
   6851  provide servlet functionality.
   6852 
   6853  <p>
   6854  Guice Servlet allows you to register several instances of {@code ServletModule} to your
   6855  injector. The order in which these modules are installed determines the dispatch order
   6856  of filters and the precedence order of servlets. For example, if you had two servlet modules,
   6857  {@code RpcModule} and {@code WebServiceModule} and they each contained a filter that mapped
   6858  to the same URI pattern, {@code "/*"}:
   6859 
   6860  <p>
   6861  In {@code RpcModule}:
   6862  <pre>
   6863      filter("/*").through(RpcFilter.class);
   6864  </pre>
   6865 
   6866  In {@code WebServiceModule}:
   6867  <pre>
   6868      filter("/*").through(WebServiceFilter.class);
   6869  </pre>
   6870 
   6871  Then the order in which these filters are dispatched is determined by the order in which
   6872  the modules are installed:
   6873 
   6874  <pre>
   6875    <b>install(new WebServiceModule());</b>
   6876    install(new RpcModule());
   6877  </pre>
   6878 
   6879  In the case shown above {@code WebServiceFilter} will run first.
   6880  
   6881  @since 2.0]]>
   6882       </doc>
   6883     </method>
   6884     <method name="filter" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   6885       abstract="false" native="false" synchronized="false"
   6886       static="false" final="true" visibility="protected"
   6887       deprecated="not deprecated">
   6888       <param name="urlPattern" type="java.lang.String"/>
   6889       <param name="morePatterns" type="java.lang.String[]"/>
   6890       <doc>
   6891       <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
   6892  @since 2.0]]>
   6893       </doc>
   6894     </method>
   6895     <method name="filterRegex" return="com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder"
   6896       abstract="false" native="false" synchronized="false"
   6897       static="false" final="true" visibility="protected"
   6898       deprecated="not deprecated">
   6899       <param name="regex" type="java.lang.String"/>
   6900       <param name="regexes" type="java.lang.String[]"/>
   6901       <doc>
   6902       <![CDATA[@param regex Any Java-style regular expression.
   6903  @since 2.0]]>
   6904       </doc>
   6905     </method>
   6906     <method name="serve" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   6907       abstract="false" native="false" synchronized="false"
   6908       static="false" final="true" visibility="protected"
   6909       deprecated="not deprecated">
   6910       <param name="urlPattern" type="java.lang.String"/>
   6911       <param name="morePatterns" type="java.lang.String[]"/>
   6912       <doc>
   6913       <![CDATA[@param urlPattern Any Servlet-style pattern. examples: /*, /html/*, *.html, etc.
   6914  @since 2.0]]>
   6915       </doc>
   6916     </method>
   6917     <method name="serveRegex" return="com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder"
   6918       abstract="false" native="false" synchronized="false"
   6919       static="false" final="true" visibility="protected"
   6920       deprecated="not deprecated">
   6921       <param name="regex" type="java.lang.String"/>
   6922       <param name="regexes" type="java.lang.String[]"/>
   6923       <doc>
   6924       <![CDATA[@param regex Any Java-style regular expression.
   6925  @since 2.0]]>
   6926       </doc>
   6927     </method>
   6928     <method name="getServletContext" return="ServletContext"
   6929       abstract="false" native="false" synchronized="false"
   6930       static="false" final="true" visibility="protected"
   6931       deprecated="not deprecated">
   6932       <doc>
   6933       <![CDATA[This method only works if you are using the {@linkplain GuiceServletContextListener} to
   6934  create your injector. Otherwise, it returns null.
   6935  @return The current servlet context.
   6936  @since 3.0]]>
   6937       </doc>
   6938     </method>
   6939     <doc>
   6940     <![CDATA[Configures the servlet scopes and creates bindings for the servlet API
   6941  objects so you can inject the request, response, session, etc.
   6942 
   6943  <p>
   6944  You should subclass this module to register servlets and
   6945  filters in the {@link #configureServlets()} method.
   6946 
   6947  @author crazybob (a] google.com (Bob Lee)
   6948  @author dhanji (a] gmail.com (Dhanji R. Prasanna)]]>
   6949     </doc>
   6950   </class>
   6951   <!-- end class com.google.inject.servlet.ServletModule -->
   6952   <!-- start interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
   6953   <interface name="ServletModule.FilterKeyBindingBuilder"    abstract="true"
   6954     static="true" final="false" visibility="public"
   6955     deprecated="not deprecated">
   6956     <method name="through"
   6957       abstract="false" native="false" synchronized="false"
   6958       static="false" final="false" visibility="public"
   6959       deprecated="not deprecated">
   6960       <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
   6961     </method>
   6962     <method name="through"
   6963       abstract="false" native="false" synchronized="false"
   6964       static="false" final="false" visibility="public"
   6965       deprecated="not deprecated">
   6966       <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
   6967     </method>
   6968     <method name="through"
   6969       abstract="false" native="false" synchronized="false"
   6970       static="false" final="false" visibility="public"
   6971       deprecated="not deprecated">
   6972       <param name="filter" type="Filter"/>
   6973       <doc>
   6974       <![CDATA[@since 3.0]]>
   6975       </doc>
   6976     </method>
   6977     <method name="through"
   6978       abstract="false" native="false" synchronized="false"
   6979       static="false" final="false" visibility="public"
   6980       deprecated="not deprecated">
   6981       <param name="filterKey" type="java.lang.Class&lt;? extends Filter&gt;"/>
   6982       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6983     </method>
   6984     <method name="through"
   6985       abstract="false" native="false" synchronized="false"
   6986       static="false" final="false" visibility="public"
   6987       deprecated="not deprecated">
   6988       <param name="filterKey" type="com.google.inject.Key&lt;? extends Filter&gt;"/>
   6989       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6990     </method>
   6991     <method name="through"
   6992       abstract="false" native="false" synchronized="false"
   6993       static="false" final="false" visibility="public"
   6994       deprecated="not deprecated">
   6995       <param name="filter" type="Filter"/>
   6996       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   6997       <doc>
   6998       <![CDATA[@since 3.0]]>
   6999       </doc>
   7000     </method>
   7001     <doc>
   7002     <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
   7003 
   7004  @since 2.0]]>
   7005     </doc>
   7006   </interface>
   7007   <!-- end interface com.google.inject.servlet.ServletModule.FilterKeyBindingBuilder -->
   7008   <!-- start interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
   7009   <interface name="ServletModule.ServletKeyBindingBuilder"    abstract="true"
   7010     static="true" final="false" visibility="public"
   7011     deprecated="not deprecated">
   7012     <method name="with"
   7013       abstract="false" native="false" synchronized="false"
   7014       static="false" final="false" visibility="public"
   7015       deprecated="not deprecated">
   7016       <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
   7017     </method>
   7018     <method name="with"
   7019       abstract="false" native="false" synchronized="false"
   7020       static="false" final="false" visibility="public"
   7021       deprecated="not deprecated">
   7022       <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
   7023     </method>
   7024     <method name="with"
   7025       abstract="false" native="false" synchronized="false"
   7026       static="false" final="false" visibility="public"
   7027       deprecated="not deprecated">
   7028       <param name="servlet" type="HttpServlet"/>
   7029       <doc>
   7030       <![CDATA[@since 3.0]]>
   7031       </doc>
   7032     </method>
   7033     <method name="with"
   7034       abstract="false" native="false" synchronized="false"
   7035       static="false" final="false" visibility="public"
   7036       deprecated="not deprecated">
   7037       <param name="servletKey" type="java.lang.Class&lt;? extends HttpServlet&gt;"/>
   7038       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7039     </method>
   7040     <method name="with"
   7041       abstract="false" native="false" synchronized="false"
   7042       static="false" final="false" visibility="public"
   7043       deprecated="not deprecated">
   7044       <param name="servletKey" type="com.google.inject.Key&lt;? extends HttpServlet&gt;"/>
   7045       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7046     </method>
   7047     <method name="with"
   7048       abstract="false" native="false" synchronized="false"
   7049       static="false" final="false" visibility="public"
   7050       deprecated="not deprecated">
   7051       <param name="servlet" type="HttpServlet"/>
   7052       <param name="initParams" type="java.util.Map&lt;java.lang.String, java.lang.String&gt;"/>
   7053       <doc>
   7054       <![CDATA[@since 3.0]]>
   7055       </doc>
   7056     </method>
   7057     <doc>
   7058     <![CDATA[See the EDSL examples at {@link ServletModule#configureServlets()}
   7059 
   7060  @since 2.0]]>
   7061     </doc>
   7062   </interface>
   7063   <!-- end interface com.google.inject.servlet.ServletModule.ServletKeyBindingBuilder -->
   7064   <!-- start interface com.google.inject.servlet.ServletModuleBinding -->
   7065   <interface name="ServletModuleBinding"    abstract="true"
   7066     static="false" final="false" visibility="public"
   7067     deprecated="not deprecated">
   7068     <method name="getUriPatternType" return="com.google.inject.servlet.UriPatternType"
   7069       abstract="false" native="false" synchronized="false"
   7070       static="false" final="false" visibility="public"
   7071       deprecated="not deprecated">
   7072       <doc>
   7073       <![CDATA[Returns the pattern type that this binding was created with.]]>
   7074       </doc>
   7075     </method>
   7076     <method name="getPattern" return="java.lang.String"
   7077       abstract="false" native="false" synchronized="false"
   7078       static="false" final="false" visibility="public"
   7079       deprecated="not deprecated">
   7080       <doc>
   7081       <![CDATA[Returns the pattern used to match against the binding.]]>
   7082       </doc>
   7083     </method>
   7084     <method name="getInitParams" return="java.util.Map&lt;java.lang.String, java.lang.String&gt;"
   7085       abstract="false" native="false" synchronized="false"
   7086       static="false" final="false" visibility="public"
   7087       deprecated="not deprecated">
   7088       <doc>
   7089       <![CDATA[Returns any context params supplied when creating the binding.]]>
   7090       </doc>
   7091     </method>
   7092     <method name="matchesUri" return="boolean"
   7093       abstract="false" native="false" synchronized="false"
   7094       static="false" final="false" visibility="public"
   7095       deprecated="not deprecated">
   7096       <param name="uri" type="java.lang.String"/>
   7097       <doc>
   7098       <![CDATA[Returns true if the given URI will match this binding.]]>
   7099       </doc>
   7100     </method>
   7101     <doc>
   7102     <![CDATA[A binding created by {@link ServletModule}.
   7103  
   7104  @author sameb (a] google.com (Sam Berlin)
   7105  @since 3.0]]>
   7106     </doc>
   7107   </interface>
   7108   <!-- end interface com.google.inject.servlet.ServletModuleBinding -->
   7109   <!-- start interface com.google.inject.servlet.ServletModuleTargetVisitor -->
   7110   <interface name="ServletModuleTargetVisitor"    abstract="true"
   7111     static="false" final="false" visibility="public"
   7112     deprecated="not deprecated">
   7113     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   7114     <method name="visit" return="V"
   7115       abstract="false" native="false" synchronized="false"
   7116       static="false" final="false" visibility="public"
   7117       deprecated="not deprecated">
   7118       <param name="binding" type="com.google.inject.servlet.LinkedFilterBinding"/>
   7119       <doc>
   7120       <![CDATA[Visits a filter binding created by {@link ServletModule#filter}, where
   7121  {@link FilterKeyBindingBuilder#through} is called with a Class or Key.
   7122  
   7123  If multiple patterns were specified, this will be called multiple times.]]>
   7124       </doc>
   7125     </method>
   7126     <method name="visit" return="V"
   7127       abstract="false" native="false" synchronized="false"
   7128       static="false" final="false" visibility="public"
   7129       deprecated="not deprecated">
   7130       <param name="binding" type="com.google.inject.servlet.InstanceFilterBinding"/>
   7131       <doc>
   7132       <![CDATA[Visits a filter binding created by {@link ServletModule#filter} where
   7133  {@link FilterKeyBindingBuilder#through} is called with a {@link Filter}.
   7134  
   7135  If multiple patterns were specified, this will be called multiple times.]]>
   7136       </doc>
   7137     </method>
   7138     <method name="visit" return="V"
   7139       abstract="false" native="false" synchronized="false"
   7140       static="false" final="false" visibility="public"
   7141       deprecated="not deprecated">
   7142       <param name="binding" type="com.google.inject.servlet.LinkedServletBinding"/>
   7143       <doc>
   7144       <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where
   7145  {@link ServletKeyBindingBuilder#with}, is called with a Class or Key.
   7146  
   7147  If multiple patterns were specified, this will be called multiple times.]]>
   7148       </doc>
   7149     </method>
   7150     <method name="visit" return="V"
   7151       abstract="false" native="false" synchronized="false"
   7152       static="false" final="false" visibility="public"
   7153       deprecated="not deprecated">
   7154       <param name="binding" type="com.google.inject.servlet.InstanceServletBinding"/>
   7155       <doc>
   7156       <![CDATA[Visits a servlet binding created by {@link ServletModule#serve} where 
   7157  {@link ServletKeyBindingBuilder#with}, is called with an {@link HttpServlet}.
   7158  
   7159  If multiple patterns were specified, this will be called multiple times.]]>
   7160       </doc>
   7161     </method>
   7162     <doc>
   7163     <![CDATA[A visitor for the servlet extension.
   7164  
   7165  If your {@link BindingTargetVisitor} implements this interface, bindings created by using
   7166  {@link ServletModule} will be visited through this interface.
   7167  
   7168  @since 3.0
   7169  @author sameb (a] google.com (Sam Berlin)]]>
   7170     </doc>
   7171   </interface>
   7172   <!-- end interface com.google.inject.servlet.ServletModuleTargetVisitor -->
   7173   <!-- start class com.google.inject.servlet.ServletScopes -->
   7174   <class name="ServletScopes" extends="java.lang.Object"
   7175     abstract="false"
   7176     static="false" final="false" visibility="public"
   7177     deprecated="not deprecated">
   7178     <method name="continueRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7179       abstract="false" native="false" synchronized="false"
   7180       static="true" final="false" visibility="public"
   7181       deprecated="not deprecated">
   7182       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7183       <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
   7184       <doc>
   7185       <![CDATA[Wraps the given callable in a contextual callable that "continues" the
   7186  HTTP request in another thread. This acts as a way of transporting
   7187  request context data from the request processing thread to to worker
   7188  threads.
   7189  <p>
   7190  There are some limitations:
   7191  <ul>
   7192    <li>Derived objects (i.e. anything marked @RequestScoped will not be
   7193       transported.</li>
   7194    <li>State changes to the HttpServletRequest after this method is called
   7195       will not be seen in the continued thread.</li>
   7196    <li>Only the HttpServletRequest, ServletContext and request parameter
   7197       map are available in the continued thread. The response and session
   7198       are not available.</li>
   7199  </ul>
   7200 
   7201  @param callable code to be executed in another thread, which depends on
   7202      the request scope.
   7203  @param seedMap the initial set of scoped instances for Guice to seed the
   7204      request scope with.  To seed a key with null, use {@code null} as
   7205      the value.
   7206  @return a callable that will invoke the given callable, making the request
   7207      context available to it.
   7208  @throws OutOfScopeException if this method is called from a non-request
   7209      thread, or if the request has completed.
   7210  
   7211  @since 3.0]]>
   7212       </doc>
   7213     </method>
   7214     <method name="scopeRequest" return="java.util.concurrent.Callable&lt;T&gt;"
   7215       abstract="false" native="false" synchronized="false"
   7216       static="true" final="false" visibility="public"
   7217       deprecated="not deprecated">
   7218       <param name="callable" type="java.util.concurrent.Callable&lt;T&gt;"/>
   7219       <param name="seedMap" type="java.util.Map&lt;com.google.inject.Key&lt;?&gt;, java.lang.Object&gt;"/>
   7220       <doc>
   7221       <![CDATA[Scopes the given callable inside a request scope. This is not the same
   7222  as the HTTP request scope, but is used if no HTTP request scope is in
   7223  progress. In this way, keys can be scoped as @RequestScoped and exist
   7224  in non-HTTP requests (for example: RPC requests) as well as in HTTP
   7225  request threads.
   7226 
   7227  @param callable code to be executed which depends on the request scope.
   7228      Typically in another thread, but not necessarily so.
   7229  @param seedMap the initial set of scoped instances for Guice to seed the
   7230      request scope with.  To seed a key with null, use {@code null} as
   7231      the value.
   7232  @return a callable that when called will run inside the a request scope
   7233      that exposes the instances in the {@code seedMap} as scoped keys.
   7234  @since 3.0]]>
   7235       </doc>
   7236     </method>
   7237     <field name="REQUEST" type="com.google.inject.Scope"
   7238       transient="false" volatile="false"
   7239       static="true" final="true" visibility="public"
   7240       deprecated="not deprecated">
   7241       <doc>
   7242       <![CDATA[HTTP servlet request scope.]]>
   7243       </doc>
   7244     </field>
   7245     <field name="SESSION" type="com.google.inject.Scope"
   7246       transient="false" volatile="false"
   7247       static="true" final="true" visibility="public"
   7248       deprecated="not deprecated">
   7249       <doc>
   7250       <![CDATA[HTTP session scope.]]>
   7251       </doc>
   7252     </field>
   7253     <doc>
   7254     <![CDATA[Servlet scopes.
   7255 
   7256  @author crazybob (a] google.com (Bob Lee)]]>
   7257     </doc>
   7258   </class>
   7259   <!-- end class com.google.inject.servlet.ServletScopes -->
   7260   <!-- start class com.google.inject.servlet.SessionScoped -->
   7261   <class name="SessionScoped"    abstract="true"
   7262     static="false" final="false" visibility="public"
   7263     deprecated="not deprecated">
   7264     <implements name="java.lang.annotation.Annotation"/>
   7265     <doc>
   7266     <![CDATA[Apply this to implementation classes when you want one instance per session.
   7267 
   7268  @see com.google.inject.Scopes#SINGLETON
   7269  @author crazybob (a] google.com (Bob Lee)]]>
   7270     </doc>
   7271   </class>
   7272   <!-- end class com.google.inject.servlet.SessionScoped -->
   7273   <!-- start class com.google.inject.servlet.UriPatternType -->
   7274   <class name="UriPatternType" extends="java.lang.Enum&lt;com.google.inject.servlet.UriPatternType&gt;"
   7275     abstract="false"
   7276     static="false" final="true" visibility="public"
   7277     deprecated="not deprecated">
   7278     <method name="values" return="com.google.inject.servlet.UriPatternType[]"
   7279       abstract="false" native="false" synchronized="false"
   7280       static="true" final="false" visibility="public"
   7281       deprecated="not deprecated">
   7282     </method>
   7283     <method name="valueOf" return="com.google.inject.servlet.UriPatternType"
   7284       abstract="false" native="false" synchronized="false"
   7285       static="true" final="false" visibility="public"
   7286       deprecated="not deprecated">
   7287       <param name="name" type="java.lang.String"/>
   7288     </method>
   7289     <doc>
   7290     <![CDATA[An enumeration of the available URI-pattern matching styles
   7291  
   7292  @since 3.0]]>
   7293     </doc>
   7294   </class>
   7295   <!-- end class com.google.inject.servlet.UriPatternType -->
   7296 </package>
   7297 <package name="com.google.inject.spi">
   7298   <!-- start interface com.google.inject.spi.BindingScopingVisitor -->
   7299   <interface name="BindingScopingVisitor"    abstract="true"
   7300     static="false" final="false" visibility="public"
   7301     deprecated="not deprecated">
   7302     <method name="visitEagerSingleton" return="V"
   7303       abstract="false" native="false" synchronized="false"
   7304       static="false" final="false" visibility="public"
   7305       deprecated="not deprecated">
   7306       <doc>
   7307       <![CDATA[Visit an eager singleton or single instance. This scope strategy is found on both module and
   7308  injector bindings.]]>
   7309       </doc>
   7310     </method>
   7311     <method name="visitScope" return="V"
   7312       abstract="false" native="false" synchronized="false"
   7313       static="false" final="false" visibility="public"
   7314       deprecated="not deprecated">
   7315       <param name="scope" type="com.google.inject.Scope"/>
   7316       <doc>
   7317       <![CDATA[Visit a scope instance. This scope strategy is found on both module and injector bindings.]]>
   7318       </doc>
   7319     </method>
   7320     <method name="visitScopeAnnotation" return="V"
   7321       abstract="false" native="false" synchronized="false"
   7322       static="false" final="false" visibility="public"
   7323       deprecated="not deprecated">
   7324       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   7325       <doc>
   7326       <![CDATA[Visit a scope annotation. This scope strategy is found only on module bindings. The instance
   7327  that implements this scope is registered by {@link com.google.inject.Binder#bindScope(Class,
   7328  Scope) Binder.bindScope()}.]]>
   7329       </doc>
   7330     </method>
   7331     <method name="visitNoScoping" return="V"
   7332       abstract="false" native="false" synchronized="false"
   7333       static="false" final="false" visibility="public"
   7334       deprecated="not deprecated">
   7335       <doc>
   7336       <![CDATA[Visit an unspecified or unscoped strategy. On a module, this strategy indicates that the
   7337  injector should use scoping annotations to find a scope. On an injector, it indicates that
   7338  no scope is applied to the binding. An unscoped binding will behave like a scoped one when it
   7339  is linked to a scoped binding.]]>
   7340       </doc>
   7341     </method>
   7342     <doc>
   7343     <![CDATA[Visits each of the strategies used to scope an injection.
   7344 
   7345  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7346      {@code return null} if no return type is needed.
   7347  @since 2.0]]>
   7348     </doc>
   7349   </interface>
   7350   <!-- end interface com.google.inject.spi.BindingScopingVisitor -->
   7351   <!-- start interface com.google.inject.spi.BindingTargetVisitor -->
   7352   <interface name="BindingTargetVisitor"    abstract="true"
   7353     static="false" final="false" visibility="public"
   7354     deprecated="not deprecated">
   7355     <method name="visit" return="V"
   7356       abstract="false" native="false" synchronized="false"
   7357       static="false" final="false" visibility="public"
   7358       deprecated="not deprecated">
   7359       <param name="binding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
   7360       <doc>
   7361       <![CDATA[Visit a instance binding. The same instance is returned for every injection. This target is
   7362  found in both module and injector bindings.]]>
   7363       </doc>
   7364     </method>
   7365     <method name="visit" return="V"
   7366       abstract="false" native="false" synchronized="false"
   7367       static="false" final="false" visibility="public"
   7368       deprecated="not deprecated">
   7369       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
   7370       <doc>
   7371       <![CDATA[Visit a provider instance binding. The provider's {@code get} method is invoked to resolve
   7372  injections. This target is found in both module and injector bindings.]]>
   7373       </doc>
   7374     </method>
   7375     <method name="visit" return="V"
   7376       abstract="false" native="false" synchronized="false"
   7377       static="false" final="false" visibility="public"
   7378       deprecated="not deprecated">
   7379       <param name="binding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
   7380       <doc>
   7381       <![CDATA[Visit a provider key binding. To resolve injections, the provider key is first resolved, then
   7382  that provider's {@code get} method is invoked. This target is found in both module and injector
   7383  bindings.]]>
   7384       </doc>
   7385     </method>
   7386     <method name="visit" return="V"
   7387       abstract="false" native="false" synchronized="false"
   7388       static="false" final="false" visibility="public"
   7389       deprecated="not deprecated">
   7390       <param name="binding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
   7391       <doc>
   7392       <![CDATA[Visit a linked key binding. The other key's binding is used to resolve injections. This
   7393  target is found in both module and injector bindings.]]>
   7394       </doc>
   7395     </method>
   7396     <method name="visit" return="V"
   7397       abstract="false" native="false" synchronized="false"
   7398       static="false" final="false" visibility="public"
   7399       deprecated="not deprecated">
   7400       <param name="binding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
   7401       <doc>
   7402       <![CDATA[Visit a binding to a key exposed from an enclosed private environment. This target is only
   7403  found in injector bindings.]]>
   7404       </doc>
   7405     </method>
   7406     <method name="visit" return="V"
   7407       abstract="false" native="false" synchronized="false"
   7408       static="false" final="false" visibility="public"
   7409       deprecated="not deprecated">
   7410       <param name="binding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
   7411       <doc>
   7412       <![CDATA[Visit an untargetted binding. This target is found only on module bindings. It indicates
   7413  that the injector should use its implicit binding strategies to resolve injections.]]>
   7414       </doc>
   7415     </method>
   7416     <method name="visit" return="V"
   7417       abstract="false" native="false" synchronized="false"
   7418       static="false" final="false" visibility="public"
   7419       deprecated="not deprecated">
   7420       <param name="binding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
   7421       <doc>
   7422       <![CDATA[Visit a constructor binding. To resolve injections, an instance is instantiated by invoking
   7423  {@code constructor}. This target is found only on injector bindings.]]>
   7424       </doc>
   7425     </method>
   7426     <method name="visit" return="V"
   7427       abstract="false" native="false" synchronized="false"
   7428       static="false" final="false" visibility="public"
   7429       deprecated="not deprecated">
   7430       <param name="binding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
   7431       <doc>
   7432       <![CDATA[Visit a binding created from converting a bound instance to a new type. The source binding
   7433  has the same binding annotation but a different type. This target is found only on injector
   7434  bindings.]]>
   7435       </doc>
   7436     </method>
   7437     <method name="visit" return="V"
   7438       abstract="false" native="false" synchronized="false"
   7439       static="false" final="false" visibility="public"
   7440       deprecated="not deprecated">
   7441       <param name="binding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
   7442       <doc>
   7443       <![CDATA[Visit a binding to a {@link com.google.inject.Provider} that delegates to the binding for the
   7444  provided type. This target is found only on injector bindings.]]>
   7445       </doc>
   7446     </method>
   7447     <doc>
   7448     <![CDATA[Visits each of the strategies used to find an instance to satisfy an injection.
   7449 
   7450  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7451      {@code return null} if no return type is needed.
   7452  @since 2.0]]>
   7453     </doc>
   7454   </interface>
   7455   <!-- end interface com.google.inject.spi.BindingTargetVisitor -->
   7456   <!-- start interface com.google.inject.spi.ConstructorBinding -->
   7457   <interface name="ConstructorBinding"    abstract="true"
   7458     static="false" final="false" visibility="public"
   7459     deprecated="not deprecated">
   7460     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   7461     <implements name="com.google.inject.spi.HasDependencies"/>
   7462     <method name="getConstructor" return="com.google.inject.spi.InjectionPoint"
   7463       abstract="false" native="false" synchronized="false"
   7464       static="false" final="false" visibility="public"
   7465       deprecated="not deprecated">
   7466       <doc>
   7467       <![CDATA[Gets the constructor this binding injects.]]>
   7468       </doc>
   7469     </method>
   7470     <method name="getInjectableMembers" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   7471       abstract="false" native="false" synchronized="false"
   7472       static="false" final="false" visibility="public"
   7473       deprecated="not deprecated">
   7474       <doc>
   7475       <![CDATA[Returns all instance method and field injection points on {@code type}.
   7476 
   7477  @return a possibly empty set of injection points. The set has a specified iteration order. All
   7478       fields are returned and then all methods. Within the fields, supertype fields are returned
   7479       before subtype fields. Similarly, supertype methods are returned before subtype methods.]]>
   7480       </doc>
   7481     </method>
   7482     <method name="getMethodInterceptors" return="java.util.Map&lt;java.lang.reflect.Method, java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;&gt;"
   7483       abstract="false" native="false" synchronized="false"
   7484       static="false" final="false" visibility="public"
   7485       deprecated="not deprecated">
   7486       <doc>
   7487       <![CDATA[Returns the interceptors applied to each method, in the order that they will be applied.
   7488 
   7489  @return a possibly empty map]]>
   7490       </doc>
   7491     </method>
   7492     <doc>
   7493     <![CDATA[A binding to the constructor of a concrete clss. To resolve injections, an instance is
   7494  instantiated by invoking the constructor.
   7495 
   7496  @author jessewilson (a] google.com (Jesse Wilson)
   7497  @since 2.0]]>
   7498     </doc>
   7499   </interface>
   7500   <!-- end interface com.google.inject.spi.ConstructorBinding -->
   7501   <!-- start interface com.google.inject.spi.ConvertedConstantBinding -->
   7502   <interface name="ConvertedConstantBinding"    abstract="true"
   7503     static="false" final="false" visibility="public"
   7504     deprecated="not deprecated">
   7505     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   7506     <implements name="com.google.inject.spi.HasDependencies"/>
   7507     <method name="getValue" return="T"
   7508       abstract="false" native="false" synchronized="false"
   7509       static="false" final="false" visibility="public"
   7510       deprecated="not deprecated">
   7511       <doc>
   7512       <![CDATA[Returns the converted value.]]>
   7513       </doc>
   7514     </method>
   7515     <method name="getTypeConverterBinding" return="com.google.inject.spi.TypeConverterBinding"
   7516       abstract="false" native="false" synchronized="false"
   7517       static="false" final="false" visibility="public"
   7518       deprecated="not deprecated">
   7519       <doc>
   7520       <![CDATA[Returns the type converter binding used to convert the constant.
   7521  
   7522  @since 3.0]]>
   7523       </doc>
   7524     </method>
   7525     <method name="getSourceKey" return="com.google.inject.Key&lt;java.lang.String&gt;"
   7526       abstract="false" native="false" synchronized="false"
   7527       static="false" final="false" visibility="public"
   7528       deprecated="not deprecated">
   7529       <doc>
   7530       <![CDATA[Returns the key for the source binding. That binding can e retrieved from an injector using
   7531  {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
   7532       </doc>
   7533     </method>
   7534     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   7535       abstract="false" native="false" synchronized="false"
   7536       static="false" final="false" visibility="public"
   7537       deprecated="not deprecated">
   7538       <doc>
   7539       <![CDATA[Returns a singleton set containing only the converted key.]]>
   7540       </doc>
   7541     </method>
   7542     <doc>
   7543     <![CDATA[A binding created from converting a bound instance to a new type. The source binding has the same
   7544  binding annotation but a different type.
   7545 
   7546  @author jessewilson (a] google.com (Jesse Wilson)
   7547  @since 2.0]]>
   7548     </doc>
   7549   </interface>
   7550   <!-- end interface com.google.inject.spi.ConvertedConstantBinding -->
   7551   <!-- start class com.google.inject.spi.DefaultBindingScopingVisitor -->
   7552   <class name="DefaultBindingScopingVisitor" extends="java.lang.Object"
   7553     abstract="false"
   7554     static="false" final="false" visibility="public"
   7555     deprecated="not deprecated">
   7556     <implements name="com.google.inject.spi.BindingScopingVisitor&lt;V&gt;"/>
   7557     <constructor name="DefaultBindingScopingVisitor"
   7558       static="false" final="false" visibility="public"
   7559       deprecated="not deprecated">
   7560     </constructor>
   7561     <method name="visitOther" return="V"
   7562       abstract="false" native="false" synchronized="false"
   7563       static="false" final="false" visibility="protected"
   7564       deprecated="not deprecated">
   7565       <doc>
   7566       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   7567       </doc>
   7568     </method>
   7569     <method name="visitEagerSingleton" return="V"
   7570       abstract="false" native="false" synchronized="false"
   7571       static="false" final="false" visibility="public"
   7572       deprecated="not deprecated">
   7573     </method>
   7574     <method name="visitScope" return="V"
   7575       abstract="false" native="false" synchronized="false"
   7576       static="false" final="false" visibility="public"
   7577       deprecated="not deprecated">
   7578       <param name="scope" type="com.google.inject.Scope"/>
   7579     </method>
   7580     <method name="visitScopeAnnotation" return="V"
   7581       abstract="false" native="false" synchronized="false"
   7582       static="false" final="false" visibility="public"
   7583       deprecated="not deprecated">
   7584       <param name="scopeAnnotation" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   7585     </method>
   7586     <method name="visitNoScoping" return="V"
   7587       abstract="false" native="false" synchronized="false"
   7588       static="false" final="false" visibility="public"
   7589       deprecated="not deprecated">
   7590     </method>
   7591     <doc>
   7592     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
   7593  {@link #visitOther()}, returning its result.
   7594 
   7595  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7596      {@code return null} if no return type is needed.
   7597  
   7598  @author jessewilson (a] google.com (Jesse Wilson)
   7599  @since 2.0]]>
   7600     </doc>
   7601   </class>
   7602   <!-- end class com.google.inject.spi.DefaultBindingScopingVisitor -->
   7603   <!-- start class com.google.inject.spi.DefaultBindingTargetVisitor -->
   7604   <class name="DefaultBindingTargetVisitor" extends="java.lang.Object"
   7605     abstract="true"
   7606     static="false" final="false" visibility="public"
   7607     deprecated="not deprecated">
   7608     <implements name="com.google.inject.spi.BindingTargetVisitor&lt;T, V&gt;"/>
   7609     <constructor name="DefaultBindingTargetVisitor"
   7610       static="false" final="false" visibility="public"
   7611       deprecated="not deprecated">
   7612     </constructor>
   7613     <method name="visitOther" return="V"
   7614       abstract="false" native="false" synchronized="false"
   7615       static="false" final="false" visibility="protected"
   7616       deprecated="not deprecated">
   7617       <param name="binding" type="com.google.inject.Binding&lt;? extends T&gt;"/>
   7618       <doc>
   7619       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   7620       </doc>
   7621     </method>
   7622     <method name="visit" return="V"
   7623       abstract="false" native="false" synchronized="false"
   7624       static="false" final="false" visibility="public"
   7625       deprecated="not deprecated">
   7626       <param name="instanceBinding" type="com.google.inject.spi.InstanceBinding&lt;? extends T&gt;"/>
   7627     </method>
   7628     <method name="visit" return="V"
   7629       abstract="false" native="false" synchronized="false"
   7630       static="false" final="false" visibility="public"
   7631       deprecated="not deprecated">
   7632       <param name="providerInstanceBinding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends T&gt;"/>
   7633     </method>
   7634     <method name="visit" return="V"
   7635       abstract="false" native="false" synchronized="false"
   7636       static="false" final="false" visibility="public"
   7637       deprecated="not deprecated">
   7638       <param name="providerKeyBinding" type="com.google.inject.spi.ProviderKeyBinding&lt;? extends T&gt;"/>
   7639     </method>
   7640     <method name="visit" return="V"
   7641       abstract="false" native="false" synchronized="false"
   7642       static="false" final="false" visibility="public"
   7643       deprecated="not deprecated">
   7644       <param name="linkedKeyBinding" type="com.google.inject.spi.LinkedKeyBinding&lt;? extends T&gt;"/>
   7645     </method>
   7646     <method name="visit" return="V"
   7647       abstract="false" native="false" synchronized="false"
   7648       static="false" final="false" visibility="public"
   7649       deprecated="not deprecated">
   7650       <param name="exposedBinding" type="com.google.inject.spi.ExposedBinding&lt;? extends T&gt;"/>
   7651     </method>
   7652     <method name="visit" return="V"
   7653       abstract="false" native="false" synchronized="false"
   7654       static="false" final="false" visibility="public"
   7655       deprecated="not deprecated">
   7656       <param name="untargettedBinding" type="com.google.inject.spi.UntargettedBinding&lt;? extends T&gt;"/>
   7657     </method>
   7658     <method name="visit" return="V"
   7659       abstract="false" native="false" synchronized="false"
   7660       static="false" final="false" visibility="public"
   7661       deprecated="not deprecated">
   7662       <param name="constructorBinding" type="com.google.inject.spi.ConstructorBinding&lt;? extends T&gt;"/>
   7663     </method>
   7664     <method name="visit" return="V"
   7665       abstract="false" native="false" synchronized="false"
   7666       static="false" final="false" visibility="public"
   7667       deprecated="not deprecated">
   7668       <param name="convertedConstantBinding" type="com.google.inject.spi.ConvertedConstantBinding&lt;? extends T&gt;"/>
   7669     </method>
   7670     <method name="visit" return="V"
   7671       abstract="false" native="false" synchronized="false"
   7672       static="false" final="false" visibility="public"
   7673       deprecated="not deprecated">
   7674       <param name="providerBinding" type="com.google.inject.spi.ProviderBinding&lt;? extends T&gt;"/>
   7675     </method>
   7676     <doc>
   7677     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to {@link
   7678  #visitOther(Binding)}, returning its result.
   7679 
   7680  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7681      {@code return null} if no return type is needed.
   7682 
   7683  @author jessewilson (a] google.com (Jesse Wilson)
   7684  @since 2.0]]>
   7685     </doc>
   7686   </class>
   7687   <!-- end class com.google.inject.spi.DefaultBindingTargetVisitor -->
   7688   <!-- start class com.google.inject.spi.DefaultElementVisitor -->
   7689   <class name="DefaultElementVisitor" extends="java.lang.Object"
   7690     abstract="true"
   7691     static="false" final="false" visibility="public"
   7692     deprecated="not deprecated">
   7693     <implements name="com.google.inject.spi.ElementVisitor&lt;V&gt;"/>
   7694     <constructor name="DefaultElementVisitor"
   7695       static="false" final="false" visibility="public"
   7696       deprecated="not deprecated">
   7697     </constructor>
   7698     <method name="visitOther" return="V"
   7699       abstract="false" native="false" synchronized="false"
   7700       static="false" final="false" visibility="protected"
   7701       deprecated="not deprecated">
   7702       <param name="element" type="com.google.inject.spi.Element"/>
   7703       <doc>
   7704       <![CDATA[Default visit implementation. Returns {@code null}.]]>
   7705       </doc>
   7706     </method>
   7707     <method name="visit" return="V"
   7708       abstract="false" native="false" synchronized="false"
   7709       static="false" final="false" visibility="public"
   7710       deprecated="not deprecated">
   7711       <param name="message" type="com.google.inject.spi.Message"/>
   7712     </method>
   7713     <method name="visit" return="V"
   7714       abstract="false" native="false" synchronized="false"
   7715       static="false" final="false" visibility="public"
   7716       deprecated="not deprecated">
   7717       <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
   7718     </method>
   7719     <method name="visit" return="V"
   7720       abstract="false" native="false" synchronized="false"
   7721       static="false" final="false" visibility="public"
   7722       deprecated="not deprecated">
   7723       <param name="interceptorBinding" type="com.google.inject.spi.InterceptorBinding"/>
   7724     </method>
   7725     <method name="visit" return="V"
   7726       abstract="false" native="false" synchronized="false"
   7727       static="false" final="false" visibility="public"
   7728       deprecated="not deprecated">
   7729       <param name="scopeBinding" type="com.google.inject.spi.ScopeBinding"/>
   7730     </method>
   7731     <method name="visit" return="V"
   7732       abstract="false" native="false" synchronized="false"
   7733       static="false" final="false" visibility="public"
   7734       deprecated="not deprecated">
   7735       <param name="typeConverterBinding" type="com.google.inject.spi.TypeConverterBinding"/>
   7736     </method>
   7737     <method name="visit" return="V"
   7738       abstract="false" native="false" synchronized="false"
   7739       static="false" final="false" visibility="public"
   7740       deprecated="not deprecated">
   7741       <param name="providerLookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
   7742     </method>
   7743     <method name="visit" return="V"
   7744       abstract="false" native="false" synchronized="false"
   7745       static="false" final="false" visibility="public"
   7746       deprecated="not deprecated">
   7747       <param name="injectionRequest" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
   7748     </method>
   7749     <method name="visit" return="V"
   7750       abstract="false" native="false" synchronized="false"
   7751       static="false" final="false" visibility="public"
   7752       deprecated="not deprecated">
   7753       <param name="staticInjectionRequest" type="com.google.inject.spi.StaticInjectionRequest"/>
   7754     </method>
   7755     <method name="visit" return="V"
   7756       abstract="false" native="false" synchronized="false"
   7757       static="false" final="false" visibility="public"
   7758       deprecated="not deprecated">
   7759       <param name="privateElements" type="com.google.inject.spi.PrivateElements"/>
   7760     </method>
   7761     <method name="visit" return="V"
   7762       abstract="false" native="false" synchronized="false"
   7763       static="false" final="false" visibility="public"
   7764       deprecated="not deprecated">
   7765       <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
   7766     </method>
   7767     <method name="visit" return="V"
   7768       abstract="false" native="false" synchronized="false"
   7769       static="false" final="false" visibility="public"
   7770       deprecated="not deprecated">
   7771       <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
   7772     </method>
   7773     <method name="visit" return="V"
   7774       abstract="false" native="false" synchronized="false"
   7775       static="false" final="false" visibility="public"
   7776       deprecated="not deprecated">
   7777       <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
   7778     </method>
   7779     <method name="visit" return="V"
   7780       abstract="false" native="false" synchronized="false"
   7781       static="false" final="false" visibility="public"
   7782       deprecated="not deprecated">
   7783       <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
   7784     </method>
   7785     <doc>
   7786     <![CDATA[No-op visitor for subclassing. All interface methods simply delegate to
   7787  {@link #visitOther(Element)}, returning its result.
   7788 
   7789  @param <V> any type to be returned by the visit method. Use {@link Void} with
   7790      {@code return null} if no return type is needed.
   7791 
   7792  @author sberlin (a] gmail.com (Sam Berlin)
   7793  @since 2.0]]>
   7794     </doc>
   7795   </class>
   7796   <!-- end class com.google.inject.spi.DefaultElementVisitor -->
   7797   <!-- start class com.google.inject.spi.Dependency -->
   7798   <class name="Dependency" extends="java.lang.Object"
   7799     abstract="false"
   7800     static="false" final="true" visibility="public"
   7801     deprecated="not deprecated">
   7802     <method name="get" return="com.google.inject.spi.Dependency&lt;T&gt;"
   7803       abstract="false" native="false" synchronized="false"
   7804       static="true" final="false" visibility="public"
   7805       deprecated="not deprecated">
   7806       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   7807       <doc>
   7808       <![CDATA[Returns a new dependency that is not attached to an injection point. The returned dependency is
   7809  nullable.]]>
   7810       </doc>
   7811     </method>
   7812     <method name="forInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   7813       abstract="false" native="false" synchronized="false"
   7814       static="true" final="false" visibility="public"
   7815       deprecated="not deprecated">
   7816       <param name="injectionPoints" type="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"/>
   7817       <doc>
   7818       <![CDATA[Returns the dependencies from the given injection points.]]>
   7819       </doc>
   7820     </method>
   7821     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   7822       abstract="false" native="false" synchronized="false"
   7823       static="false" final="false" visibility="public"
   7824       deprecated="not deprecated">
   7825       <doc>
   7826       <![CDATA[Returns the key to the binding that satisfies this dependency.]]>
   7827       </doc>
   7828     </method>
   7829     <method name="isNullable" return="boolean"
   7830       abstract="false" native="false" synchronized="false"
   7831       static="false" final="false" visibility="public"
   7832       deprecated="not deprecated">
   7833       <doc>
   7834       <![CDATA[Returns true if null is a legal value for this dependency.]]>
   7835       </doc>
   7836     </method>
   7837     <method name="getInjectionPoint" return="com.google.inject.spi.InjectionPoint"
   7838       abstract="false" native="false" synchronized="false"
   7839       static="false" final="false" visibility="public"
   7840       deprecated="not deprecated">
   7841       <doc>
   7842       <![CDATA[Returns the injection point to which this dependency belongs, or null if this dependency isn't
   7843  attached to a particular injection point.]]>
   7844       </doc>
   7845     </method>
   7846     <method name="getParameterIndex" return="int"
   7847       abstract="false" native="false" synchronized="false"
   7848       static="false" final="false" visibility="public"
   7849       deprecated="not deprecated">
   7850       <doc>
   7851       <![CDATA[Returns the index of this dependency in the injection point's parameter list, or {@code -1} if
   7852  this dependency does not belong to a parameter list. Only method and constuctor dependencies
   7853  are elements in a parameter list.]]>
   7854       </doc>
   7855     </method>
   7856     <method name="hashCode" return="int"
   7857       abstract="false" native="false" synchronized="false"
   7858       static="false" final="false" visibility="public"
   7859       deprecated="not deprecated">
   7860     </method>
   7861     <method name="equals" return="boolean"
   7862       abstract="false" native="false" synchronized="false"
   7863       static="false" final="false" visibility="public"
   7864       deprecated="not deprecated">
   7865       <param name="o" type="java.lang.Object"/>
   7866     </method>
   7867     <method name="toString" return="java.lang.String"
   7868       abstract="false" native="false" synchronized="false"
   7869       static="false" final="false" visibility="public"
   7870       deprecated="not deprecated">
   7871     </method>
   7872     <doc>
   7873     <![CDATA[A variable that can be resolved by an injector.
   7874 
   7875  <p>Use {@link #get} to build a freestanding dependency, or {@link InjectionPoint} to build one
   7876  that's attached to a constructor, method or field.
   7877 
   7878  @author crazybob (a] google.com (Bob Lee)
   7879  @author jessewilson (a] google.com (Jesse Wilson)
   7880  @since 2.0]]>
   7881     </doc>
   7882   </class>
   7883   <!-- end class com.google.inject.spi.Dependency -->
   7884   <!-- start class com.google.inject.spi.DisableCircularProxiesOption -->
   7885   <class name="DisableCircularProxiesOption" extends="java.lang.Object"
   7886     abstract="false"
   7887     static="false" final="true" visibility="public"
   7888     deprecated="not deprecated">
   7889     <implements name="com.google.inject.spi.Element"/>
   7890     <method name="getSource" return="java.lang.Object"
   7891       abstract="false" native="false" synchronized="false"
   7892       static="false" final="false" visibility="public"
   7893       deprecated="not deprecated">
   7894     </method>
   7895     <method name="applyTo"
   7896       abstract="false" native="false" synchronized="false"
   7897       static="false" final="false" visibility="public"
   7898       deprecated="not deprecated">
   7899       <param name="binder" type="com.google.inject.Binder"/>
   7900     </method>
   7901     <method name="acceptVisitor" return="T"
   7902       abstract="false" native="false" synchronized="false"
   7903       static="false" final="false" visibility="public"
   7904       deprecated="not deprecated">
   7905       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   7906     </method>
   7907     <doc>
   7908     <![CDATA[A request to disable circular proxies.
   7909 
   7910  @author sameb (a] google.com (Sam Berlin)
   7911  @since 3.0]]>
   7912     </doc>
   7913   </class>
   7914   <!-- end class com.google.inject.spi.DisableCircularProxiesOption -->
   7915   <!-- start interface com.google.inject.spi.Element -->
   7916   <interface name="Element"    abstract="true"
   7917     static="false" final="false" visibility="public"
   7918     deprecated="not deprecated">
   7919     <method name="getSource" return="java.lang.Object"
   7920       abstract="false" native="false" synchronized="false"
   7921       static="false" final="false" visibility="public"
   7922       deprecated="not deprecated">
   7923       <doc>
   7924       <![CDATA[Returns an arbitrary object containing information about the "place" where this element was
   7925  configured. Used by Guice in the production of descriptive error messages.
   7926 
   7927  <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
   7928  example. Tools should simply call {@code toString()} on the source object if the type is
   7929  unfamiliar.]]>
   7930       </doc>
   7931     </method>
   7932     <method name="acceptVisitor" return="T"
   7933       abstract="false" native="false" synchronized="false"
   7934       static="false" final="false" visibility="public"
   7935       deprecated="not deprecated">
   7936       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   7937       <doc>
   7938       <![CDATA[Accepts an element visitor. Invokes the visitor method specific to this element's type.
   7939 
   7940  @param visitor to call back on]]>
   7941       </doc>
   7942     </method>
   7943     <method name="applyTo"
   7944       abstract="false" native="false" synchronized="false"
   7945       static="false" final="false" visibility="public"
   7946       deprecated="not deprecated">
   7947       <param name="binder" type="com.google.inject.Binder"/>
   7948       <doc>
   7949       <![CDATA[Writes this module element to the given binder (optional operation).
   7950 
   7951  @param binder to apply configuration element to
   7952  @throws UnsupportedOperationException if the {@code applyTo} method is not supported by this
   7953      element.]]>
   7954       </doc>
   7955     </method>
   7956     <doc>
   7957     <![CDATA[A core component of a module or injector.
   7958 
   7959  <p>The elements of a module can be inspected, validated and rewritten. Use {@link
   7960  Elements#getElements(com.google.inject.Module[]) Elements.getElements()} to read the elements
   7961  from a module, and {@link Elements#getModule(Iterable) Elements.getModule()} to rewrite them.
   7962  This can be used for static analysis and generation of Guice modules.
   7963 
   7964  <p>The elements of an injector can be inspected and exercised. Use {@link
   7965  com.google.inject.Injector#getBindings Injector.getBindings()} to reflect on Guice injectors.
   7966 
   7967  @author jessewilson (a] google.com (Jesse Wilson)
   7968  @author crazybob (a] google.com (Bob Lee)
   7969  @since 2.0]]>
   7970     </doc>
   7971   </interface>
   7972   <!-- end interface com.google.inject.spi.Element -->
   7973   <!-- start class com.google.inject.spi.Elements -->
   7974   <class name="Elements" extends="java.lang.Object"
   7975     abstract="false"
   7976     static="false" final="true" visibility="public"
   7977     deprecated="not deprecated">
   7978     <constructor name="Elements"
   7979       static="false" final="false" visibility="public"
   7980       deprecated="not deprecated">
   7981     </constructor>
   7982     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   7983       abstract="false" native="false" synchronized="false"
   7984       static="true" final="false" visibility="public"
   7985       deprecated="not deprecated">
   7986       <param name="modules" type="com.google.inject.Module[]"/>
   7987       <doc>
   7988       <![CDATA[Records the elements executed by {@code modules}.]]>
   7989       </doc>
   7990     </method>
   7991     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   7992       abstract="false" native="false" synchronized="false"
   7993       static="true" final="false" visibility="public"
   7994       deprecated="not deprecated">
   7995       <param name="stage" type="com.google.inject.Stage"/>
   7996       <param name="modules" type="com.google.inject.Module[]"/>
   7997       <doc>
   7998       <![CDATA[Records the elements executed by {@code modules}.]]>
   7999       </doc>
   8000     </method>
   8001     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8002       abstract="false" native="false" synchronized="false"
   8003       static="true" final="false" visibility="public"
   8004       deprecated="not deprecated">
   8005       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   8006       <doc>
   8007       <![CDATA[Records the elements executed by {@code modules}.]]>
   8008       </doc>
   8009     </method>
   8010     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8011       abstract="false" native="false" synchronized="false"
   8012       static="true" final="false" visibility="public"
   8013       deprecated="not deprecated">
   8014       <param name="stage" type="com.google.inject.Stage"/>
   8015       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   8016       <doc>
   8017       <![CDATA[Records the elements executed by {@code modules}.]]>
   8018       </doc>
   8019     </method>
   8020     <method name="getModule" return="com.google.inject.Module"
   8021       abstract="false" native="false" synchronized="false"
   8022       static="true" final="false" visibility="public"
   8023       deprecated="not deprecated">
   8024       <param name="elements" type="java.lang.Iterable&lt;? extends com.google.inject.spi.Element&gt;"/>
   8025       <doc>
   8026       <![CDATA[Returns the module composed of {@code elements}.]]>
   8027       </doc>
   8028     </method>
   8029     <doc>
   8030     <![CDATA[Exposes elements of a module so they can be inspected, validated or {@link
   8031  Element#applyTo(Binder) rewritten}.
   8032 
   8033  @author jessewilson (a] google.com (Jesse Wilson)
   8034  @since 2.0]]>
   8035     </doc>
   8036   </class>
   8037   <!-- end class com.google.inject.spi.Elements -->
   8038   <!-- start interface com.google.inject.spi.ElementVisitor -->
   8039   <interface name="ElementVisitor"    abstract="true"
   8040     static="false" final="false" visibility="public"
   8041     deprecated="not deprecated">
   8042     <method name="visit" return="V"
   8043       abstract="false" native="false" synchronized="false"
   8044       static="false" final="false" visibility="public"
   8045       deprecated="not deprecated">
   8046       <param name="binding" type="com.google.inject.Binding&lt;T&gt;"/>
   8047       <doc>
   8048       <![CDATA[Visit a mapping from a key (type and optional annotation) to the strategy for getting
   8049  instances of the type.]]>
   8050       </doc>
   8051     </method>
   8052     <method name="visit" return="V"
   8053       abstract="false" native="false" synchronized="false"
   8054       static="false" final="false" visibility="public"
   8055       deprecated="not deprecated">
   8056       <param name="binding" type="com.google.inject.spi.InterceptorBinding"/>
   8057       <doc>
   8058       <![CDATA[Visit a registration of interceptors for matching methods of matching classes.]]>
   8059       </doc>
   8060     </method>
   8061     <method name="visit" return="V"
   8062       abstract="false" native="false" synchronized="false"
   8063       static="false" final="false" visibility="public"
   8064       deprecated="not deprecated">
   8065       <param name="binding" type="com.google.inject.spi.ScopeBinding"/>
   8066       <doc>
   8067       <![CDATA[Visit a registration of a scope annotation with the scope that implements it.]]>
   8068       </doc>
   8069     </method>
   8070     <method name="visit" return="V"
   8071       abstract="false" native="false" synchronized="false"
   8072       static="false" final="false" visibility="public"
   8073       deprecated="not deprecated">
   8074       <param name="binding" type="com.google.inject.spi.TypeConverterBinding"/>
   8075       <doc>
   8076       <![CDATA[Visit a registration of type converters for matching target types.]]>
   8077       </doc>
   8078     </method>
   8079     <method name="visit" return="V"
   8080       abstract="false" native="false" synchronized="false"
   8081       static="false" final="false" visibility="public"
   8082       deprecated="not deprecated">
   8083       <param name="request" type="com.google.inject.spi.InjectionRequest&lt;?&gt;"/>
   8084       <doc>
   8085       <![CDATA[Visit a request to inject the instance fields and methods of an instance.]]>
   8086       </doc>
   8087     </method>
   8088     <method name="visit" return="V"
   8089       abstract="false" native="false" synchronized="false"
   8090       static="false" final="false" visibility="public"
   8091       deprecated="not deprecated">
   8092       <param name="request" type="com.google.inject.spi.StaticInjectionRequest"/>
   8093       <doc>
   8094       <![CDATA[Visit a request to inject the static fields and methods of type.]]>
   8095       </doc>
   8096     </method>
   8097     <method name="visit" return="V"
   8098       abstract="false" native="false" synchronized="false"
   8099       static="false" final="false" visibility="public"
   8100       deprecated="not deprecated">
   8101       <param name="lookup" type="com.google.inject.spi.ProviderLookup&lt;T&gt;"/>
   8102       <doc>
   8103       <![CDATA[Visit a lookup of the provider for a type.]]>
   8104       </doc>
   8105     </method>
   8106     <method name="visit" return="V"
   8107       abstract="false" native="false" synchronized="false"
   8108       static="false" final="false" visibility="public"
   8109       deprecated="not deprecated">
   8110       <param name="lookup" type="com.google.inject.spi.MembersInjectorLookup&lt;T&gt;"/>
   8111       <doc>
   8112       <![CDATA[Visit a lookup of the members injector.]]>
   8113       </doc>
   8114     </method>
   8115     <method name="visit" return="V"
   8116       abstract="false" native="false" synchronized="false"
   8117       static="false" final="false" visibility="public"
   8118       deprecated="not deprecated">
   8119       <param name="message" type="com.google.inject.spi.Message"/>
   8120       <doc>
   8121       <![CDATA[Visit an error message and the context in which it occured.]]>
   8122       </doc>
   8123     </method>
   8124     <method name="visit" return="V"
   8125       abstract="false" native="false" synchronized="false"
   8126       static="false" final="false" visibility="public"
   8127       deprecated="not deprecated">
   8128       <param name="elements" type="com.google.inject.spi.PrivateElements"/>
   8129       <doc>
   8130       <![CDATA[Visit a collection of configuration elements for a {@linkplain com.google.inject.PrivateBinder
   8131  private binder}.]]>
   8132       </doc>
   8133     </method>
   8134     <method name="visit" return="V"
   8135       abstract="false" native="false" synchronized="false"
   8136       static="false" final="false" visibility="public"
   8137       deprecated="not deprecated">
   8138       <param name="binding" type="com.google.inject.spi.TypeListenerBinding"/>
   8139       <doc>
   8140       <![CDATA[Visit an injectable type listener binding.]]>
   8141       </doc>
   8142     </method>
   8143     <method name="visit" return="V"
   8144       abstract="false" native="false" synchronized="false"
   8145       static="false" final="false" visibility="public"
   8146       deprecated="not deprecated">
   8147       <param name="option" type="com.google.inject.spi.RequireExplicitBindingsOption"/>
   8148       <doc>
   8149       <![CDATA[Visit a require explicit bindings command.
   8150  
   8151  @since 3.0]]>
   8152       </doc>
   8153     </method>
   8154     <method name="visit" return="V"
   8155       abstract="false" native="false" synchronized="false"
   8156       static="false" final="false" visibility="public"
   8157       deprecated="not deprecated">
   8158       <param name="option" type="com.google.inject.spi.DisableCircularProxiesOption"/>
   8159       <doc>
   8160       <![CDATA[Visit a disable circular proxies command.
   8161  
   8162  @since 3.0]]>
   8163       </doc>
   8164     </method>
   8165     <doc>
   8166     <![CDATA[Visit elements.
   8167 
   8168  @param <V> any type to be returned by the visit method. Use {@link Void} with
   8169      {@code return null} if no return type is needed.
   8170  
   8171  @since 2.0]]>
   8172     </doc>
   8173   </interface>
   8174   <!-- end interface com.google.inject.spi.ElementVisitor -->
   8175   <!-- start interface com.google.inject.spi.ExposedBinding -->
   8176   <interface name="ExposedBinding"    abstract="true"
   8177     static="false" final="false" visibility="public"
   8178     deprecated="not deprecated">
   8179     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8180     <implements name="com.google.inject.spi.HasDependencies"/>
   8181     <method name="getPrivateElements" return="com.google.inject.spi.PrivateElements"
   8182       abstract="false" native="false" synchronized="false"
   8183       static="false" final="false" visibility="public"
   8184       deprecated="not deprecated">
   8185       <doc>
   8186       <![CDATA[Returns the enclosed environment that holds the original binding.]]>
   8187       </doc>
   8188     </method>
   8189     <method name="applyTo"
   8190       abstract="false" native="false" synchronized="false"
   8191       static="false" final="false" visibility="public"
   8192       deprecated="not deprecated">
   8193       <param name="binder" type="com.google.inject.Binder"/>
   8194       <doc>
   8195       <![CDATA[Unsupported. Always throws {@link UnsupportedOperationException}.]]>
   8196       </doc>
   8197     </method>
   8198     <doc>
   8199     <![CDATA[A binding to a key exposed from an enclosed private environment.
   8200 
   8201  @author jessewilson (a] google.com (Jesse Wilson)
   8202  @since 2.0]]>
   8203     </doc>
   8204   </interface>
   8205   <!-- end interface com.google.inject.spi.ExposedBinding -->
   8206   <!-- start interface com.google.inject.spi.HasDependencies -->
   8207   <interface name="HasDependencies"    abstract="true"
   8208     static="false" final="false" visibility="public"
   8209     deprecated="not deprecated">
   8210     <method name="getDependencies" return="java.util.Set&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   8211       abstract="false" native="false" synchronized="false"
   8212       static="false" final="false" visibility="public"
   8213       deprecated="not deprecated">
   8214       <doc>
   8215       <![CDATA[Returns the known dependencies for this type. If this has dependencies whose values are not
   8216  known statically, a dependency for the {@link com.google.inject.Injector Injector} will be
   8217  included in the returned set.
   8218  
   8219  @return a possibly empty set]]>
   8220       </doc>
   8221     </method>
   8222     <doc>
   8223     <![CDATA[Implemented by {@link com.google.inject.Binding bindings}, {@link com.google.inject.Provider
   8224  providers} and instances that expose their dependencies explicitly.
   8225 
   8226  @author jessewilson (a] google.com (Jesse Wilson)
   8227  @since 2.0]]>
   8228     </doc>
   8229   </interface>
   8230   <!-- end interface com.google.inject.spi.HasDependencies -->
   8231   <!-- start interface com.google.inject.spi.InjectionListener -->
   8232   <interface name="InjectionListener"    abstract="true"
   8233     static="false" final="false" visibility="public"
   8234     deprecated="not deprecated">
   8235     <method name="afterInjection"
   8236       abstract="false" native="false" synchronized="false"
   8237       static="false" final="false" visibility="public"
   8238       deprecated="not deprecated">
   8239       <param name="injectee" type="I"/>
   8240       <doc>
   8241       <![CDATA[Invoked by Guice after it injects the fields and methods of instance.
   8242 
   8243  @param injectee instance that Guice injected dependencies into]]>
   8244       </doc>
   8245     </method>
   8246     <doc>
   8247     <![CDATA[Listens for injections into instances of type {@code I}. Useful for performing further
   8248  injections, post-injection initialization, and more.
   8249 
   8250  @author crazybob (a] google.com (Bob Lee)
   8251  @author jessewilson (a] google.com (Jesse Wilson)
   8252  @since 2.0]]>
   8253     </doc>
   8254   </interface>
   8255   <!-- end interface com.google.inject.spi.InjectionListener -->
   8256   <!-- start class com.google.inject.spi.InjectionPoint -->
   8257   <class name="InjectionPoint" extends="java.lang.Object"
   8258     abstract="false"
   8259     static="false" final="true" visibility="public"
   8260     deprecated="not deprecated">
   8261     <method name="getMember" return="java.lang.reflect.Member"
   8262       abstract="false" native="false" synchronized="false"
   8263       static="false" final="false" visibility="public"
   8264       deprecated="not deprecated">
   8265       <doc>
   8266       <![CDATA[Returns the injected constructor, field, or method.]]>
   8267       </doc>
   8268     </method>
   8269     <method name="getDependencies" return="java.util.List&lt;com.google.inject.spi.Dependency&lt;?&gt;&gt;"
   8270       abstract="false" native="false" synchronized="false"
   8271       static="false" final="false" visibility="public"
   8272       deprecated="not deprecated">
   8273       <doc>
   8274       <![CDATA[Returns the dependencies for this injection point. If the injection point is for a method or
   8275  constructor, the dependencies will correspond to that member's parameters. Field injection
   8276  points always have a single dependency for the field itself.
   8277 
   8278  @return a possibly-empty list]]>
   8279       </doc>
   8280     </method>
   8281     <method name="isOptional" return="boolean"
   8282       abstract="false" native="false" synchronized="false"
   8283       static="false" final="false" visibility="public"
   8284       deprecated="not deprecated">
   8285       <doc>
   8286       <![CDATA[Returns true if this injection point shall be skipped if the injector cannot resolve bindings
   8287  for all required dependencies. Both explicit bindings (as specified in a module), and implicit
   8288  bindings ({@literal @}{@link com.google.inject.ImplementedBy ImplementedBy}, default
   8289  constructors etc.) may be used to satisfy optional injection points.]]>
   8290       </doc>
   8291     </method>
   8292     <method name="isToolable" return="boolean"
   8293       abstract="false" native="false" synchronized="false"
   8294       static="false" final="false" visibility="public"
   8295       deprecated="not deprecated">
   8296       <doc>
   8297       <![CDATA[Returns true if the element is annotated with {@literal @}{@link Toolable}.
   8298  
   8299  @since 3.0]]>
   8300       </doc>
   8301     </method>
   8302     <method name="getDeclaringType" return="com.google.inject.TypeLiteral&lt;?&gt;"
   8303       abstract="false" native="false" synchronized="false"
   8304       static="false" final="false" visibility="public"
   8305       deprecated="not deprecated">
   8306       <doc>
   8307       <![CDATA[Returns the generic type that defines this injection point. If the member exists on a
   8308  parameterized type, the result will include more type information than the member's {@link
   8309  Member#getDeclaringClass() raw declaring class}.
   8310  
   8311  @since 3.0]]>
   8312       </doc>
   8313     </method>
   8314     <method name="equals" return="boolean"
   8315       abstract="false" native="false" synchronized="false"
   8316       static="false" final="false" visibility="public"
   8317       deprecated="not deprecated">
   8318       <param name="o" type="java.lang.Object"/>
   8319     </method>
   8320     <method name="hashCode" return="int"
   8321       abstract="false" native="false" synchronized="false"
   8322       static="false" final="false" visibility="public"
   8323       deprecated="not deprecated">
   8324     </method>
   8325     <method name="toString" return="java.lang.String"
   8326       abstract="false" native="false" synchronized="false"
   8327       static="false" final="false" visibility="public"
   8328       deprecated="not deprecated">
   8329     </method>
   8330     <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
   8331       abstract="false" native="false" synchronized="false"
   8332       static="true" final="false" visibility="public"
   8333       deprecated="not deprecated">
   8334       <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
   8335       <doc>
   8336       <![CDATA[Returns a new injection point for the specified constructor. If the declaring type of {@code
   8337  constructor} is parameterized (such as {@code List<T>}), prefer the overload that includes a
   8338  type literal.
   8339 
   8340  @param constructor any single constructor present on {@code type}.
   8341  
   8342  @since 3.0]]>
   8343       </doc>
   8344     </method>
   8345     <method name="forConstructor" return="com.google.inject.spi.InjectionPoint"
   8346       abstract="false" native="false" synchronized="false"
   8347       static="true" final="false" visibility="public"
   8348       deprecated="not deprecated">
   8349       <param name="constructor" type="java.lang.reflect.Constructor&lt;T&gt;"/>
   8350       <param name="type" type="com.google.inject.TypeLiteral&lt;? extends T&gt;"/>
   8351       <doc>
   8352       <![CDATA[Returns a new injection point for the specified constructor of {@code type}.
   8353 
   8354  @param constructor any single constructor present on {@code type}.
   8355  @param type the concrete type that defines {@code constructor}.
   8356  
   8357  @since 3.0]]>
   8358       </doc>
   8359     </method>
   8360     <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
   8361       abstract="false" native="false" synchronized="false"
   8362       static="true" final="false" visibility="public"
   8363       deprecated="not deprecated">
   8364       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   8365       <doc>
   8366       <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
   8367 
   8368  @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
   8369      or a no-arguments constructor that is not private.
   8370  @throws ConfigurationException if there is no injectable constructor, more than one injectable
   8371      constructor, or if parameters of the injectable constructor are malformed, such as a
   8372      parameter with multiple binding annotations.]]>
   8373       </doc>
   8374     </method>
   8375     <method name="forConstructorOf" return="com.google.inject.spi.InjectionPoint"
   8376       abstract="false" native="false" synchronized="false"
   8377       static="true" final="false" visibility="public"
   8378       deprecated="not deprecated">
   8379       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   8380       <doc>
   8381       <![CDATA[Returns a new injection point for the injectable constructor of {@code type}.
   8382 
   8383  @param type a concrete type with exactly one constructor annotated {@literal @}{@link Inject},
   8384      or a no-arguments constructor that is not private.
   8385  @throws ConfigurationException if there is no injectable constructor, more than one injectable
   8386      constructor, or if parameters of the injectable constructor are malformed, such as a
   8387      parameter with multiple binding annotations.]]>
   8388       </doc>
   8389     </method>
   8390     <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8391       abstract="false" native="false" synchronized="false"
   8392       static="true" final="false" visibility="public"
   8393       deprecated="not deprecated">
   8394       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   8395       <doc>
   8396       <![CDATA[Returns all static method and field injection points on {@code type}.
   8397 
   8398  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8399       fields are returned and then all methods. Within the fields, supertype fields are returned
   8400       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8401  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   8402       a field with multiple binding annotations. The exception's {@link
   8403       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8404       of the valid injection points.]]>
   8405       </doc>
   8406     </method>
   8407     <method name="forStaticMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8408       abstract="false" native="false" synchronized="false"
   8409       static="true" final="false" visibility="public"
   8410       deprecated="not deprecated">
   8411       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   8412       <doc>
   8413       <![CDATA[Returns all static method and field injection points on {@code type}.
   8414 
   8415  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8416       fields are returned and then all methods. Within the fields, supertype fields are returned
   8417       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8418  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   8419       a field with multiple binding annotations. The exception's {@link
   8420       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8421       of the valid injection points.]]>
   8422       </doc>
   8423     </method>
   8424     <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8425       abstract="false" native="false" synchronized="false"
   8426       static="true" final="false" visibility="public"
   8427       deprecated="not deprecated">
   8428       <param name="type" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   8429       <doc>
   8430       <![CDATA[Returns all instance method and field injection points on {@code type}.
   8431 
   8432  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8433       fields are returned and then all methods. Within the fields, supertype fields are returned
   8434       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8435  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   8436       a field with multiple binding annotations. The exception's {@link
   8437       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8438       of the valid injection points.]]>
   8439       </doc>
   8440     </method>
   8441     <method name="forInstanceMethodsAndFields" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8442       abstract="false" native="false" synchronized="false"
   8443       static="true" final="false" visibility="public"
   8444       deprecated="not deprecated">
   8445       <param name="type" type="java.lang.Class&lt;?&gt;"/>
   8446       <doc>
   8447       <![CDATA[Returns all instance method and field injection points on {@code type}.
   8448 
   8449  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8450       fields are returned and then all methods. Within the fields, supertype fields are returned
   8451       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8452  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   8453       a field with multiple binding annotations. The exception's {@link
   8454       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8455       of the valid injection points.]]>
   8456       </doc>
   8457     </method>
   8458     <doc>
   8459     <![CDATA[A constructor, field or method that can receive injections. Typically this is a member with the
   8460  {@literal @}{@link Inject} annotation. For non-private, no argument constructors, the member may
   8461  omit the annotation.
   8462 
   8463  @author crazybob (a] google.com (Bob Lee)
   8464  @since 2.0]]>
   8465     </doc>
   8466   </class>
   8467   <!-- end class com.google.inject.spi.InjectionPoint -->
   8468   <!-- start class com.google.inject.spi.InjectionRequest -->
   8469   <class name="InjectionRequest" extends="java.lang.Object"
   8470     abstract="false"
   8471     static="false" final="true" visibility="public"
   8472     deprecated="not deprecated">
   8473     <implements name="com.google.inject.spi.Element"/>
   8474     <constructor name="InjectionRequest" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;, T"
   8475       static="false" final="false" visibility="public"
   8476       deprecated="not deprecated">
   8477     </constructor>
   8478     <method name="getSource" return="java.lang.Object"
   8479       abstract="false" native="false" synchronized="false"
   8480       static="false" final="false" visibility="public"
   8481       deprecated="not deprecated">
   8482     </method>
   8483     <method name="getInstance" return="T"
   8484       abstract="false" native="false" synchronized="false"
   8485       static="false" final="false" visibility="public"
   8486       deprecated="not deprecated">
   8487     </method>
   8488     <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
   8489       abstract="false" native="false" synchronized="false"
   8490       static="false" final="false" visibility="public"
   8491       deprecated="not deprecated">
   8492     </method>
   8493     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8494       abstract="false" native="false" synchronized="false"
   8495       static="false" final="false" visibility="public"
   8496       deprecated="not deprecated">
   8497       <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
   8498       <doc>
   8499       <![CDATA[Returns the instance methods and fields of {@code instance} that will be injected to fulfill
   8500  this request.
   8501 
   8502  @return a possibly empty set of injection points. The set has a specified iteration order. All
   8503       fields are returned and then all methods. Within the fields, supertype fields are returned
   8504       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   8505  @throws ConfigurationException if there is a malformed injection point on the class of {@code
   8506       instance}, such as a field with multiple binding annotations. The exception's {@link
   8507       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   8508       of the valid injection points.]]>
   8509       </doc>
   8510     </method>
   8511     <method name="acceptVisitor" return="R"
   8512       abstract="false" native="false" synchronized="false"
   8513       static="false" final="false" visibility="public"
   8514       deprecated="not deprecated">
   8515       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;R&gt;"/>
   8516     </method>
   8517     <method name="applyTo"
   8518       abstract="false" native="false" synchronized="false"
   8519       static="false" final="false" visibility="public"
   8520       deprecated="not deprecated">
   8521       <param name="binder" type="com.google.inject.Binder"/>
   8522     </method>
   8523     <doc>
   8524     <![CDATA[A request to inject the instance fields and methods of an instance. Requests are created
   8525  explicitly in a module using {@link com.google.inject.Binder#requestInjection(Object)
   8526  requestInjection()} statements:
   8527  <pre>
   8528      requestInjection(serviceInstance);</pre>
   8529 
   8530  @author mikeward (a] google.com (Mike Ward)
   8531  @since 2.0]]>
   8532     </doc>
   8533   </class>
   8534   <!-- end class com.google.inject.spi.InjectionRequest -->
   8535   <!-- start interface com.google.inject.spi.InstanceBinding -->
   8536   <interface name="InstanceBinding"    abstract="true"
   8537     static="false" final="false" visibility="public"
   8538     deprecated="not deprecated">
   8539     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8540     <implements name="com.google.inject.spi.HasDependencies"/>
   8541     <method name="getInstance" return="T"
   8542       abstract="false" native="false" synchronized="false"
   8543       static="false" final="false" visibility="public"
   8544       deprecated="not deprecated">
   8545       <doc>
   8546       <![CDATA[Returns the user-supplied instance.]]>
   8547       </doc>
   8548     </method>
   8549     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8550       abstract="false" native="false" synchronized="false"
   8551       static="false" final="false" visibility="public"
   8552       deprecated="not deprecated">
   8553       <doc>
   8554       <![CDATA[Returns the field and method injection points of the instance, injected at injector-creation
   8555  time only.
   8556 
   8557  @return a possibly empty set]]>
   8558       </doc>
   8559     </method>
   8560     <doc>
   8561     <![CDATA[A binding to a single instance. The same instance is returned for every injection.
   8562 
   8563  @author jessewilson (a] google.com (Jesse Wilson)
   8564  @since 2.0]]>
   8565     </doc>
   8566   </interface>
   8567   <!-- end interface com.google.inject.spi.InstanceBinding -->
   8568   <!-- start class com.google.inject.spi.InterceptorBinding -->
   8569   <class name="InterceptorBinding" extends="java.lang.Object"
   8570     abstract="false"
   8571     static="false" final="true" visibility="public"
   8572     deprecated="not deprecated">
   8573     <implements name="com.google.inject.spi.Element"/>
   8574     <method name="getSource" return="java.lang.Object"
   8575       abstract="false" native="false" synchronized="false"
   8576       static="false" final="false" visibility="public"
   8577       deprecated="not deprecated">
   8578     </method>
   8579     <method name="getClassMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.Class&lt;?&gt;&gt;"
   8580       abstract="false" native="false" synchronized="false"
   8581       static="false" final="false" visibility="public"
   8582       deprecated="not deprecated">
   8583     </method>
   8584     <method name="getMethodMatcher" return="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"
   8585       abstract="false" native="false" synchronized="false"
   8586       static="false" final="false" visibility="public"
   8587       deprecated="not deprecated">
   8588     </method>
   8589     <method name="getInterceptors" return="java.util.List&lt;org.aopalliance.intercept.MethodInterceptor&gt;"
   8590       abstract="false" native="false" synchronized="false"
   8591       static="false" final="false" visibility="public"
   8592       deprecated="not deprecated">
   8593     </method>
   8594     <method name="acceptVisitor" return="T"
   8595       abstract="false" native="false" synchronized="false"
   8596       static="false" final="false" visibility="public"
   8597       deprecated="not deprecated">
   8598       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8599     </method>
   8600     <method name="applyTo"
   8601       abstract="false" native="false" synchronized="false"
   8602       static="false" final="false" visibility="public"
   8603       deprecated="not deprecated">
   8604       <param name="binder" type="com.google.inject.Binder"/>
   8605     </method>
   8606     <doc>
   8607     <![CDATA[Registration of interceptors for matching methods of matching classes. Instances are created
   8608  explicitly in a module using {@link com.google.inject.Binder#bindInterceptor(
   8609  Matcher, Matcher, MethodInterceptor[]) bindInterceptor()} statements:
   8610  <pre>
   8611      bindInterceptor(Matchers.subclassesOf(MyAction.class),
   8612          Matchers.annotatedWith(Transactional.class),
   8613          new MyTransactionInterceptor());</pre>
   8614 
   8615  or from an injectable type listener using {@link TypeEncounter#bindInterceptor(Matcher,
   8616  org.aopalliance.intercept.MethodInterceptor[]) TypeEncounter.bindInterceptor()}.
   8617 
   8618  @author jessewilson (a] google.com (Jesse Wilson)
   8619  @since 2.0]]>
   8620     </doc>
   8621   </class>
   8622   <!-- end class com.google.inject.spi.InterceptorBinding -->
   8623   <!-- start interface com.google.inject.spi.LinkedKeyBinding -->
   8624   <interface name="LinkedKeyBinding"    abstract="true"
   8625     static="false" final="false" visibility="public"
   8626     deprecated="not deprecated">
   8627     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8628     <method name="getLinkedKey" return="com.google.inject.Key&lt;? extends T&gt;"
   8629       abstract="false" native="false" synchronized="false"
   8630       static="false" final="false" visibility="public"
   8631       deprecated="not deprecated">
   8632       <doc>
   8633       <![CDATA[Returns the linked key used to resolve injections. That binding can be retrieved from an
   8634  injector using {@link com.google.inject.Injector#getBinding(Key) Injector.getBinding(key)}.]]>
   8635       </doc>
   8636     </method>
   8637     <doc>
   8638     <![CDATA[A binding to a linked key. The other key's binding is used to resolve injections.
   8639 
   8640  @author jessewilson (a] google.com (Jesse Wilson)
   8641  @since 2.0]]>
   8642     </doc>
   8643   </interface>
   8644   <!-- end interface com.google.inject.spi.LinkedKeyBinding -->
   8645   <!-- start class com.google.inject.spi.MembersInjectorLookup -->
   8646   <class name="MembersInjectorLookup" extends="java.lang.Object"
   8647     abstract="false"
   8648     static="false" final="true" visibility="public"
   8649     deprecated="not deprecated">
   8650     <implements name="com.google.inject.spi.Element"/>
   8651     <constructor name="MembersInjectorLookup" type="java.lang.Object, com.google.inject.TypeLiteral&lt;T&gt;"
   8652       static="false" final="false" visibility="public"
   8653       deprecated="not deprecated">
   8654     </constructor>
   8655     <method name="getSource" return="java.lang.Object"
   8656       abstract="false" native="false" synchronized="false"
   8657       static="false" final="false" visibility="public"
   8658       deprecated="not deprecated">
   8659     </method>
   8660     <method name="getType" return="com.google.inject.TypeLiteral&lt;T&gt;"
   8661       abstract="false" native="false" synchronized="false"
   8662       static="false" final="false" visibility="public"
   8663       deprecated="not deprecated">
   8664       <doc>
   8665       <![CDATA[Gets the type containing the members to be injected.]]>
   8666       </doc>
   8667     </method>
   8668     <method name="acceptVisitor" return="T"
   8669       abstract="false" native="false" synchronized="false"
   8670       static="false" final="false" visibility="public"
   8671       deprecated="not deprecated">
   8672       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8673     </method>
   8674     <method name="initializeDelegate"
   8675       abstract="false" native="false" synchronized="false"
   8676       static="false" final="false" visibility="public"
   8677       deprecated="not deprecated">
   8678       <param name="delegate" type="com.google.inject.MembersInjector&lt;T&gt;"/>
   8679       <doc>
   8680       <![CDATA[Sets the actual members injector.
   8681 
   8682  @throws IllegalStateException if the delegate is already set]]>
   8683       </doc>
   8684     </method>
   8685     <method name="applyTo"
   8686       abstract="false" native="false" synchronized="false"
   8687       static="false" final="false" visibility="public"
   8688       deprecated="not deprecated">
   8689       <param name="binder" type="com.google.inject.Binder"/>
   8690     </method>
   8691     <method name="getDelegate" return="com.google.inject.MembersInjector&lt;T&gt;"
   8692       abstract="false" native="false" synchronized="false"
   8693       static="false" final="false" visibility="public"
   8694       deprecated="not deprecated">
   8695       <doc>
   8696       <![CDATA[Returns the delegate members injector, or {@code null} if it has not yet been initialized.
   8697  The delegate will be initialized when this element is processed, or otherwise used to create
   8698  an injector.]]>
   8699       </doc>
   8700     </method>
   8701     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   8702       abstract="false" native="false" synchronized="false"
   8703       static="false" final="false" visibility="public"
   8704       deprecated="not deprecated">
   8705       <doc>
   8706       <![CDATA[Returns the looked up members injector. The result is not valid until this lookup has been
   8707  initialized, which usually happens when the injector is created. The members injector will
   8708  throw an {@code IllegalStateException} if you try to use it beforehand.]]>
   8709       </doc>
   8710     </method>
   8711     <doc>
   8712     <![CDATA[A lookup of the members injector for a type. Lookups are created explicitly in a module using
   8713  {@link com.google.inject.Binder#getMembersInjector(Class) getMembersInjector()} statements:
   8714  <pre>
   8715      MembersInjector&lt;PaymentService&gt; membersInjector
   8716          = getMembersInjector(PaymentService.class);</pre>
   8717 
   8718  @author crazybob (a] google.com (Bob Lee)
   8719  @since 2.0]]>
   8720     </doc>
   8721   </class>
   8722   <!-- end class com.google.inject.spi.MembersInjectorLookup -->
   8723   <!-- start class com.google.inject.spi.Message -->
   8724   <class name="Message" extends="java.lang.Object"
   8725     abstract="false"
   8726     static="false" final="true" visibility="public"
   8727     deprecated="not deprecated">
   8728     <implements name="java.io.Serializable"/>
   8729     <implements name="com.google.inject.spi.Element"/>
   8730     <constructor name="Message" type="java.util.List&lt;java.lang.Object&gt;, java.lang.String, java.lang.Throwable"
   8731       static="false" final="false" visibility="public"
   8732       deprecated="not deprecated">
   8733       <doc>
   8734       <![CDATA[@since 2.0]]>
   8735       </doc>
   8736     </constructor>
   8737     <constructor name="Message" type="java.lang.Object, java.lang.String"
   8738       static="false" final="false" visibility="public"
   8739       deprecated="not deprecated">
   8740     </constructor>
   8741     <constructor name="Message" type="java.lang.String"
   8742       static="false" final="false" visibility="public"
   8743       deprecated="not deprecated">
   8744     </constructor>
   8745     <method name="getSource" return="java.lang.String"
   8746       abstract="false" native="false" synchronized="false"
   8747       static="false" final="false" visibility="public"
   8748       deprecated="not deprecated">
   8749     </method>
   8750     <method name="getSources" return="java.util.List&lt;java.lang.Object&gt;"
   8751       abstract="false" native="false" synchronized="false"
   8752       static="false" final="false" visibility="public"
   8753       deprecated="not deprecated">
   8754       <doc>
   8755       <![CDATA[@since 2.0]]>
   8756       </doc>
   8757     </method>
   8758     <method name="getMessage" return="java.lang.String"
   8759       abstract="false" native="false" synchronized="false"
   8760       static="false" final="false" visibility="public"
   8761       deprecated="not deprecated">
   8762       <doc>
   8763       <![CDATA[Gets the error message text.]]>
   8764       </doc>
   8765     </method>
   8766     <method name="acceptVisitor" return="T"
   8767       abstract="false" native="false" synchronized="false"
   8768       static="false" final="false" visibility="public"
   8769       deprecated="not deprecated">
   8770       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8771       <doc>
   8772       <![CDATA[@since 2.0]]>
   8773       </doc>
   8774     </method>
   8775     <method name="getCause" return="java.lang.Throwable"
   8776       abstract="false" native="false" synchronized="false"
   8777       static="false" final="false" visibility="public"
   8778       deprecated="not deprecated">
   8779       <doc>
   8780       <![CDATA[Returns the throwable that caused this message, or {@code null} if this
   8781  message was not caused by a throwable.
   8782 
   8783  @since 2.0]]>
   8784       </doc>
   8785     </method>
   8786     <method name="toString" return="java.lang.String"
   8787       abstract="false" native="false" synchronized="false"
   8788       static="false" final="false" visibility="public"
   8789       deprecated="not deprecated">
   8790     </method>
   8791     <method name="hashCode" return="int"
   8792       abstract="false" native="false" synchronized="false"
   8793       static="false" final="false" visibility="public"
   8794       deprecated="not deprecated">
   8795     </method>
   8796     <method name="equals" return="boolean"
   8797       abstract="false" native="false" synchronized="false"
   8798       static="false" final="false" visibility="public"
   8799       deprecated="not deprecated">
   8800       <param name="o" type="java.lang.Object"/>
   8801     </method>
   8802     <method name="applyTo"
   8803       abstract="false" native="false" synchronized="false"
   8804       static="false" final="false" visibility="public"
   8805       deprecated="not deprecated">
   8806       <param name="binder" type="com.google.inject.Binder"/>
   8807       <doc>
   8808       <![CDATA[@since 2.0]]>
   8809       </doc>
   8810     </method>
   8811     <doc>
   8812     <![CDATA[An error message and the context in which it occured. Messages are usually created internally by
   8813  Guice and its extensions. Messages can be created explicitly in a module using {@link
   8814  com.google.inject.Binder#addError(Throwable) addError()} statements:
   8815  <pre>
   8816      try {
   8817        bindPropertiesFromFile();
   8818      } catch (IOException e) {
   8819        addError(e);
   8820      }</pre>
   8821 
   8822  @author crazybob (a] google.com (Bob Lee)]]>
   8823     </doc>
   8824   </class>
   8825   <!-- end class com.google.inject.spi.Message -->
   8826   <!-- start interface com.google.inject.spi.PrivateElements -->
   8827   <interface name="PrivateElements"    abstract="true"
   8828     static="false" final="false" visibility="public"
   8829     deprecated="not deprecated">
   8830     <implements name="com.google.inject.spi.Element"/>
   8831     <method name="getElements" return="java.util.List&lt;com.google.inject.spi.Element&gt;"
   8832       abstract="false" native="false" synchronized="false"
   8833       static="false" final="false" visibility="public"
   8834       deprecated="not deprecated">
   8835       <doc>
   8836       <![CDATA[Returns the configuration information in this private environment.]]>
   8837       </doc>
   8838     </method>
   8839     <method name="getInjector" return="com.google.inject.Injector"
   8840       abstract="false" native="false" synchronized="false"
   8841       static="false" final="false" visibility="public"
   8842       deprecated="not deprecated">
   8843       <doc>
   8844       <![CDATA[Returns the child injector that hosts these private elements, or null if the elements haven't
   8845  been used to create an injector.]]>
   8846       </doc>
   8847     </method>
   8848     <method name="getExposedKeys" return="java.util.Set&lt;com.google.inject.Key&lt;?&gt;&gt;"
   8849       abstract="false" native="false" synchronized="false"
   8850       static="false" final="false" visibility="public"
   8851       deprecated="not deprecated">
   8852       <doc>
   8853       <![CDATA[Returns the unique exposed keys for these private elements.]]>
   8854       </doc>
   8855     </method>
   8856     <method name="getExposedSource" return="java.lang.Object"
   8857       abstract="false" native="false" synchronized="false"
   8858       static="false" final="false" visibility="public"
   8859       deprecated="not deprecated">
   8860       <param name="key" type="com.google.inject.Key&lt;?&gt;"/>
   8861       <doc>
   8862       <![CDATA[Returns an arbitrary object containing information about the "place" where this key was
   8863  exposed. Used by Guice in the production of descriptive error messages.
   8864 
   8865  <p>Tools might specially handle types they know about; {@code StackTraceElement} is a good
   8866  example. Tools should simply call {@code toString()} on the source object if the type is
   8867  unfamiliar.
   8868 
   8869  @param key one of the keys exposed by this module.]]>
   8870       </doc>
   8871     </method>
   8872     <doc>
   8873     <![CDATA[A private collection of elements that are hidden from the enclosing injector or module by
   8874  default. See {@link com.google.inject.PrivateModule PrivateModule} for details.
   8875 
   8876  @author jessewilson (a] google.com (Jesse Wilson)
   8877  @since 2.0]]>
   8878     </doc>
   8879   </interface>
   8880   <!-- end interface com.google.inject.spi.PrivateElements -->
   8881   <!-- start interface com.google.inject.spi.ProviderBinding -->
   8882   <interface name="ProviderBinding"    abstract="true"
   8883     static="false" final="false" visibility="public"
   8884     deprecated="not deprecated">
   8885     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8886     <method name="getProvidedKey" return="com.google.inject.Key&lt;?&gt;"
   8887       abstract="false" native="false" synchronized="false"
   8888       static="false" final="false" visibility="public"
   8889       deprecated="not deprecated">
   8890       <doc>
   8891       <![CDATA[Returns the key whose binding is used to {@link Provider#get provide instances}. That binding
   8892  can be retrieved from an injector using {@link com.google.inject.Injector#getBinding(Key)
   8893  Injector.getBinding(providedKey)}]]>
   8894       </doc>
   8895     </method>
   8896     <doc>
   8897     <![CDATA[A binding to a {@link Provider} that delegates to the binding for the provided type. This binding
   8898  is used whenever a {@code Provider<T>} is injected (as opposed to injecting {@code T} directly).
   8899 
   8900  @author jessewilson (a] google.com (Jesse Wilson)
   8901  @since 2.0]]>
   8902     </doc>
   8903   </interface>
   8904   <!-- end interface com.google.inject.spi.ProviderBinding -->
   8905   <!-- start interface com.google.inject.spi.ProviderInstanceBinding -->
   8906   <interface name="ProviderInstanceBinding"    abstract="true"
   8907     static="false" final="false" visibility="public"
   8908     deprecated="not deprecated">
   8909     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8910     <implements name="com.google.inject.spi.HasDependencies"/>
   8911     <method name="getProviderInstance" return="com.google.inject.Provider&lt;? extends T&gt;"
   8912       abstract="false" native="false" synchronized="false"
   8913       static="false" final="false" visibility="public"
   8914       deprecated="not deprecated">
   8915       <doc>
   8916       <![CDATA[Returns the user-supplied, unscoped provider.]]>
   8917       </doc>
   8918     </method>
   8919     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   8920       abstract="false" native="false" synchronized="false"
   8921       static="false" final="false" visibility="public"
   8922       deprecated="not deprecated">
   8923       <doc>
   8924       <![CDATA[Returns the field and method injection points of the provider, injected at injector-creation
   8925  time only.
   8926 
   8927  @return a possibly empty set]]>
   8928       </doc>
   8929     </method>
   8930     <doc>
   8931     <![CDATA[A binding to a provider instance. The provider's {@code get} method is invoked to resolve
   8932  injections.
   8933 
   8934  @author jessewilson (a] google.com (Jesse Wilson)
   8935  @since 2.0]]>
   8936     </doc>
   8937   </interface>
   8938   <!-- end interface com.google.inject.spi.ProviderInstanceBinding -->
   8939   <!-- start interface com.google.inject.spi.ProviderKeyBinding -->
   8940   <interface name="ProviderKeyBinding"    abstract="true"
   8941     static="false" final="false" visibility="public"
   8942     deprecated="not deprecated">
   8943     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   8944     <method name="getProviderKey" return="com.google.inject.Key&lt;? extends javax.inject.Provider&lt;? extends T&gt;&gt;"
   8945       abstract="false" native="false" synchronized="false"
   8946       static="false" final="false" visibility="public"
   8947       deprecated="not deprecated">
   8948       <doc>
   8949       <![CDATA[Returns the key used to resolve the provider's binding. That binding can be retrieved from an
   8950  injector using {@link com.google.inject.Injector#getBinding(Key)
   8951  Injector.getBinding(providerKey)}]]>
   8952       </doc>
   8953     </method>
   8954     <doc>
   8955     <![CDATA[A binding to a provider key. To resolve injections, the provider key is first resolved, then that
   8956  provider's {@code get} method is invoked.
   8957 
   8958  @author jessewilson (a] google.com (Jesse Wilson)
   8959  @since 2.0]]>
   8960     </doc>
   8961   </interface>
   8962   <!-- end interface com.google.inject.spi.ProviderKeyBinding -->
   8963   <!-- start class com.google.inject.spi.ProviderLookup -->
   8964   <class name="ProviderLookup" extends="java.lang.Object"
   8965     abstract="false"
   8966     static="false" final="true" visibility="public"
   8967     deprecated="not deprecated">
   8968     <implements name="com.google.inject.spi.Element"/>
   8969     <constructor name="ProviderLookup" type="java.lang.Object, com.google.inject.Key&lt;T&gt;"
   8970       static="false" final="false" visibility="public"
   8971       deprecated="not deprecated">
   8972     </constructor>
   8973     <method name="getSource" return="java.lang.Object"
   8974       abstract="false" native="false" synchronized="false"
   8975       static="false" final="false" visibility="public"
   8976       deprecated="not deprecated">
   8977     </method>
   8978     <method name="getKey" return="com.google.inject.Key&lt;T&gt;"
   8979       abstract="false" native="false" synchronized="false"
   8980       static="false" final="false" visibility="public"
   8981       deprecated="not deprecated">
   8982     </method>
   8983     <method name="acceptVisitor" return="T"
   8984       abstract="false" native="false" synchronized="false"
   8985       static="false" final="false" visibility="public"
   8986       deprecated="not deprecated">
   8987       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   8988     </method>
   8989     <method name="initializeDelegate"
   8990       abstract="false" native="false" synchronized="false"
   8991       static="false" final="false" visibility="public"
   8992       deprecated="not deprecated">
   8993       <param name="delegate" type="com.google.inject.Provider&lt;T&gt;"/>
   8994       <doc>
   8995       <![CDATA[Sets the actual provider.
   8996 
   8997  @throws IllegalStateException if the delegate is already set]]>
   8998       </doc>
   8999     </method>
   9000     <method name="applyTo"
   9001       abstract="false" native="false" synchronized="false"
   9002       static="false" final="false" visibility="public"
   9003       deprecated="not deprecated">
   9004       <param name="binder" type="com.google.inject.Binder"/>
   9005     </method>
   9006     <method name="getDelegate" return="com.google.inject.Provider&lt;T&gt;"
   9007       abstract="false" native="false" synchronized="false"
   9008       static="false" final="false" visibility="public"
   9009       deprecated="not deprecated">
   9010       <doc>
   9011       <![CDATA[Returns the delegate provider, or {@code null} if it has not yet been initialized. The delegate
   9012  will be initialized when this element is processed, or otherwise used to create an injector.]]>
   9013       </doc>
   9014     </method>
   9015     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   9016       abstract="false" native="false" synchronized="false"
   9017       static="false" final="false" visibility="public"
   9018       deprecated="not deprecated">
   9019       <doc>
   9020       <![CDATA[Returns the looked up provider. The result is not valid until this lookup has been initialized,
   9021  which usually happens when the injector is created. The provider will throw an {@code
   9022  IllegalStateException} if you try to use it beforehand.]]>
   9023       </doc>
   9024     </method>
   9025     <doc>
   9026     <![CDATA[A lookup of the provider for a type. Lookups are created explicitly in a module using
   9027  {@link com.google.inject.Binder#getProvider(Class) getProvider()} statements:
   9028  <pre>
   9029      Provider&lt;PaymentService&gt; paymentServiceProvider
   9030          = getProvider(PaymentService.class);</pre>
   9031 
   9032  @author jessewilson (a] google.com (Jesse Wilson)
   9033  @since 2.0]]>
   9034     </doc>
   9035   </class>
   9036   <!-- end class com.google.inject.spi.ProviderLookup -->
   9037   <!-- start interface com.google.inject.spi.ProviderWithDependencies -->
   9038   <interface name="ProviderWithDependencies"    abstract="true"
   9039     static="false" final="false" visibility="public"
   9040     deprecated="not deprecated">
   9041     <implements name="com.google.inject.Provider&lt;T&gt;"/>
   9042     <implements name="com.google.inject.spi.HasDependencies"/>
   9043     <doc>
   9044     <![CDATA[A provider with dependencies on other injected types. If a {@link Provider} has dependencies that
   9045  aren't specified in injections, this interface should be used to expose all dependencies.
   9046 
   9047  @since 2.0]]>
   9048     </doc>
   9049   </interface>
   9050   <!-- end interface com.google.inject.spi.ProviderWithDependencies -->
   9051   <!-- start interface com.google.inject.spi.ProviderWithExtensionVisitor -->
   9052   <interface name="ProviderWithExtensionVisitor"    abstract="true"
   9053     static="false" final="false" visibility="public"
   9054     deprecated="not deprecated">
   9055     <implements name="com.google.inject.Provider&lt;T&gt;"/>
   9056     <method name="acceptExtensionVisitor" return="V"
   9057       abstract="false" native="false" synchronized="false"
   9058       static="false" final="false" visibility="public"
   9059       deprecated="not deprecated">
   9060       <param name="visitor" type="com.google.inject.spi.BindingTargetVisitor&lt;B, V&gt;"/>
   9061       <param name="binding" type="com.google.inject.spi.ProviderInstanceBinding&lt;? extends B&gt;"/>
   9062       <doc>
   9063       <![CDATA[Instructs the extension determine if the visitor is an instance of a custom
   9064  extension visitor, and if so, visit it using that method. If the visitor is
   9065  not an instance of the custom extension visitor, this method <b>MUST</b>
   9066  call visitor.visit(binding).
   9067  <p> 
   9068  Due to issues with generics, the type parameters of this method do not
   9069  relate to the type of the provider. In practice, the 'B' type will always
   9070  be a supertype of 'T'.]]>
   9071       </doc>
   9072     </method>
   9073     <doc>
   9074     <![CDATA[A Provider that is part of an extension which supports a custom
   9075  BindingTargetVisitor.
   9076  <p> 
   9077  When an extension binds a provider instance, the provider can implement this
   9078  interface to allow users using the
   9079  {@link Binding#acceptTargetVisitor(BindingTargetVisitor)} method to visit a
   9080  custom visitor designed for that extension. A typical implementation within
   9081  the extension would look like
   9082  <pre> 
   9083  &lt;V, B> V acceptExtensionVisitor(BindingTargetVisitor&lt;B, V> visitor, ProviderInstanceBinding&lt;? extends B> binding) {
   9084    if(visitor instanceof MyCustomExtensionVisitor) {
   9085      return ((MyCustomExtensionVisitor&lt;B, V>)visitor).visitCustomExtension(customProperties, binding);
   9086    } else {
   9087      return visitor.visit(binding);
   9088    }
   9089  }</pre> 
   9090  'MyCustomExtensionVisitor' in the example above would be an interface the
   9091  extension provides that users can implement in order to be notified of custom
   9092  extension information. These visitor interfaces must extend from
   9093  BindingTargetVisitor.
   9094 
   9095  @since 3.0
   9096  @author sameb (a] google.com (Sam Berlin)]]>
   9097     </doc>
   9098   </interface>
   9099   <!-- end interface com.google.inject.spi.ProviderWithExtensionVisitor -->
   9100   <!-- start class com.google.inject.spi.RequireExplicitBindingsOption -->
   9101   <class name="RequireExplicitBindingsOption" extends="java.lang.Object"
   9102     abstract="false"
   9103     static="false" final="true" visibility="public"
   9104     deprecated="not deprecated">
   9105     <implements name="com.google.inject.spi.Element"/>
   9106     <method name="getSource" return="java.lang.Object"
   9107       abstract="false" native="false" synchronized="false"
   9108       static="false" final="false" visibility="public"
   9109       deprecated="not deprecated">
   9110     </method>
   9111     <method name="applyTo"
   9112       abstract="false" native="false" synchronized="false"
   9113       static="false" final="false" visibility="public"
   9114       deprecated="not deprecated">
   9115       <param name="binder" type="com.google.inject.Binder"/>
   9116     </method>
   9117     <method name="acceptVisitor" return="T"
   9118       abstract="false" native="false" synchronized="false"
   9119       static="false" final="false" visibility="public"
   9120       deprecated="not deprecated">
   9121       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9122     </method>
   9123     <doc>
   9124     <![CDATA[A request to require explicit bindings.
   9125 
   9126  @author sameb (a] google.com (Sam Berlin)
   9127  @since 3.0]]>
   9128     </doc>
   9129   </class>
   9130   <!-- end class com.google.inject.spi.RequireExplicitBindingsOption -->
   9131   <!-- start class com.google.inject.spi.ScopeBinding -->
   9132   <class name="ScopeBinding" extends="java.lang.Object"
   9133     abstract="false"
   9134     static="false" final="true" visibility="public"
   9135     deprecated="not deprecated">
   9136     <implements name="com.google.inject.spi.Element"/>
   9137     <method name="getSource" return="java.lang.Object"
   9138       abstract="false" native="false" synchronized="false"
   9139       static="false" final="false" visibility="public"
   9140       deprecated="not deprecated">
   9141     </method>
   9142     <method name="getAnnotationType" return="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"
   9143       abstract="false" native="false" synchronized="false"
   9144       static="false" final="false" visibility="public"
   9145       deprecated="not deprecated">
   9146     </method>
   9147     <method name="getScope" return="com.google.inject.Scope"
   9148       abstract="false" native="false" synchronized="false"
   9149       static="false" final="false" visibility="public"
   9150       deprecated="not deprecated">
   9151     </method>
   9152     <method name="acceptVisitor" return="T"
   9153       abstract="false" native="false" synchronized="false"
   9154       static="false" final="false" visibility="public"
   9155       deprecated="not deprecated">
   9156       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9157     </method>
   9158     <method name="applyTo"
   9159       abstract="false" native="false" synchronized="false"
   9160       static="false" final="false" visibility="public"
   9161       deprecated="not deprecated">
   9162       <param name="binder" type="com.google.inject.Binder"/>
   9163     </method>
   9164     <doc>
   9165     <![CDATA[Registration of a scope annotation with the scope that implements it. Instances are created
   9166  explicitly in a module using {@link com.google.inject.Binder#bindScope(Class, Scope) bindScope()}
   9167  statements:
   9168  <pre>
   9169      Scope recordScope = new RecordScope();
   9170      bindScope(RecordScoped.class, new RecordScope());</pre>
   9171 
   9172  @author jessewilson (a] google.com (Jesse Wilson)
   9173  @since 2.0]]>
   9174     </doc>
   9175   </class>
   9176   <!-- end class com.google.inject.spi.ScopeBinding -->
   9177   <!-- start class com.google.inject.spi.StaticInjectionRequest -->
   9178   <class name="StaticInjectionRequest" extends="java.lang.Object"
   9179     abstract="false"
   9180     static="false" final="true" visibility="public"
   9181     deprecated="not deprecated">
   9182     <implements name="com.google.inject.spi.Element"/>
   9183     <method name="getSource" return="java.lang.Object"
   9184       abstract="false" native="false" synchronized="false"
   9185       static="false" final="false" visibility="public"
   9186       deprecated="not deprecated">
   9187     </method>
   9188     <method name="getType" return="java.lang.Class&lt;?&gt;"
   9189       abstract="false" native="false" synchronized="false"
   9190       static="false" final="false" visibility="public"
   9191       deprecated="not deprecated">
   9192     </method>
   9193     <method name="getInjectionPoints" return="java.util.Set&lt;com.google.inject.spi.InjectionPoint&gt;"
   9194       abstract="false" native="false" synchronized="false"
   9195       static="false" final="false" visibility="public"
   9196       deprecated="not deprecated">
   9197       <exception name="ConfigurationException" type="com.google.inject.ConfigurationException"/>
   9198       <doc>
   9199       <![CDATA[Returns the static methods and fields of {@code type} that will be injected to fulfill this
   9200  request.
   9201 
   9202  @return a possibly empty set of injection points. The set has a specified iteration order. All
   9203       fields are returned and then all methods. Within the fields, supertype fields are returned
   9204       before subtype fields. Similarly, supertype methods are returned before subtype methods.
   9205  @throws ConfigurationException if there is a malformed injection point on {@code type}, such as
   9206       a field with multiple binding annotations. The exception's {@link
   9207       ConfigurationException#getPartialValue() partial value} is a {@code Set<InjectionPoint>}
   9208       of the valid injection points.]]>
   9209       </doc>
   9210     </method>
   9211     <method name="applyTo"
   9212       abstract="false" native="false" synchronized="false"
   9213       static="false" final="false" visibility="public"
   9214       deprecated="not deprecated">
   9215       <param name="binder" type="com.google.inject.Binder"/>
   9216     </method>
   9217     <method name="acceptVisitor" return="T"
   9218       abstract="false" native="false" synchronized="false"
   9219       static="false" final="false" visibility="public"
   9220       deprecated="not deprecated">
   9221       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9222     </method>
   9223     <doc>
   9224     <![CDATA[A request to inject the static fields and methods of a type. Requests are created
   9225  explicitly in a module using {@link com.google.inject.Binder#requestStaticInjection(Class[])
   9226  requestStaticInjection()} statements:
   9227  <pre>
   9228      requestStaticInjection(MyLegacyService.class);</pre>
   9229 
   9230  @author jessewilson (a] google.com (Jesse Wilson)
   9231  @since 2.0]]>
   9232     </doc>
   9233   </class>
   9234   <!-- end class com.google.inject.spi.StaticInjectionRequest -->
   9235   <!-- start class com.google.inject.spi.Toolable -->
   9236   <class name="Toolable"    abstract="true"
   9237     static="false" final="false" visibility="public"
   9238     deprecated="not deprecated">
   9239     <implements name="java.lang.annotation.Annotation"/>
   9240     <doc>
   9241     <![CDATA[Instructs an {@link Injector} running in {@link Stage#TOOL} that a method should be injected.
   9242  This is typically useful for for extensions to Guice that perform additional validation in an
   9243  injected method or field.  This only applies to objects that are already constructed when
   9244  bindings are created (ie., something bound using {@link
   9245  com.google.inject.binder.LinkedBindingBuilder#toProvider toProvider}, {@link
   9246  com.google.inject.binder.LinkedBindingBuilder#toInstance toInstance}, or {@link
   9247  com.google.inject.Binder#requestInjection requestInjection}.
   9248  
   9249  @author sberlin (a] gmail.com (Sam Berlin)
   9250  @since 3.0]]>
   9251     </doc>
   9252   </class>
   9253   <!-- end class com.google.inject.spi.Toolable -->
   9254   <!-- start interface com.google.inject.spi.TypeConverter -->
   9255   <interface name="TypeConverter"    abstract="true"
   9256     static="false" final="false" visibility="public"
   9257     deprecated="not deprecated">
   9258     <method name="convert" return="java.lang.Object"
   9259       abstract="false" native="false" synchronized="false"
   9260       static="false" final="false" visibility="public"
   9261       deprecated="not deprecated">
   9262       <param name="value" type="java.lang.String"/>
   9263       <param name="toType" type="com.google.inject.TypeLiteral&lt;?&gt;"/>
   9264       <doc>
   9265       <![CDATA[Converts a string value. Throws an exception if a conversion error occurs.]]>
   9266       </doc>
   9267     </method>
   9268     <doc>
   9269     <![CDATA[Converts constant string values to a different type.
   9270 
   9271  @author crazybob (a] google.com (Bob Lee)
   9272  @since 2.0]]>
   9273     </doc>
   9274   </interface>
   9275   <!-- end interface com.google.inject.spi.TypeConverter -->
   9276   <!-- start class com.google.inject.spi.TypeConverterBinding -->
   9277   <class name="TypeConverterBinding" extends="java.lang.Object"
   9278     abstract="false"
   9279     static="false" final="true" visibility="public"
   9280     deprecated="not deprecated">
   9281     <implements name="com.google.inject.spi.Element"/>
   9282     <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"
   9283       static="false" final="false" visibility="public"
   9284       deprecated="not deprecated">
   9285       <doc>
   9286       <![CDATA[@since 3.0]]>
   9287       </doc>
   9288     </constructor>
   9289     <method name="getSource" return="java.lang.Object"
   9290       abstract="false" native="false" synchronized="false"
   9291       static="false" final="false" visibility="public"
   9292       deprecated="not deprecated">
   9293     </method>
   9294     <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   9295       abstract="false" native="false" synchronized="false"
   9296       static="false" final="false" visibility="public"
   9297       deprecated="not deprecated">
   9298     </method>
   9299     <method name="getTypeConverter" return="com.google.inject.spi.TypeConverter"
   9300       abstract="false" native="false" synchronized="false"
   9301       static="false" final="false" visibility="public"
   9302       deprecated="not deprecated">
   9303     </method>
   9304     <method name="acceptVisitor" return="T"
   9305       abstract="false" native="false" synchronized="false"
   9306       static="false" final="false" visibility="public"
   9307       deprecated="not deprecated">
   9308       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9309     </method>
   9310     <method name="applyTo"
   9311       abstract="false" native="false" synchronized="false"
   9312       static="false" final="false" visibility="public"
   9313       deprecated="not deprecated">
   9314       <param name="binder" type="com.google.inject.Binder"/>
   9315     </method>
   9316     <method name="toString" return="java.lang.String"
   9317       abstract="false" native="false" synchronized="false"
   9318       static="false" final="false" visibility="public"
   9319       deprecated="not deprecated">
   9320     </method>
   9321     <doc>
   9322     <![CDATA[Registration of type converters for matching target types. Instances are created
   9323  explicitly in a module using {@link com.google.inject.Binder#convertToTypes(Matcher,
   9324  TypeConverter) convertToTypes()} statements:
   9325  <pre>
   9326      convertToTypes(Matchers.only(TypeLiteral.get(DateTime.class)), new DateTimeConverter());</pre>
   9327 
   9328  @author jessewilson (a] google.com (Jesse Wilson)
   9329  @since 2.0]]>
   9330     </doc>
   9331   </class>
   9332   <!-- end class com.google.inject.spi.TypeConverterBinding -->
   9333   <!-- start interface com.google.inject.spi.TypeEncounter -->
   9334   <interface name="TypeEncounter"    abstract="true"
   9335     static="false" final="false" visibility="public"
   9336     deprecated="not deprecated">
   9337     <method name="addError"
   9338       abstract="false" native="false" synchronized="false"
   9339       static="false" final="false" visibility="public"
   9340       deprecated="not deprecated">
   9341       <param name="message" type="java.lang.String"/>
   9342       <param name="arguments" type="java.lang.Object[]"/>
   9343       <doc>
   9344       <![CDATA[Records an error message for type {@code I} which will be presented to the user at a later
   9345  time. Unlike throwing an exception, this enable us to continue configuring the Injector and
   9346  discover more errors. Uses {@link String#format(String, Object[])} to insert the arguments
   9347  into the message.]]>
   9348       </doc>
   9349     </method>
   9350     <method name="addError"
   9351       abstract="false" native="false" synchronized="false"
   9352       static="false" final="false" visibility="public"
   9353       deprecated="not deprecated">
   9354       <param name="t" type="java.lang.Throwable"/>
   9355       <doc>
   9356       <![CDATA[Records an exception for type {@code I}, the full details of which will be logged, and the
   9357  message of which will be presented to the user at a later time. If your type listener calls
   9358  something that you worry may fail, you should catch the exception and pass it to this method.]]>
   9359       </doc>
   9360     </method>
   9361     <method name="addError"
   9362       abstract="false" native="false" synchronized="false"
   9363       static="false" final="false" visibility="public"
   9364       deprecated="not deprecated">
   9365       <param name="message" type="com.google.inject.spi.Message"/>
   9366       <doc>
   9367       <![CDATA[Records an error message to be presented to the user at a later time.]]>
   9368       </doc>
   9369     </method>
   9370     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   9371       abstract="false" native="false" synchronized="false"
   9372       static="false" final="false" visibility="public"
   9373       deprecated="not deprecated">
   9374       <param name="key" type="com.google.inject.Key&lt;T&gt;"/>
   9375       <doc>
   9376       <![CDATA[Returns the provider used to obtain instances for the given injection key. The returned
   9377  provider will not be valid until the injector has been created. The provider will throw an
   9378  {@code IllegalStateException} if you try to use it beforehand.]]>
   9379       </doc>
   9380     </method>
   9381     <method name="getProvider" return="com.google.inject.Provider&lt;T&gt;"
   9382       abstract="false" native="false" synchronized="false"
   9383       static="false" final="false" visibility="public"
   9384       deprecated="not deprecated">
   9385       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   9386       <doc>
   9387       <![CDATA[Returns the provider used to obtain instances for the given injection type. The returned
   9388  provider will not be valid until the injetor has been created. The provider will throw an
   9389  {@code IllegalStateException} if you try to use it beforehand.]]>
   9390       </doc>
   9391     </method>
   9392     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   9393       abstract="false" native="false" synchronized="false"
   9394       static="false" final="false" visibility="public"
   9395       deprecated="not deprecated">
   9396       <param name="typeLiteral" type="com.google.inject.TypeLiteral&lt;T&gt;"/>
   9397       <doc>
   9398       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   9399  of the given type {@code T}. The returned members injector will not be valid until the main
   9400  injector has been created. The members injector will throw an {@code IllegalStateException}
   9401  if you try to use it beforehand.
   9402 
   9403  @param typeLiteral type to get members injector for]]>
   9404       </doc>
   9405     </method>
   9406     <method name="getMembersInjector" return="com.google.inject.MembersInjector&lt;T&gt;"
   9407       abstract="false" native="false" synchronized="false"
   9408       static="false" final="false" visibility="public"
   9409       deprecated="not deprecated">
   9410       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   9411       <doc>
   9412       <![CDATA[Returns the members injector used to inject dependencies into methods and fields on instances
   9413  of the given type {@code T}. The returned members injector will not be valid until the main
   9414  injector has been created. The members injector will throw an {@code IllegalStateException}
   9415  if you try to use it beforehand.
   9416 
   9417  @param type type to get members injector for]]>
   9418       </doc>
   9419     </method>
   9420     <method name="register"
   9421       abstract="false" native="false" synchronized="false"
   9422       static="false" final="false" visibility="public"
   9423       deprecated="not deprecated">
   9424       <param name="membersInjector" type="com.google.inject.MembersInjector&lt;? super I&gt;"/>
   9425       <doc>
   9426       <![CDATA[Registers a members injector for type {@code I}. Guice will use the members injector after its
   9427  performed its own injections on an instance of {@code I}.]]>
   9428       </doc>
   9429     </method>
   9430     <method name="register"
   9431       abstract="false" native="false" synchronized="false"
   9432       static="false" final="false" visibility="public"
   9433       deprecated="not deprecated">
   9434       <param name="listener" type="com.google.inject.spi.InjectionListener&lt;? super I&gt;"/>
   9435       <doc>
   9436       <![CDATA[Registers an injection listener for type {@code I}. Guice will notify the listener after all
   9437  injections have been performed on an instance of {@code I}.]]>
   9438       </doc>
   9439     </method>
   9440     <method name="bindInterceptor"
   9441       abstract="false" native="false" synchronized="false"
   9442       static="false" final="false" visibility="public"
   9443       deprecated="not deprecated">
   9444       <param name="methodMatcher" type="com.google.inject.matcher.Matcher&lt;? super java.lang.reflect.Method&gt;"/>
   9445       <param name="interceptors" type="org.aopalliance.intercept.MethodInterceptor[]"/>
   9446       <doc>
   9447       <![CDATA[Binds method interceptor[s] to methods matched in type {@code I} and its supertypes. A
   9448  method is eligible for interception if:
   9449 
   9450  <ul>
   9451   <li>Guice created the instance the method is on</li>
   9452   <li>Neither the enclosing type nor the method is final</li>
   9453   <li>And the method is package-private or more accessible</li>
   9454  </ul>
   9455 
   9456  @param methodMatcher matches methods the interceptor should apply to. For
   9457      example: {@code annotatedWith(Transactional.class)}.
   9458  @param interceptors to bind]]>
   9459       </doc>
   9460     </method>
   9461     <doc>
   9462     <![CDATA[Context of an injectable type encounter. Enables reporting errors, registering injection
   9463  listeners and binding method interceptors for injectable type {@code I}. It is an error to use
   9464  an encounter after the {@link TypeListener#hear(TypeLiteral, TypeEncounter) hear()} method has
   9465  returned.
   9466 
   9467  @param <I> the injectable type encountered
   9468  @since 2.0]]>
   9469     </doc>
   9470   </interface>
   9471   <!-- end interface com.google.inject.spi.TypeEncounter -->
   9472   <!-- start interface com.google.inject.spi.TypeListener -->
   9473   <interface name="TypeListener"    abstract="true"
   9474     static="false" final="false" visibility="public"
   9475     deprecated="not deprecated">
   9476     <method name="hear"
   9477       abstract="false" native="false" synchronized="false"
   9478       static="false" final="false" visibility="public"
   9479       deprecated="not deprecated">
   9480       <param name="type" type="com.google.inject.TypeLiteral&lt;I&gt;"/>
   9481       <param name="encounter" type="com.google.inject.spi.TypeEncounter&lt;I&gt;"/>
   9482       <doc>
   9483       <![CDATA[Invoked when Guice encounters a new type eligible for constructor or members injection.
   9484  Called during injector creation (or afterwords if Guice encounters a type at run time and
   9485  creates a JIT binding).
   9486 
   9487  @param type encountered by Guice
   9488  @param encounter context of this encounter, enables reporting errors, registering injection
   9489      listeners and binding method interceptors for {@code type}.
   9490 
   9491  @param <I> the injectable type]]>
   9492       </doc>
   9493     </method>
   9494     <doc>
   9495     <![CDATA[Listens for Guice to encounter injectable types. If a given type has its constructor injected in
   9496  one situation but only its methods and fields injected in another, Guice will notify this
   9497  listener once.
   9498 
   9499  <p>Useful for extra type checking, {@linkplain TypeEncounter#register(InjectionListener)
   9500  registering injection listeners}, and {@linkplain TypeEncounter#bindInterceptor(
   9501  com.google.inject.matcher.Matcher, org.aopalliance.intercept.MethodInterceptor[])
   9502  binding method interceptors}.
   9503  
   9504  @since 2.0]]>
   9505     </doc>
   9506   </interface>
   9507   <!-- end interface com.google.inject.spi.TypeListener -->
   9508   <!-- start class com.google.inject.spi.TypeListenerBinding -->
   9509   <class name="TypeListenerBinding" extends="java.lang.Object"
   9510     abstract="false"
   9511     static="false" final="true" visibility="public"
   9512     deprecated="not deprecated">
   9513     <implements name="com.google.inject.spi.Element"/>
   9514     <method name="getListener" return="com.google.inject.spi.TypeListener"
   9515       abstract="false" native="false" synchronized="false"
   9516       static="false" final="false" visibility="public"
   9517       deprecated="not deprecated">
   9518       <doc>
   9519       <![CDATA[Returns the registered listener.]]>
   9520       </doc>
   9521     </method>
   9522     <method name="getTypeMatcher" return="com.google.inject.matcher.Matcher&lt;? super com.google.inject.TypeLiteral&lt;?&gt;&gt;"
   9523       abstract="false" native="false" synchronized="false"
   9524       static="false" final="false" visibility="public"
   9525       deprecated="not deprecated">
   9526       <doc>
   9527       <![CDATA[Returns the type matcher which chooses which types the listener should be notified of.]]>
   9528       </doc>
   9529     </method>
   9530     <method name="getSource" return="java.lang.Object"
   9531       abstract="false" native="false" synchronized="false"
   9532       static="false" final="false" visibility="public"
   9533       deprecated="not deprecated">
   9534     </method>
   9535     <method name="acceptVisitor" return="T"
   9536       abstract="false" native="false" synchronized="false"
   9537       static="false" final="false" visibility="public"
   9538       deprecated="not deprecated">
   9539       <param name="visitor" type="com.google.inject.spi.ElementVisitor&lt;T&gt;"/>
   9540     </method>
   9541     <method name="applyTo"
   9542       abstract="false" native="false" synchronized="false"
   9543       static="false" final="false" visibility="public"
   9544       deprecated="not deprecated">
   9545       <param name="binder" type="com.google.inject.Binder"/>
   9546     </method>
   9547     <doc>
   9548     <![CDATA[Binds types (picked using a Matcher) to an type listener. Registrations are created explicitly in
   9549  a module using {@link com.google.inject.Binder#bindListener(Matcher, TypeListener)} statements:
   9550 
   9551  <pre>
   9552      register(only(new TypeLiteral&lt;PaymentService&lt;CreditCard>>() {}), listener);</pre>
   9553 
   9554  @author jessewilson (a] google.com (Jesse Wilson)
   9555  @since 2.0]]>
   9556     </doc>
   9557   </class>
   9558   <!-- end class com.google.inject.spi.TypeListenerBinding -->
   9559   <!-- start interface com.google.inject.spi.UntargettedBinding -->
   9560   <interface name="UntargettedBinding"    abstract="true"
   9561     static="false" final="false" visibility="public"
   9562     deprecated="not deprecated">
   9563     <implements name="com.google.inject.Binding&lt;T&gt;"/>
   9564     <doc>
   9565     <![CDATA[An untargetted binding. This binding indicates that the injector should use its implicit binding
   9566  strategies to resolve injections.
   9567 
   9568  @author jessewilson (a] google.com (Jesse Wilson)
   9569  @since 2.0]]>
   9570     </doc>
   9571   </interface>
   9572   <!-- end interface com.google.inject.spi.UntargettedBinding -->
   9573 </package>
   9574 <package name="com.google.inject.spring">
   9575   <!-- start class com.google.inject.spring.SpringIntegration -->
   9576   <class name="SpringIntegration" extends="java.lang.Object"
   9577     abstract="false"
   9578     static="false" final="false" visibility="public"
   9579     deprecated="not deprecated">
   9580     <method name="fromSpring" return="com.google.inject.Provider&lt;T&gt;"
   9581       abstract="false" native="false" synchronized="false"
   9582       static="true" final="false" visibility="public"
   9583       deprecated="not deprecated">
   9584       <param name="type" type="java.lang.Class&lt;T&gt;"/>
   9585       <param name="name" type="java.lang.String"/>
   9586       <doc>
   9587       <![CDATA[Creates a provider which looks up objects from Spring using the given name.
   9588  Expects a binding to {@link
   9589  org.springframework.beans.factory.BeanFactory}. Example usage:
   9590 
   9591  <pre>
   9592  bind(DataSource.class)
   9593    .toProvider(fromSpring(DataSource.class, "dataSource"));
   9594  </pre>]]>
   9595       </doc>
   9596     </method>
   9597     <method name="bindAll"
   9598       abstract="false" native="false" synchronized="false"
   9599       static="true" final="false" visibility="public"
   9600       deprecated="not deprecated">
   9601       <param name="binder" type="com.google.inject.Binder"/>
   9602       <param name="beanFactory" type="ListableBeanFactory"/>
   9603       <doc>
   9604       <![CDATA[Binds all Spring beans from the given factory by name. For a Spring bean
   9605  named "foo", this method creates a binding to the bean's type and
   9606  {@code @Named("foo")}.
   9607 
   9608  @see com.google.inject.name.Named
   9609  @see com.google.inject.name.Names#named(String)]]>
   9610       </doc>
   9611     </method>
   9612     <doc>
   9613     <![CDATA[Integrates Guice with Spring.
   9614 
   9615  @author crazybob (a] google.com (Bob Lee)]]>
   9616     </doc>
   9617   </class>
   9618   <!-- end class com.google.inject.spring.SpringIntegration -->
   9619 </package>
   9620 <package name="com.google.inject.struts2">
   9621   <!-- start class com.google.inject.struts2.GuiceObjectFactory -->
   9622   <class name="GuiceObjectFactory" extends="ObjectFactory"
   9623     abstract="false"
   9624     static="false" final="false" visibility="public"
   9625     deprecated="Use {@link com.google.inject.servlet.Struts2Factory} instead.">
   9626     <constructor name="GuiceObjectFactory"
   9627       static="false" final="false" visibility="public"
   9628       deprecated="not deprecated">
   9629     </constructor>
   9630     <method name="isNoArgConstructorRequired" return="boolean"
   9631       abstract="false" native="false" synchronized="false"
   9632       static="false" final="false" visibility="public"
   9633       deprecated="not deprecated">
   9634     </method>
   9635     <method name="getClassInstance" return="java.lang.Class"
   9636       abstract="false" native="false" synchronized="false"
   9637       static="false" final="false" visibility="public"
   9638       deprecated="not deprecated">
   9639       <param name="name" type="java.lang.String"/>
   9640       <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
   9641     </method>
   9642     <method name="buildBean" return="java.lang.Object"
   9643       abstract="false" native="false" synchronized="false"
   9644       static="false" final="false" visibility="public"
   9645       deprecated="not deprecated">
   9646       <param name="clazz" type="java.lang.Class"/>
   9647       <param name="extraContext" type="java.util.Map"/>
   9648     </method>
   9649     <method name="buildInterceptor" return="Interceptor"
   9650       abstract="false" native="false" synchronized="false"
   9651       static="false" final="false" visibility="public"
   9652       deprecated="not deprecated">
   9653       <param name="interceptorConfig" type="InterceptorConfig"/>
   9654       <param name="interceptorRefParams" type="java.util.Map"/>
   9655       <exception name="ConfigurationException" type="ConfigurationException"/>
   9656     </method>
   9657     <doc>
   9658     <![CDATA[@deprecated Use {@link com.google.inject.servlet.Struts2Factory} instead.]]>
   9659     </doc>
   9660   </class>
   9661   <!-- end class com.google.inject.struts2.GuiceObjectFactory -->
   9662   <!-- start class com.google.inject.struts2.Struts2Factory -->
   9663   <class name="Struts2Factory" extends="ObjectFactory"
   9664     abstract="false"
   9665     static="false" final="false" visibility="public"
   9666     deprecated="not deprecated">
   9667     <constructor name="Struts2Factory"
   9668       static="false" final="false" visibility="public"
   9669       deprecated="not deprecated">
   9670     </constructor>
   9671     <method name="isNoArgConstructorRequired" return="boolean"
   9672       abstract="false" native="false" synchronized="false"
   9673       static="false" final="false" visibility="public"
   9674       deprecated="not deprecated">
   9675     </method>
   9676     <method name="getClassInstance" return="java.lang.Class&lt;?&gt;"
   9677       abstract="false" native="false" synchronized="false"
   9678       static="false" final="false" visibility="public"
   9679       deprecated="not deprecated">
   9680       <param name="name" type="java.lang.String"/>
   9681       <exception name="ClassNotFoundException" type="java.lang.ClassNotFoundException"/>
   9682     </method>
   9683     <method name="buildBean" return="java.lang.Object"
   9684       abstract="false" native="false" synchronized="false"
   9685       static="false" final="false" visibility="public"
   9686       deprecated="not deprecated">
   9687       <param name="clazz" type="java.lang.Class"/>
   9688       <param name="extraContext" type="java.util.Map&lt;java.lang.String, java.lang.Object&gt;"/>
   9689     </method>
   9690     <method name="buildInterceptor" return="Interceptor"
   9691       abstract="false" native="false" synchronized="false"
   9692       static="false" final="false" visibility="public"
   9693       deprecated="not deprecated">
   9694       <param name="interceptorConfig" type="InterceptorConfig"/>
   9695       <param name="interceptorRefParams" type="java.util.Map"/>
   9696       <exception name="ConfigurationException" type="ConfigurationException"/>
   9697     </method>
   9698     <doc>
   9699     <![CDATA[Cleanup up version from Bob's GuiceObjectFactory. Now works properly with
   9700  GS2 and fixes several bugs.
   9701 
   9702  @author dhanji (a] gmail.com
   9703  @author benmccann.com]]>
   9704     </doc>
   9705   </class>
   9706   <!-- end class com.google.inject.struts2.Struts2Factory -->
   9707   <!-- start class com.google.inject.struts2.Struts2GuicePluginModule -->
   9708   <class name="Struts2GuicePluginModule" extends="com.google.inject.AbstractModule"
   9709     abstract="false"
   9710     static="false" final="false" visibility="public"
   9711     deprecated="not deprecated">
   9712     <constructor name="Struts2GuicePluginModule"
   9713       static="false" final="false" visibility="public"
   9714       deprecated="not deprecated">
   9715     </constructor>
   9716     <method name="configure"
   9717       abstract="false" native="false" synchronized="false"
   9718       static="false" final="false" visibility="protected"
   9719       deprecated="not deprecated">
   9720     </method>
   9721     <doc>
   9722     <![CDATA[Initializes the Struts 2 Guice Plugin.
   9723  Must be added to the injector returned by
   9724      {@link GuiceServletContextListener.getInjector()}.
   9725 
   9726  @author benmccann.com]]>
   9727     </doc>
   9728   </class>
   9729   <!-- end class com.google.inject.struts2.Struts2GuicePluginModule -->
   9730 </package>
   9731 <package name="com.google.inject.throwingproviders">
   9732   <!-- start interface com.google.inject.throwingproviders.CheckedProvider -->
   9733   <interface name="CheckedProvider"    abstract="true"
   9734     static="false" final="false" visibility="public"
   9735     deprecated="not deprecated">
   9736     <method name="get" return="T"
   9737       abstract="false" native="false" synchronized="false"
   9738       static="false" final="false" visibility="public"
   9739       deprecated="not deprecated">
   9740       <exception name="Exception" type="java.lang.Exception"/>
   9741     </method>
   9742     <doc>
   9743     <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
   9744  a checked Exception. Users may not inject {@code T} directly.
   9745 
   9746  <p>This interface must be extended to use application-specific exception types.
   9747  Such subinterfaces may not define new methods, but may narrow the exception type.
   9748  <pre>
   9749  public interface RemoteProvider&lt;T&gt; extends CheckedProvider&lt;T&gt; { 
   9750    T get() throws CustomExceptionOne, CustomExceptionTwo;
   9751  }
   9752  </pre>
   9753 
   9754  <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
   9755  or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
   9756  will invoked at most once within each scope.
   9757  
   9758  @since 3.0]]>
   9759     </doc>
   9760   </interface>
   9761   <!-- end interface com.google.inject.throwingproviders.CheckedProvider -->
   9762   <!-- start class com.google.inject.throwingproviders.CheckedProvides -->
   9763   <class name="CheckedProvides"    abstract="true"
   9764     static="false" final="false" visibility="public"
   9765     deprecated="not deprecated">
   9766     <implements name="java.lang.annotation.Annotation"/>
   9767     <doc>
   9768     <![CDATA[Annotates methods of a {@link Module} to create a {@link CheckedProvider}
   9769  method binding that can throw exceptions. The method's return type is bound
   9770  to a {@link CheckedProvider} that can be injected. Guice will pass
   9771  dependencies to the method as parameters. Install {@literal @}CheckedProvides
   9772  methods by using
   9773  {@link ThrowingProviderBinder#forModule(com.google.inject.Module)} on the
   9774  module where the methods are declared.
   9775  
   9776  @author sameb (a] google.com (Sam Berlin)
   9777  @since 3.0]]>
   9778     </doc>
   9779   </class>
   9780   <!-- end class com.google.inject.throwingproviders.CheckedProvides -->
   9781   <!-- start interface com.google.inject.throwingproviders.ThrowingProvider -->
   9782   <interface name="ThrowingProvider"    abstract="true"
   9783     static="false" final="false" visibility="public"
   9784     deprecated="use {@link CheckedProvider} instead.">
   9785     <implements name="com.google.inject.throwingproviders.CheckedProvider&lt;T&gt;"/>
   9786     <method name="get" return="T"
   9787       abstract="false" native="false" synchronized="false"
   9788       static="false" final="false" visibility="public"
   9789       deprecated="not deprecated">
   9790       <exception name="Exception" type="java.lang.Exception"/>
   9791     </method>
   9792     <doc>
   9793     <![CDATA[Alternative to the Guice {@link com.google.inject.Provider} that throws
   9794  a checked Exception. Users may not inject {@code T} directly.
   9795 
   9796  <p>This interface must be extended to use application-specific exception types.
   9797  Such subinterfaces may not define new methods:
   9798  <pre>
   9799  public interface RemoteProvider&lt;T&gt; extends ThrowingProvider&lt;T, RemoteException&gt; { }
   9800  </pre>
   9801 
   9802  <p>When this type is bound using {@link ThrowingProviderBinder}, the value returned
   9803  or exception thrown by {@link #get} will be scoped. As a consequence, {@link #get}
   9804  will invoked at most once within each scope.
   9805 
   9806  @author jmourits (a] google.com (Jerome Mourits)
   9807  @author jessewilson (a] google.com (Jesse Wilson)
   9808  @deprecated use {@link CheckedProvider} instead.]]>
   9809     </doc>
   9810   </interface>
   9811   <!-- end interface com.google.inject.throwingproviders.ThrowingProvider -->
   9812   <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder -->
   9813   <class name="ThrowingProviderBinder" extends="java.lang.Object"
   9814     abstract="false"
   9815     static="false" final="false" visibility="public"
   9816     deprecated="not deprecated">
   9817     <method name="create" return="com.google.inject.throwingproviders.ThrowingProviderBinder"
   9818       abstract="false" native="false" synchronized="false"
   9819       static="true" final="false" visibility="public"
   9820       deprecated="not deprecated">
   9821       <param name="binder" type="com.google.inject.Binder"/>
   9822     </method>
   9823     <method name="forModule" return="com.google.inject.Module"
   9824       abstract="false" native="false" synchronized="false"
   9825       static="true" final="false" visibility="public"
   9826       deprecated="not deprecated">
   9827       <param name="module" type="com.google.inject.Module"/>
   9828       <doc>
   9829       <![CDATA[Returns a module that installs {@literal @}{@link CheckedProvides} methods.
   9830  
   9831  @since 3.0]]>
   9832       </doc>
   9833     </method>
   9834     <method name="bind" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
   9835       abstract="false" native="false" synchronized="false"
   9836       static="false" final="false" visibility="public"
   9837       deprecated="not deprecated">
   9838       <param name="interfaceType" type="java.lang.Class&lt;P&gt;"/>
   9839       <param name="valueType" type="java.lang.reflect.Type"/>
   9840     </method>
   9841     <doc>
   9842     <![CDATA[<p>Builds a binding for a {@link CheckedProvider}.
   9843  
   9844  <p>You can use a fluent API and custom providers:
   9845  <pre><code>ThrowingProviderBinder.create(binder())
   9846     .bind(RemoteProvider.class, Customer.class)
   9847     .to(RemoteCustomerProvider.class)
   9848     .in(RequestScope.class);
   9849  </code></pre>
   9850  or, you can use throwing provider methods:
   9851  <pre><code>class MyModule extends AbstractModule {
   9852    configure() {
   9853      ThrowingProviderBinder.install(this, binder());
   9854    }
   9855    
   9856    {@literal @}CheckedProvides(RemoteProvider.class)
   9857    {@literal @}RequestScope
   9858    Customer provideCustomer(FlakyCustomerCreator creator) throws RemoteException {
   9859      return creator.getCustomerOrThrow();
   9860    }
   9861  }
   9862  </code></pre>
   9863  
   9864  @author jmourits (a] google.com (Jerome Mourits)
   9865  @author jessewilson (a] google.com (Jesse Wilson)]]>
   9866     </doc>
   9867   </class>
   9868   <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder -->
   9869   <!-- start class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
   9870   <class name="ThrowingProviderBinder.SecondaryBinder" extends="java.lang.Object"
   9871     abstract="false"
   9872     static="false" final="false" visibility="public"
   9873     deprecated="not deprecated">
   9874     <constructor name="ThrowingProviderBinder.SecondaryBinder" type="java.lang.Class&lt;P&gt;, java.lang.reflect.Type"
   9875       static="false" final="false" visibility="public"
   9876       deprecated="not deprecated">
   9877     </constructor>
   9878     <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
   9879       abstract="false" native="false" synchronized="false"
   9880       static="false" final="false" visibility="public"
   9881       deprecated="not deprecated">
   9882       <param name="annotationType" type="java.lang.Class&lt;? extends java.lang.annotation.Annotation&gt;"/>
   9883     </method>
   9884     <method name="annotatedWith" return="com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder&lt;P&gt;"
   9885       abstract="false" native="false" synchronized="false"
   9886       static="false" final="false" visibility="public"
   9887       deprecated="not deprecated">
   9888       <param name="annotation" type="java.lang.annotation.Annotation"/>
   9889     </method>
   9890     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   9891       abstract="false" native="false" synchronized="false"
   9892       static="false" final="false" visibility="public"
   9893       deprecated="not deprecated">
   9894       <param name="target" type="P extends com.google.inject.throwingproviders.CheckedProvider"/>
   9895     </method>
   9896     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   9897       abstract="false" native="false" synchronized="false"
   9898       static="false" final="false" visibility="public"
   9899       deprecated="not deprecated">
   9900       <param name="targetType" type="java.lang.Class&lt;? extends P&gt;"/>
   9901     </method>
   9902     <method name="to" return="com.google.inject.binder.ScopedBindingBuilder"
   9903       abstract="false" native="false" synchronized="false"
   9904       static="false" final="false" visibility="public"
   9905       deprecated="not deprecated">
   9906       <param name="targetKey" type="com.google.inject.Key&lt;? extends P&gt;"/>
   9907     </method>
   9908   </class>
   9909   <!-- end class com.google.inject.throwingproviders.ThrowingProviderBinder.SecondaryBinder -->
   9910 </package>
   9911 <package name="com.google.inject.tools.jmx">
   9912   <!-- start interface com.google.inject.tools.jmx.ManagedBindingMBean -->
   9913   <interface name="ManagedBindingMBean"    abstract="true"
   9914     static="false" final="false" visibility="public"
   9915     deprecated="not deprecated">
   9916     <method name="getSource" return="java.lang.String"
   9917       abstract="false" native="false" synchronized="false"
   9918       static="false" final="false" visibility="public"
   9919       deprecated="not deprecated">
   9920       <doc>
   9921       <![CDATA[Gets the source of this binding.]]>
   9922       </doc>
   9923     </method>
   9924     <method name="getProvider" return="java.lang.String"
   9925       abstract="false" native="false" synchronized="false"
   9926       static="false" final="false" visibility="public"
   9927       deprecated="not deprecated">
   9928       <doc>
   9929       <![CDATA[Gets the provider to which this binding is bound.]]>
   9930       </doc>
   9931     </method>
   9932     <method name="getKey" return="java.lang.String"
   9933       abstract="false" native="false" synchronized="false"
   9934       static="false" final="false" visibility="public"
   9935       deprecated="not deprecated">
   9936       <doc>
   9937       <![CDATA[Gets the binding key.]]>
   9938       </doc>
   9939     </method>
   9940     <doc>
   9941     <![CDATA[JMX interface to bindings.
   9942 
   9943  @author crazybob (a] google.com (Bob Lee)]]>
   9944     </doc>
   9945   </interface>
   9946   <!-- end interface com.google.inject.tools.jmx.ManagedBindingMBean -->
   9947   <!-- start class com.google.inject.tools.jmx.Manager -->
   9948   <class name="Manager" extends="java.lang.Object"
   9949     abstract="false"
   9950     static="false" final="false" visibility="public"
   9951     deprecated="not deprecated">
   9952     <constructor name="Manager"
   9953       static="false" final="false" visibility="public"
   9954       deprecated="not deprecated">
   9955     </constructor>
   9956     <method name="manage"
   9957       abstract="false" native="false" synchronized="false"
   9958       static="true" final="false" visibility="public"
   9959       deprecated="not deprecated">
   9960       <param name="domain" type="java.lang.String"/>
   9961       <param name="injector" type="com.google.inject.Injector"/>
   9962       <doc>
   9963       <![CDATA[Registers all the bindings of an Injector with the platform MBean server.
   9964  Consider using the name of your root {@link Module} class as the domain.]]>
   9965       </doc>
   9966     </method>
   9967     <method name="manage"
   9968       abstract="false" native="false" synchronized="false"
   9969       static="true" final="false" visibility="public"
   9970       deprecated="not deprecated">
   9971       <param name="server" type="javax.management.MBeanServer"/>
   9972       <param name="domain" type="java.lang.String"/>
   9973       <param name="injector" type="com.google.inject.Injector"/>
   9974       <doc>
   9975       <![CDATA[Registers all the bindings of an Injector with the given MBean server.
   9976  Consider using the name of your root {@link Module} class as the domain.]]>
   9977       </doc>
   9978     </method>
   9979     <method name="main"
   9980       abstract="false" native="false" synchronized="false"
   9981       static="true" final="false" visibility="public"
   9982       deprecated="not deprecated">
   9983       <param name="args" type="java.lang.String[]"/>
   9984       <exception name="Exception" type="java.lang.Exception"/>
   9985       <doc>
   9986       <![CDATA[Run with no arguments for usage instructions.]]>
   9987       </doc>
   9988     </method>
   9989     <doc>
   9990     <![CDATA[Provides a JMX interface to Guice.
   9991 
   9992  @author crazybob (a] google.com (Bob Lee)]]>
   9993     </doc>
   9994   </class>
   9995   <!-- end class com.google.inject.tools.jmx.Manager -->
   9996 </package>
   9997 <package name="com.google.inject.util">
   9998   <!-- start class com.google.inject.util.Modules -->
   9999   <class name="Modules" extends="java.lang.Object"
   10000     abstract="false"
   10001     static="false" final="true" visibility="public"
   10002     deprecated="not deprecated">
   10003     <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
   10004       abstract="false" native="false" synchronized="false"
   10005       static="true" final="false" visibility="public"
   10006       deprecated="not deprecated">
   10007       <param name="modules" type="com.google.inject.Module[]"/>
   10008       <doc>
   10009       <![CDATA[Returns a builder that creates a module that overlays override modules over the given
   10010  modules. If a key is bound in both sets of modules, only the binding from the override modules
   10011  is kept. If a single {@link PrivateModule} is supplied or all elements are from
   10012  a single {@link PrivateBinder}, then this will overwrite the private bindings.
   10013  Otherwise, private bindings will not be overwritten unless they are exposed. 
   10014  This can be used to replace the bindings of a production module with test bindings:
   10015  <pre>
   10016  Module functionalTestModule
   10017      = Modules.override(new ProductionModule()).with(new TestModule());
   10018  </pre>
   10019 
   10020  <p>Prefer to write smaller modules that can be reused and tested without overrides.
   10021 
   10022  @param modules the modules whose bindings are open to be overridden]]>
   10023       </doc>
   10024     </method>
   10025     <method name="override" return="com.google.inject.util.Modules.OverriddenModuleBuilder"
   10026       abstract="false" native="false" synchronized="false"
   10027       static="true" final="false" visibility="public"
   10028       deprecated="not deprecated">
   10029       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   10030       <doc>
   10031       <![CDATA[Returns a builder that creates a module that overlays override modules over the given
   10032  modules. If a key is bound in both sets of modules, only the binding from the override modules
   10033  is kept. If a single {@link PrivateModule} is supplied or all elements are from
   10034  a single {@link PrivateBinder}, then this will overwrite the private bindings.
   10035  Otherwise, private bindings will not be overwritten unless they are exposed. 
   10036  This can be used to replace the bindings of a production module with test bindings:
   10037  <pre>
   10038  Module functionalTestModule
   10039      = Modules.override(getProductionModules()).with(getTestModules());
   10040  </pre>
   10041 
   10042  <p>Prefer to write smaller modules that can be reused and tested without overrides.
   10043 
   10044  @param modules the modules whose bindings are open to be overridden]]>
   10045       </doc>
   10046     </method>
   10047     <method name="combine" return="com.google.inject.Module"
   10048       abstract="false" native="false" synchronized="false"
   10049       static="true" final="false" visibility="public"
   10050       deprecated="not deprecated">
   10051       <param name="modules" type="com.google.inject.Module[]"/>
   10052       <doc>
   10053       <![CDATA[Returns a new module that installs all of {@code modules}.]]>
   10054       </doc>
   10055     </method>
   10056     <method name="combine" return="com.google.inject.Module"
   10057       abstract="false" native="false" synchronized="false"
   10058       static="true" final="false" visibility="public"
   10059       deprecated="not deprecated">
   10060       <param name="modules" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   10061       <doc>
   10062       <![CDATA[Returns a new module that installs all of {@code modules}.]]>
   10063       </doc>
   10064     </method>
   10065     <field name="EMPTY_MODULE" type="com.google.inject.Module"
   10066       transient="false" volatile="false"
   10067       static="true" final="true" visibility="public"
   10068       deprecated="not deprecated">
   10069     </field>
   10070     <doc>
   10071     <![CDATA[Static utility methods for creating and working with instances of {@link Module}.
   10072 
   10073  @author jessewilson (a] google.com (Jesse Wilson)
   10074  @since 2.0]]>
   10075     </doc>
   10076   </class>
   10077   <!-- end class com.google.inject.util.Modules -->
   10078   <!-- start interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
   10079   <interface name="Modules.OverriddenModuleBuilder"    abstract="true"
   10080     static="true" final="false" visibility="public"
   10081     deprecated="not deprecated">
   10082     <method name="with" return="com.google.inject.Module"
   10083       abstract="false" native="false" synchronized="false"
   10084       static="false" final="false" visibility="public"
   10085       deprecated="not deprecated">
   10086       <param name="overrides" type="com.google.inject.Module[]"/>
   10087       <doc>
   10088       <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   10089       </doc>
   10090     </method>
   10091     <method name="with" return="com.google.inject.Module"
   10092       abstract="false" native="false" synchronized="false"
   10093       static="false" final="false" visibility="public"
   10094       deprecated="not deprecated">
   10095       <param name="overrides" type="java.lang.Iterable&lt;? extends com.google.inject.Module&gt;"/>
   10096       <doc>
   10097       <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   10098       </doc>
   10099     </method>
   10100     <doc>
   10101     <![CDATA[See the EDSL example at {@link Modules#override(Module[]) override()}.]]>
   10102     </doc>
   10103   </interface>
   10104   <!-- end interface com.google.inject.util.Modules.OverriddenModuleBuilder -->
   10105   <!-- start class com.google.inject.util.Providers -->
   10106   <class name="Providers" extends="java.lang.Object"
   10107     abstract="false"
   10108     static="false" final="true" visibility="public"
   10109     deprecated="not deprecated">
   10110     <method name="of" return="com.google.inject.Provider&lt;T&gt;"
   10111       abstract="false" native="false" synchronized="false"
   10112       static="true" final="false" visibility="public"
   10113       deprecated="not deprecated">
   10114       <param name="instance" type="T"/>
   10115       <doc>
   10116       <![CDATA[Returns a provider which always provides {@code instance}.  This should not
   10117  be necessary to use in your application, but is helpful for several types
   10118  of unit tests.
   10119 
   10120  @param instance the instance that should always be provided.  This is also
   10121      permitted to be null, to enable aggressive testing, although in real
   10122      life a Guice-supplied Provider will never return null.]]>
   10123       </doc>
   10124     </method>
   10125     <method name="guicify" return="com.google.inject.Provider&lt;T&gt;"
   10126       abstract="false" native="false" synchronized="false"
   10127       static="true" final="false" visibility="public"
   10128       deprecated="not deprecated">
   10129       <param name="provider" type="javax.inject.Provider&lt;T&gt;"/>
   10130       <doc>
   10131       <![CDATA[Returns a Guice-friendly {@code com.google.inject.Provider} for the given
   10132  JSR-330 {@code javax.inject.Provider}. The converse method is unnecessary,
   10133  since Guice providers directly implement the JSR-330 interface.
   10134  
   10135  @since 3.0]]>
   10136       </doc>
   10137     </method>
   10138     <doc>
   10139     <![CDATA[Static utility methods for creating and working with instances of
   10140  {@link Provider}.
   10141 
   10142  @author Kevin Bourrillion (kevinb9n (a] gmail.com)
   10143  @since 2.0]]>
   10144     </doc>
   10145   </class>
   10146   <!-- end class com.google.inject.util.Providers -->
   10147   <!-- start class com.google.inject.util.Types -->
   10148   <class name="Types" extends="java.lang.Object"
   10149     abstract="false"
   10150     static="false" final="true" visibility="public"
   10151     deprecated="not deprecated">
   10152     <method name="newParameterizedType" return="java.lang.reflect.ParameterizedType"
   10153       abstract="false" native="false" synchronized="false"
   10154       static="true" final="false" visibility="public"
   10155       deprecated="not deprecated">
   10156       <param name="rawType" type="java.lang.reflect.Type"/>
   10157       <param name="typeArguments" type="java.lang.reflect.Type[]"/>
   10158       <doc>
   10159       <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
   10160  {@code rawType}. The returned type does not have an owner type.
   10161 
   10162  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10163       </doc>
   10164     </method>
   10165     <method name="newParameterizedTypeWithOwner" return="java.lang.reflect.ParameterizedType"
   10166       abstract="false" native="false" synchronized="false"
   10167       static="true" final="false" visibility="public"
   10168       deprecated="not deprecated">
   10169       <param name="ownerType" type="java.lang.reflect.Type"/>
   10170       <param name="rawType" type="java.lang.reflect.Type"/>
   10171       <param name="typeArguments" type="java.lang.reflect.Type[]"/>
   10172       <doc>
   10173       <![CDATA[Returns a new parameterized type, applying {@code typeArguments} to
   10174  {@code rawType} and enclosed by {@code ownerType}.
   10175 
   10176  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10177       </doc>
   10178     </method>
   10179     <method name="arrayOf" return="java.lang.reflect.GenericArrayType"
   10180       abstract="false" native="false" synchronized="false"
   10181       static="true" final="false" visibility="public"
   10182       deprecated="not deprecated">
   10183       <param name="componentType" type="java.lang.reflect.Type"/>
   10184       <doc>
   10185       <![CDATA[Returns an array type whose elements are all instances of
   10186  {@code componentType}.
   10187 
   10188  @return a {@link java.io.Serializable serializable} generic array type.]]>
   10189       </doc>
   10190     </method>
   10191     <method name="subtypeOf" return="java.lang.reflect.WildcardType"
   10192       abstract="false" native="false" synchronized="false"
   10193       static="true" final="false" visibility="public"
   10194       deprecated="not deprecated">
   10195       <param name="bound" type="java.lang.reflect.Type"/>
   10196       <doc>
   10197       <![CDATA[Returns a type that represents an unknown type that extends {@code bound}.
   10198  For example, if {@code bound} is {@code CharSequence.class}, this returns
   10199  {@code ? extends CharSequence}. If {@code bound} is {@code Object.class},
   10200  this returns {@code ?}, which is shorthand for {@code ? extends Object}.]]>
   10201       </doc>
   10202     </method>
   10203     <method name="supertypeOf" return="java.lang.reflect.WildcardType"
   10204       abstract="false" native="false" synchronized="false"
   10205       static="true" final="false" visibility="public"
   10206       deprecated="not deprecated">
   10207       <param name="bound" type="java.lang.reflect.Type"/>
   10208       <doc>
   10209       <![CDATA[Returns a type that represents an unknown supertype of {@code bound}. For
   10210  example, if {@code bound} is {@code String.class}, this returns {@code ?
   10211  super String}.]]>
   10212       </doc>
   10213     </method>
   10214     <method name="listOf" return="java.lang.reflect.ParameterizedType"
   10215       abstract="false" native="false" synchronized="false"
   10216       static="true" final="false" visibility="public"
   10217       deprecated="not deprecated">
   10218       <param name="elementType" type="java.lang.reflect.Type"/>
   10219       <doc>
   10220       <![CDATA[Returns a type modelling a {@link List} whose elements are of type
   10221  {@code elementType}.
   10222 
   10223  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10224       </doc>
   10225     </method>
   10226     <method name="setOf" return="java.lang.reflect.ParameterizedType"
   10227       abstract="false" native="false" synchronized="false"
   10228       static="true" final="false" visibility="public"
   10229       deprecated="not deprecated">
   10230       <param name="elementType" type="java.lang.reflect.Type"/>
   10231       <doc>
   10232       <![CDATA[Returns a type modelling a {@link Set} whose elements are of type
   10233  {@code elementType}.
   10234 
   10235  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10236       </doc>
   10237     </method>
   10238     <method name="mapOf" return="java.lang.reflect.ParameterizedType"
   10239       abstract="false" native="false" synchronized="false"
   10240       static="true" final="false" visibility="public"
   10241       deprecated="not deprecated">
   10242       <param name="keyType" type="java.lang.reflect.Type"/>
   10243       <param name="valueType" type="java.lang.reflect.Type"/>
   10244       <doc>
   10245       <![CDATA[Returns a type modelling a {@link Map} whose keys are of type
   10246  {@code keyType} and whose values are of type {@code valueType}.
   10247 
   10248  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10249       </doc>
   10250     </method>
   10251     <method name="providerOf" return="java.lang.reflect.ParameterizedType"
   10252       abstract="false" native="false" synchronized="false"
   10253       static="true" final="false" visibility="public"
   10254       deprecated="not deprecated">
   10255       <param name="providedType" type="java.lang.reflect.Type"/>
   10256       <doc>
   10257       <![CDATA[Returns a type modelling a {@link Provider} that provides elements of type
   10258  {@code elementType}.
   10259 
   10260  @return a {@link java.io.Serializable serializable} parameterized type.]]>
   10261       </doc>
   10262     </method>
   10263     <doc>
   10264     <![CDATA[Static methods for working with types.
   10265 
   10266  @author crazybob (a] google.com (Bob Lee)
   10267  @since 2.0]]>
   10268     </doc>
   10269   </class>
   10270   <!-- end class com.google.inject.util.Types -->
   10271 </package>
   10272 
   10273 </api>
   10274