In this case, the work before the super call is validating the args and the constructor which consumes the args must have them in the same order as KEY_FIELDS; so, it's the responsibility of the class setting KEY_FIELDS to pass the args in the right order. I added comments to this effect.