El ejemplo de HtmlAgilityPack para cambiar enlaces no funciona. ¿Cómo logro esto?

El ejemplo deCodeplex Es esto :

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");

El primer problema es HtmlDocument.DocumentElement ¡no existe! Lo que existe es HtmlDocument.DocumentNode pero incluso cuando uso eso, no puedo acceder al atributo href como se describe. Obtuve el siguiente error:

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

Aquí está el código que estoy tratando de compilar cuando recibo este error:

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

ACTUALIZAR: Acabo de descubrir que el ejemplo nunca fue pensado para funcionar ... Y tengo una solución después de leer el código de ejemplo ... Publicaré mi solución para que otras personas como yo la disfruten una vez que la completen.

Respuestas a la pregunta(1)

Su respuesta a la pregunta