public static Task ApplyIncludes(this ConfigDocument doc, IIncludesProvider includeProvider)
        {
            if (doc == null)
            {
                throw new ArgumentNullException(nameof(doc));
            }
            if (includeProvider == null)
            {
                throw new ArgumentNullException(nameof(includeProvider));
            }

            return(ResolveIncludes(doc, 0, includeProvider));
        }
        static async Task ResolveIncludes(ConfigDocument confDoc, int deepCount, IIncludesProvider includeProvider)
        {
            if (deepCount >= 2)
            {
                return;
            }

            foreach (var include in confDoc.GetIncludes())
            {
                var includeContent = await includeProvider.GetInclude(include.Link);

                await ResolveIncludes(includeContent, deepCount + 1, includeProvider);

                include.Resolve(includeContent);
            }
        }