A couple questions here:

1.  So we're saying that the header row can only be one row?
2.  And that row must be row 0 in the sheet?

Seems rigid to me.  Also, what if a Sheet doesn't have a header, this means that every Sheet's first row is a header, correct?

Finally, since this is called to map *every row*, I'd recommend doing this once within a sheet (it's not going to change, correct) instead of actually querying the underlying sheet each time a row is mapped.