call order is not guaranteed on |

It can happen with some exotic compiler that shift will happen before merge, which causes unplayable game :)