Exemplo de HtmlAgilityPack para alterar links não funciona. Como faço isso?

O exemplo emcodeplex é isto :

HtmlDocument doc = new HtmlDocument();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
 {
    HtmlAttribute att = link["href"];
    att.Value = FixLink(att);
 }
 doc.Save("file.htm");

O primeiro problema é o HtmlDocument.DocumentElement não existe! O que existe é o HtmlDocument.DocumentNode mas mesmo quando eu uso isso, não consigo acessar o atributo href conforme descrito. Estou tendo o erro a seguir:

Cannot apply indexing with [] to an expression of type 'HtmlAgilityPack.HtmlNode'

Aqui está o código que estou tentando compilar quando recebo este erro:

private static void ChangeUrls(ref HtmlDocument doc)
{
    foreach(HtmlNode link in doc.DocumentNode.SelectNodes("//@href"))
    {
        HtmlAttribute attr = link["href"];
        attr.Value = Rewriter(attr.Value);
    }
}

ATUALIZAR: Acabei de descobrir que o exemplo nunca foi concebido para funcionar ... E eu tenho uma solução depois de ler o código de exemplo ... Vou postar a minha solução para outras pessoas como eu para desfrutar uma vez concluído.

questionAnswers(1)

yourAnswerToTheQuestion