1. "Write Rule" Suppose a thread T creates a new object O, and subsequently assigns to some variable V the value R representing the reference to O. Let A be T's first store action of R into V. Let B be any assign action by T prior to A on any variable F other than V. Then a store action by T on F must intervene between B and A; moreover, the write action corresponding to that store must precede the write action corresponding to A. (Less formally: all assign actions by a constructing thread that occur prior to the thread's storage of the new reference must be written to main memory before the new reference itself.) 2. "Read Rule" Let action A be the first load by thread T that returns a reference to an object O, and let action P be the corresponding read by the main memory. Let action B be a load by thread T on a variable F that represents some field or element of O, and let action Q be the corresponding read by the main memory on variable F. Then P must precede Q. (Less formally: the fields of an object seen by a thread must be read from main memory after the reference itself.)