This is pretty much what I was expecting. A few comments:
Step 1: Warnings
A dynamic warning, initially only activated by opt-in, when someone attempts to synchronize on an instance of a wrapper class. There's a changeset in review now for 16.
- Where necessary (depending on the operations being performed), the compiler generates conversions between 'I' and 'java/lang/Integer$val'. 'I' is preferred wherever possible.
We have to use QInteger$val whenever we use int as a type parameter, the rest of the time, we can use I.
Library changes: - The constructors are removed, replaced with private constructors.
This can happen earlier if we want; we can just remove them (after suitable DFR.) There are factories.