@Override public IndexedBinding visit(ExposedBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.EXPOSED, scope(binding), binding); }
@Override public IndexedBinding visit(UntargettedBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.UNTARGETTED, scope(binding), null); }
@Override public IndexedBinding visit(ProviderKeyBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.PROVIDER_KEY, scope(binding), binding.getProviderKey()); }
@Override public IndexedBinding visit(ConstructorBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.CONSTRUCTOR, scope(binding), binding.getConstructor()); }
@Override public IndexedBinding visit(ProviderInstanceBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.PROVIDER_INSTANCE, scope(binding), binding.getUserSuppliedProvider()); }
@Override public IndexedBinding visit(InstanceBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.INSTANCE, scope(binding), binding.getInstance()); }
@Override public IndexedBinding visit( ConvertedConstantBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.CONSTANT, scope(binding), binding.getValue()); }
@Override public IndexedBinding visit(ProviderBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.PROVIDED_BY, scope(binding), injector.getBinding(binding.getProvidedKey())); }
@Override public IndexedBinding visit(LinkedKeyBinding<? extends Object> binding) { return new IndexedBinding(binding, BindingType.LINKED_KEY, scope(binding), binding.getLinkedKey()); }