I am following along in an ASP.NET MVC book. This is one of the unit tests:
    [TestMethod]
    public void Can_Generate_Page_Links()
    {
        // arrange
        HtmlHelper myHelper = null;
        PagingInfo pagingInfo = new PagingInfo
        {
            CurrentPage = 2,
            TotalItems = 28,
            ItemsPerPage = 10
        };
        Func<int, string> pageUrlDelegate = i => "Page" + i;
        // act 
        MvcHtmlString result = myHelper.PageLinks(pagingInfo, pageUrlDelegate);
        // assert
        Assert.AreEqual(result.ToString(), 
            @"<a href=""Page1"">1</a>" + 
            @"<a href=""Page2"">2</a>" +
            @"<a href=""Page3"">3</a>"
        );
    }
Notice how myHelper is set to null and then used? The only code that does anything to HtmlHelper is this extension method:
    public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl)
    {
        StringBuilder result = new StringBuilder();
        for (int i = 1; i <= pagingInfo.TotalPages; i++)
        {
            TagBuilder tag = new TagBuilder("a");
            tag.MergeAttribute("href", pageUrl(i));
            tag.InnerHtml = i.ToString();
            if (i == pagingInfo.CurrentPage)
                tag.AddCssClass("selected");
            result.Append(tag.ToString());
        }
        return MvcHtmlString.Create(result.ToString());
    }
Does the extension method have something to do with allowing us to use an object that was set to null? If not, what is happening here?