why do you need to keep track of whether you have binary fields or geopoint fields?  Don't you just have to check if `fieldTypeHeader` is non-empty?