private void BuildPageLinks(WikiPage page)
        {
            //this.Log.Write("Construction liens page {0}", page.FullName);

            this.currentPageLink = new PageLink(page);

            if (this.Redirections.ContainsKey(this.currentPageLink))
            {
                // Cette page est une redirection, on l'ignore
                this.Log.Info("Construction liens page {0} ignorée, redirection", page.FullName);
                return;
            }

            this.currentPage = page;

            var pageContent = page.GetContent();

            if (pageContent == null)
            {
                this.Log.Info("Construction liens page {0} ignorée, vide", page.FullName);
                return;
            }

            var formatter = new Formatter();
            var formatted = string.Empty;
            try
            {
                formatted = page.FormatWithPhase1And2(formatter);
            }
            catch (Exception ex)
            {
                this.Log.Error("Erreur durant la mise en forme de la page {0}, extraction annulée. Détail : {1}", page.FullName, ex);
            }

            // We create a list with all links in this page
            var pageLinks = new List<PageLink>(page.Links.Length);
            foreach (var link in page.Links)
            {
                // We create a PageLink for this link
                string linkNS, linkName;
                NameTools.ExpandFullName(link, out linkNS, out linkName);

                if (!this.trackCrossNamespaceLinks && linkNS != this.currentPageLink.Namespace)
                {
                    // Link with another namespace, we do not track them
                    continue;
                }

                int index = linkName.IndexOf('#');
                if (index > -1)
                {
                    linkName = linkName.Substring(0, index);
                }

                var pageLink = new PageLink(linkNS, linkName, null);

                // Pas sur que cela ait un intérêt : les liens dans la page envoient toujours vers la page qui n'existe plus, donc
                // peu d'intérêt de modifier les liens dans les métadonnées de la page.
                // Il faudrait peut-être à terme générer aussi les pages de redirection sous forme de fichiers, afin de permettre de les reconstruire ensuite.
                //// We eventually replace the link with the real redirected page
                ////PageLink redirectedLink;
                ////if (this.Redirections.TryGetValue(pageLink, out redirectedLink))
                ////{
                ////    pageLink = new PageLink(redirectedLink.Namespace, redirectedLink.Name, redirectedLink.Anchor);
                ////}

                ////if (!pageLinks.Contains(pageLink))
                ////{
                ////    pageLinks.Add(pageLink);
                ////}
                pageLinks.Add(pageLink);

                PageLinkStatus linkStatus;

                if (!this.PageLinks.TryGetValue(pageLink, out linkStatus))
                {
                    // The linked page is not yet registered (existing or not),
                    // we create then register it
                    var linkedPage = this.FindPage(pageLink.FullName);
                    linkStatus = new PageLinkStatus(pageLink, linkedPage);
                    this.PageLinks.Add(pageLink, linkStatus);
                }

                // We add this page as an incoming link
                linkStatus.EnteringLinks.Add(this.currentPageLink);
            }

            // We check the current page status
            PageLinkStatus pageStatus;
            if (!this.PageLinks.TryGetValue(this.currentPageLink, out pageStatus))
            {
                // This page is not yet registered (not yet linked),
                // we create then register it
                var linkedPage = this.FindPage(this.currentPageLink.FullName);
                pageStatus = new PageLinkStatus(this.currentPageLink, linkedPage);
                this.PageLinks.Add(this.currentPageLink, pageStatus);
            }

            // The page now exists
            pageStatus.Exists = true;

            // We set all outgoing links
            pageStatus.Links = pageLinks;
        }