This was done already for AbstractBsonReader by separating, e.g. readBoolean and doReadBoolean, which is pure abstract