anchor.diff:  bind(Calculator.class)
       .toProvider(CalculatorProvider.class);
   ----
  +
  +Consumers of this binding will use the following form
  +
  +[source,java,options="nowrap"]
  +----
  +@Inject private Calculator calculator;
  +----
  +
  +== Additional Settings
  +
  +All bindings (with one particular exception) accept the following additional settings
  +
  +.withClassifierType
  +
  +This method is used to define an additional annotation type that's been marked as a `@Qualifier` (such as `@javax.inject.Named`)
  +that should go along with the declared binding. Any qualifiers found in the _target_ type (or `Provider`) will be overridden
  +by this setting.
  +
  +.withClassifier
  +
  +Similar to the previous setting, this one allows you to supply an annotation instance, enabling the setting of a custom
  +annotation property, such as the `value` of `@javax.inject.Named`. Here's an excerpt of the default bindings provided
  +by the Griffon runtime
  +
  +[source,java,options="nowrap"]
  +----
  +bind(Context.class)
  +    .withClassifier(griffon.util.AnnotationUtils.named("applicationContext"))
  +    .toProvider(DefaultContextProvider.class)
  +    .asSingleton();
  +----
  +
  +Any qualifiers found in the _target_ (or `Provider`) will be overridden by this setting.
  +
  +.asSingleton
  +
  +If left out the binding will be placed in `prototype` scope. The only binding that does not conform to this rule is *InstanceBinding*,
  +as it will be automatically placed in `singleton` scope.
  +
  +== Binding Equivalencies
  +
  +Any binding can be overridden by an equivalent binding. The following table describes the equivalencies between bindings
  +
  +[cols="a,a",options="header"]
  +|===
  +
  +| Binding
  +| Equivalence
  +
  +|
  +[source,java,options="nowrap"]
  +----
  +bind(Calculator.class)
  +    .to(GroovyShellCalculator.class);
  +----
  +|
  +[source,java,options="nowrap"]
  +----
  +bind(Calculator.class)
  +    .toProvider(GroovyShellCalculatorProvider.class);
  +----
  +
  +|
  +[source,java,options="nowrap"]
  +----
  +bind(Calculator.class)
  +    .to(GroovyShellCalculator.class);
  +----
  +|
  +[source,java,options="nowrap"]
  +----
  +bind(Calculator.class)
  +    .toProvider(new GroovyShellCalculatorProvider());
  +----
  +
  +|
  +[source,java,options="nowrap"]
  +----
  +bind(Calculator.class)
  +    .toProvider(GroovyShellCalculatorProvider.class);
  +----
  +|
  +[source,java,options="nowrap"]
  +----
  +bind(Calculator.class)
  +    .toProvider(new GroovyShellCalculatorProvider());
  +----
  +
  +|===
  +
  +NOTE: Equivalent bindings must match qualifiers too.
   
   == The Guice Injector
   
  
positive.code:     .to(GroovyShellCalculator.class);
  ----
  
  [[_overview_provider_binding]]
  === Provider Binding
  
  
negative.code:     .toProvider(new CalculatorProvider());
  ----
  
  Consumers of this binding will use the following form
  
  [source,java,options="nowrap"]
  ----
  @Inject private Calculator calculator;
  ----
  
  [[_overview_provider_type_binding]]
  === Provider Type Binding
  
  