Since this is called after writeIdx() executes the initialEntryCount can't be relied upon to cut the list at the proper point.  Its been sorted inside of writeIdx() which means this position is now bogus and has no relationship with what the user actually sent.

Unfortunately you'll have to have the caller set a flag whether or not they need this data, and if they do, grab it before we get as far as writeIdx() being invoked.  That makes my remarks in ReceivePack even more complex, because I think you may need to add a flag method to ReceivePack to let the ReceivePack caller tell us if they need this collection or not, so IndexPack can do the bookkeeping if they do.