public function exposed(): MapInterface
    {
        return $this->dependencies->reduce(
            new Map(Name::class, MapInterface::class),
            static function(Map $exposed, string $name, Dependency $dependency): Map {
                return $exposed->put(
                    $dependency->name(),
                    $dependency->exposed()
                );
            }
        );
    }
public function exposed(): MapInterface
    {
        return $this->dependencies->reduce(
            new Map(Name::class, MapInterface::class),
            static function(Map $exposed, string $name, Dependency $dependency): Map {
                return $exposed->put(
                    $dependency->name(),
                    $dependency->exposed()
                );
            }
        );
    }
public function exposed ( ) : MapInterface { return $ this -> dependencies -> reduce ( new Map ( Name :: class , MapInterface :: class ) , static function ( Map $ exposed , string $ name , Dependency $ dependency ) : Map { return $ exposed -> put ( $ dependency -> name ( ) , $ dependency -> exposed ( ) ) ; } ) ; }
Return the list of exposed services per dependency

@return MapInterface<Name, MapInterface<Name, Constructor>>
Return the list of exposed services per dependency