/// <summary>
        /// Конструктор по умолчанию
        /// </summary>
        /// <param name="configurationProvider">Провайдер конфигурации системы</param>
        public ProjectBranchInfoProvider(ConfigurationHolder configuration)
        {
            ProjectLabels = new HashSet <string>(
                configuration.Array("Projects", "Labels")
                .Select(x => x.ToLower()));

            NameSplitters = configuration.CharArray("Projects", "Splitters");
            PadChar       = configuration.Char("Projects", "PadChar");
            PadWidth      = configuration.Int("Projects", "PadWidth");
        }
        /// <summary>
        /// Конктруктор по умолчанию для типа <see cref="BranchInfoProvider"/>
        /// </summary>
        /// <param name="configuration">Конфигурация системы</param>
        /// <param name="mergeRequsts">Клиент запросов на слияние в системе GitLab</param>
        /// <param name="branchInfoProvider">Провайдер информации о конкретной ветви</param>
        public BranchInfoProvider(
            ConfigurationHolder configuration,
            Holder <IMergeRequestClient> mergeRequsts,
            IBranchInfoProvider branchInfoProvider)
        {
            ValueGetter = () =>
            {
                var labels = new HashSet <string>(configuration.Array("GitLab", "PickedLabels"));

                var pickedMergeRequests = mergeRequsts.Value
                                          .AllInState(MergeRequestState.opened)
                                          .Where(x => x.Labels.Any(labels.Contains));

                var branches = pickedMergeRequests
                               .Select(x => branchInfoProvider
                                       .GetBranchInfo(x.SourceBranch)
                                       .SetTag(x.Labels))
                               .OrderBy(x => x.Id);

                return(branches.ToList());
            };
        }