protected override async Task BootstrapProcessAsync(TagHelperContext context, TagHelperOutput output) {
     output.TagName = "nav";
     output.PreContent.AppendHtml(Size == SimpleSize.Default
                                      ? "<ul class=\"pagination\">"
                                      : $"<ul class=\"pagination pagination-{Size.GetDescription()}\">");
     ChildDetectionMode = true;
     context.SetPaginationContext(this);
     await output.GetChildContentAsync(true);
     ChildDetectionMode = false;
     if (!DisableAutoActive && Items.TrueForAll(pI => !pI.Active)) {
         PaginationItemTagHelper activeItem = Items.FirstOrDefault(ItemHasCurrentUrl);
         if (activeItem != null)
             activeItem.Active = true;
     }
     for (var i = 0; i < Items.Count; i++)
         if (string.IsNullOrEmpty(Items[i].Content))
             Items[i].Content = (i + 1).ToString();
     if (Items.Any(pI => pI.Active)) {
         if (PrevHref == null)
             PrevHref = Items.TakeWhile(pI => !pI.Active).LastOrDefault(pI => !pI.Disabled)?.Href;
         if (NextHref == null)
             NextHref = Items.SkipWhile(pI => !pI.Active).Skip(1).FirstOrDefault(pI => !pI.Disabled)?.Href;
     }
     DisableNext = NextHref == null || DisableNext.HasValue && DisableNext.Value == false;
     DisablePrev = PrevHref == null || DisablePrev.HasValue && DisablePrev.Value == false;
     output.PreContent.AppendHtml(
                                  PaginationItemTagHelper.RenderItemTag(
                                                                        "<span aria-hidden=\"true\">&laquo;</span>",
                                                                        PrevHref, DisablePrev.Value, false,
                                                                        PrevText ?? Ressources.Previous));
     output.PostContent.AppendHtml(
                                   PaginationItemTagHelper.RenderItemTag(
                                                                         "<span aria-hidden=\"true\">&raquo;</span>",
                                                                         NextHref, DisableNext.Value, false,
                                                                         NextText ?? Ressources.Next));
     if (MaxDisplayedItems > 0 && Items.Count > MaxDisplayedItems)
         if (Items.Any(pI => pI.Active)) {
             MaxDisplayedItems--;
             List<PaginationItemTagHelper> itemsBeforeActive =
                 Items.TakeWhile(pI => !pI.Active).Reverse().ToList();
             List<PaginationItemTagHelper> itemsAfterActive = Items.SkipWhile(pI => !pI.Active).Skip(1).ToList();
             var itemsCountBeforeActive = (int) Math.Floor((decimal) MaxDisplayedItems/2);
             var itemsCountAfterActive = (int) Math.Ceiling((decimal) MaxDisplayedItems/2);
             if (itemsCountAfterActive > itemsAfterActive.Count)
                 itemsCountBeforeActive += itemsCountAfterActive - itemsAfterActive.Count;
             else if (itemsCountBeforeActive > itemsBeforeActive.Count)
                 itemsCountAfterActive += itemsCountBeforeActive - itemsBeforeActive.Count;
             foreach (PaginationItemTagHelper item in itemsBeforeActive.Skip(itemsCountBeforeActive))
                 item.RenderOutput = false;
             foreach (PaginationItemTagHelper item in itemsAfterActive.Skip(itemsCountAfterActive))
                 item.RenderOutput = false;
         }
         else
             foreach (PaginationItemTagHelper item in Items.Skip(MaxDisplayedItems))
                 item.RenderOutput = false;
     foreach (PaginationItemTagHelper item in Items.Where(pI => pI.RenderOutput))
         output.Content.AppendHtml(PaginationItemTagHelper.RenderItemTag(item));
 }