> the two create a happens-before relationship between the get and set calls, meaning that all writes on the PC thread are now visible in the calling thread

This is true for the PC Thread. But how does this relate to the UI Thread? AFAICT, there is no *happens-before* relationship between the PC Thread and the UI Thread in the specific case, hence the up-to-date reference to ``sym`` may not be visible to the UI Thread.

Maybe it's easier to sit down together on this one :)