When a new object (Btree fragment) is created, and we switch to it, we don't modify the extent lists at all. So, if we allocate 10 blocks in object 0001, then for object 0002, we have recorded that we've used blocks 0-9, and if we allocate 10 more, we'll get 10-19. So when we write out object 0002, there are no conflicts, but blocks 0-9 will be empty.
There are lots of ways to fix this. No matter what we do, it seems unavoidable that we will alter the format that extents are stored. Another consideration is that we may want to keep the entire list of extents for the allocated list, at least. That is, object 0009 knows all blocks used in object 0009, but it also knows all blocks being used in object 0008, 0007 etc. That would help in garbage collection.