class Dependencies extends DependencyResolver.Adapter implements DependencySatisfier {

    @Override
    public <T> T resolveDependency( Class<T> type, SelectionStrategy selector )
    {
        RichIterable options = typeDependencies.get( type );
        if ( options.notEmpty() )
        {
            return selector.select( type, (Iterable<T>) options );
        }

        // Try parent
        if ( parent != null )
        {
            return parent.resolveDependency( type, selector );
        }

        // Out of options
        throw new UnsatisfiedDependencyException( type );
    }

    public  Dependencies();
    public  Dependencies( DependencyResolver parent );

}