Fixing Java Memory Model