I wonder whether you might be able to simplify the logic here (and in other places where you pass null around) with the [null object pattern](http://en.wikipedia.org/wiki/Null_Object_pattern), eg have a `NullRow`, `NullCell`?