It seems like the duplicated fields are ordered differently when producing the interface and the bytecode. module type B above is quite silly, but the same thing happens of course when the duplication comes from included modules, in which case it is not possible to simply erase one of the fields in the source, such as in the example below: