Currently, there are 7 parsing and 6 serialisation method each with a subtle difference and check from the previous. However, fundamentally, there are only two types of chunk version BSONs that can possibly be generated:
The "legacy" format, which persists the version as fields within a BSON object (with the epoch being optional for chunk values, which have come from an upgrade that started at 2.2).
The "new" format, which is a BSONArray.
Under this ticket, we should ensure that there are only two variants of parse/serialise methods