class ExposedBindingImpl<T> extends BindingImpl<T> implements ExposedBinding<T> {

    private final PrivateElements privateElements;

    public ExposedBindingImpl(Injector injector, Object source, Key<T> key,
                              InternalFactory<T> factory, PrivateElements privateElements) {
        super(injector, key, source, factory, Scoping.UNSCOPED);
        this.privateElements = privateElements;
    }

    public ExposedBindingImpl(Object source, Key<T> key, Scoping scoping,
                              PrivateElements privateElements) {
        super(source, key, scoping);
        this.privateElements = privateElements;
    }

    @Override
    public <V> V acceptTargetVisitor(BindingTargetVisitor<? super T, V> visitor) {
        return visitor.visit(this);
    }

    @Override
    public Set<Dependency<?>> getDependencies() {
        return singleton(Dependency.get(Key.get(Injector.class)));
    }

    @Override
    public PrivateElements getPrivateElements() {
        return privateElements;
    }

    @Override
    public BindingImpl<T> withScoping(Scoping scoping) {
        return new ExposedBindingImpl<>(getSource(), getKey(), scoping, privateElements);
    }

    @Override
    public ExposedBindingImpl<T> withKey(Key<T> key) {
        return new ExposedBindingImpl<>(getSource(), key, getScoping(), privateElements);
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}

    @Override
    public void applyTo(Binder binder) {
        throw new UnsupportedOperationException("This element represents a synthetic binding.");
    }
}

        return new ToStringBuilder(ExposedBinding.class)
                .add("key", getKey())
                .add("source", getSource())
                .add("privateElements", privateElements)
                .toString();
    
<methods>public void <init>(org.elasticsearch.common.inject.Injector, Key<T>, java.lang.Object, InternalFactory<? extends T>, org.elasticsearch.common.inject.internal.Scoping) ,public V acceptScopingVisitor(BindingScopingVisitor<V>) ,public V acceptVisitor(ElementVisitor<V>) ,public org.elasticsearch.common.inject.Injector getInjector() ,public InternalFactory<? extends T> getInternalFactory() ,public Key<T> getKey() ,public Provider<T> getProvider() ,public org.elasticsearch.common.inject.internal.Scoping getScoping() ,public java.lang.Object getSource() ,public boolean isConstant() ,public java.lang.String toString() <variables>private final non-sealed org.elasticsearch.common.inject.Injector injector,private final non-sealed InternalFactory<? extends T> internalFactory,private final non-sealed Key<T> key,private volatile Provider<T> provider,private final non-sealed org.elasticsearch.common.inject.internal.Scoping scoping,private final non-sealed java.lang.Object source