`start_obj` is a bit confusing. I had to read the code carefully to understand what exactly it meant. It could be better-named as something like `obj_is_empty`, because that's what it's really tracking.