/// <summary>
        /// Initializes a new instance of the <see cref="Endpoints"/> class.
        /// </summary>
        /// <param name="serviceTypes">Instances of <see cref="IRepresentServiceType"/>.</param>
        /// <param name="configuration"><see cref="EndpointsConfiguration"/> for all endpoints.</param>
        /// <param name="typeFinder"><see cref="ITypeFinder"/> for finding services to host.</param>
        /// <param name="container"><see cref="IContainer"/> for working with instances of host binders.</param>
        /// <param name="boundServices"><see cref="IBoundServices"/> for registering services that gets bound.</param>
        /// <param name="logger"><see cref="ILogger"/> for logging.</param>
        public Endpoints(
            IInstancesOf <IRepresentServiceType> serviceTypes,
            EndpointsConfiguration configuration,
            ITypeFinder typeFinder,
            IContainer container,
            IBoundServices boundServices,
            ILogger logger)
        {
            _configuration = configuration;

            _serviceRepresentersForEndpointVisibility = serviceTypes.GroupBy(_ => _.Visibility)
                                                        .ToDictionary(_ => _.Key, _ => _.ToList());

            _typeFinder    = typeFinder;
            _container     = container;
            _logger        = logger;
            _boundServices = boundServices;
        }