public interface ProviderWithExtensionVisitor<T> extends Provider<T>
When an extension binds a provider instance, the provider can implement this interface to
 allow users using the Binding.acceptTargetVisitor(BindingTargetVisitor) method to visit a
 custom visitor designed for that extension. A typical implementation within the extension would
 look like
 
 <V, B> V acceptExtensionVisitor(BindingTargetVisitor<B, V> visitor, ProviderInstanceBinding<? extends B> binding) {
   if(visitor instanceof MyCustomExtensionVisitor) {
     return ((MyCustomExtensionVisitor<B, V>)visitor).visitCustomExtension(customProperties, binding);
   } else {
     return visitor.visit(binding);
   }
 }
 'MyCustomExtensionVisitor' in the example above would be an interface the extension provides that
 users can implement in order to be notified of custom extension information. These visitor
 interfaces must extend from BindingTargetVisitor.| Modifier and Type | Method and Description | 
|---|---|
| <B,V> V | acceptExtensionVisitor(BindingTargetVisitor<B,V> visitor,
                      ProviderInstanceBinding<? extends B> binding)Instructs the extension determine if the visitor is an instance of a custom extension visitor,
 and if so, visit it using that method. | 
<B,V> V acceptExtensionVisitor(BindingTargetVisitor<B,V> visitor, ProviderInstanceBinding<? extends B> binding)
Due to issues with generics, the type parameters of this method do not relate to the type of the provider. In practice, the 'B' type will always be a supertype of 'T'.
Copyright © 2006–2018 Google, Inc.. All rights reserved.