I was wondering if someone could explain why we have mixed objects in PyOP2. Looking at DatPack and MixedDatPack it is clear that during code generation mixed objects are handled quite differently to non-mixed ones. Could someone explain what is going on here and, more importantly, why?