Guidelines
VNA00-J. Ensure visibility when accessing shared primitive variables
VNA01-J. Ensure visibility of shared references to immutable objects
VNA02-J. Ensure that compound operations on shared variables are atomic
VNA03-J. Do not assume that a group of calls to independently atomic methods is atomic
VNA04-J. Ensure that calls to chained methods are atomic
VNA05-J. Ensure atomicity when reading and writing 64-bit values