changeset 224:d0c6cd011ea0

Chapters 0.a and 0.b: auto-generated tests.
author shade
date Fri, 06 May 2016 14:10:34 +0300
parents bda9fbee58c8
children e7bdce583a72
files ROADMAP jcstress-core/pom.xml jcstress-test-gen/pom.xml jcstress-test-gen/src/main/java/org/openjdk/jcstress/Spp.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/Values.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/chapters/Chapter0aTestGenerator.java jcstress-test-gen/src/main/resources/chapter0a/X-ArrayAtomicityTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-ArrayDefaultValuesTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-ArrayInitTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-ArrayLargeAtomicityTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-ArrayLargeDefaultValuesTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-ArrayLargeInitTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-ArrayLargeTearingTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-ArrayTearingTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-FieldAtomicityTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-FieldDefaultValuesTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-FieldInitTest.java.template jcstress-test-gen/src/main/resources/chapter0a/X-FieldTearingTest.java.template pom.xml tests-all/pom.xml tests-all/src/main/resources/LICENSE tests-all/src/main/resources/THIRD_PARTY_README tests-chapter-0a/LICENSE tests-chapter-0a/THIRD_PARTY_README tests-chapter-0a/pom.xml tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/fields/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/large/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/arrays/small/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/finals/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/finals/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/finals/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/finals/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/finals/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/finals/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/finals/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/finals/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/finals/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/init/fields/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/large/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/arrays/small/volatiles/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/plain/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/plain/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/plain/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/plain/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/plain/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/plain/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/plain/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/plain/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/plain/StringTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/volatiles/BooleanTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/volatiles/ByteTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/volatiles/CharTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/volatiles/DoubleTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/volatiles/FloatTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/volatiles/IntTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/volatiles/LongTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/volatiles/ShortTest.java tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/tearing/fields/volatiles/StringTest.java tests-chapter-0b/LICENSE tests-chapter-0b/THIRD_PARTY_README tests-chapter-0b/pom.xml tests-chapter-0b/src/main/java/Test.java tests-chapter-0b/src/main/resources/LICENSE tests-chapter-0b/src/main/resources/THIRD_PARTY_README tests-custom/pom.xml tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/ByteAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/CharAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/DoubleAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/FloatAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/IntAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/LongAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/ShortAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/VolatileByteAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/VolatileCharAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/VolatileDoubleAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/VolatileFloatAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/VolatileIntAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/VolatileLongAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/atomicity/primitives/plain/VolatileShortAtomicityTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/plain/BooleanArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/plain/ByteArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/plain/CharArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/plain/DoubleArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/plain/FloatArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/plain/IntArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/plain/LongArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/plain/ObjectArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/plain/ShortArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/volatiles/BooleanArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/volatiles/ByteArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/volatiles/CharArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/volatiles/DoubleArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/volatiles/FloatArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/volatiles/IntArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/volatiles/LongArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/volatiles/ObjectArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/arrays/volatiles/ShortArrayInitTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/plain/BooleanFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/plain/ByteFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/plain/CharFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/plain/DoubleFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/plain/FloatFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/plain/IntFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/plain/LongFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/plain/ObjectFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/plain/ShortFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/volatiles/BooleanFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/volatiles/ByteFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/volatiles/CharFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/volatiles/DoubleFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/volatiles/FloatFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/volatiles/IntFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/volatiles/LongFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/volatiles/ObjectFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/objects/volatiles/ShortFieldsTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/BooleanFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/ByteFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/CharFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/DoubleFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/FloatFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/IntFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/LongFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/finals/ShortFinalTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/BooleanInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/ByteInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/CharInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/DoubleInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/FloatInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/IntInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/LongInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/instance/ShortInstanceInitializerTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/BooleanPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/BytePlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/CharPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/DoublePlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/FloatPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/IntPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/LongPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/plain/ShortPlainTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/BooleanVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/ByteVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/CharVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/DoubleVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/FloatVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/IntVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/LongVolatileTest.java tests-custom/src/main/java/org/openjdk/jcstress/tests/init/primitives/volatiles/ShortVolatileTest.java tests-custom/src/main/scratch/DoubleAtomicityTest.java tests-custom/src/main/scratch/LongAtomicityTest.java tests-generated/pom.xml tests-generated/src/main/java/Test.java
diffstat 343 files changed, 16697 insertions(+), 5601 deletions(-) [+]
line wrap: on
line diff
--- a/ROADMAP	Wed Oct 21 20:35:44 2015 +0300
+++ b/ROADMAP	Fri May 06 14:10:34 2016 +0300
@@ -1,8 +1,8 @@
 TESTS AND HARNESS ROADMAPS
 -----------------------------------------------------------------------
 
-We can separate the tests in the several tiers. Often, it does not make
-sense to move to the next major tier if there are bugs in the lower tiers.
+We can separate the tests in the several chapters. Often, it does not make
+sense to move to the next major chapters if there are bugs in the lower chapters.
 
 Legend:
  "----"    -- status is not applicable (the test group)
@@ -12,63 +12,29 @@
  "DONE"    -- all planned tests are done
  "PARTIAL" -- some of the tests are complete
 
-==== TIER 0.a: LANGUAGE FOUNDATION
+==== CHAPTER 0.a: LANGUAGE FOUNDATION: Basic properties
 
---------- primitives:
- ....       default values
----------   read/write atomicity
- DONE         plain ops
- DONE         volatile ops
- DONE         per-byte plain ops
- DONE         per-byte volatile ops
----------   reflective read/write atomicity
- ....         plain ops
- ....         volatile ops
- ....         per-byte plain ops
- ....         per-byte volatile ops
----------
---------- arrays:
- DONE       default values
----------   read/write atomicity
- DONE         plain ops
- DONE         per-byte plain ops
- ....         volatile ops
- ....         per-byte volatile ops
----------   reflective read/write atomicity
- ....         plain ops
- ....         per-byte plain ops
- ....         volatile ops
- ....         per-byte volatile ops
----------   word tearing
- ....         small arrays with plain ops
- ....         large arrays with plain ops
- ....         small arrays with volatile ops
- ....         large arrays with volatile ops
----------
---------- objects:
----------   initialization safety
- DONE         instance constructors
- DONE         instance initializers
- DONE         final fields
- DONE         volatile fields
- DONE         fenced constructions
----------   lazy initialization
- DONE         against plain fields
- DONE         against volatile fields
- DONE         against cached volatile fields
+Tests the very basic properties of Java Language:
+  a) access atomicity;
+  b) default values;
+  c) initialization safety;
+  d) word tearing
 
+This is done only on the basic language constructs: fields and arrays.
 
-==== TIER 0.b: LANGUAGE FOUNDATION: BASIC MEMORY EFFECTS
+Add:
+  - per-byte reads and writes, known to trip optimizers into doing multiple ops
+  - initialization with fences?
 
- (we need to greatly expand this)
+==== CHAPTER 0.b: LANGUAGE FOUNDATION: Basic memory effects
 
- volatiles:
-   acquire/release effects
-   non-volatile IRIW
-   volatile IRIW
- fences
+Tests the memory effects:
+  a) sequential consistency of synchronized actions;
+  b) happens-before effects;
 
-==== TIER 1.a: CORE LIBRARY FOUNDATIONS: ATOMICS
+Both are tested only on the basic language constructs: volatiles.
+
+==== CHAPTER 1.a: CORE LIBRARY FOUNDATIONS: ATOMICS
 
 --------- scalars:
 ---------   atomic/AtomicBoolean
@@ -161,7 +127,9 @@
  ....         memory effects across the ops
 
 
-==== TIER 1.b: CORE LIBRARY FOUNDATIONS: SYNCHRONIZERS
+==== CHAPTER 1.b: CORE LIBRARY FOUNDATIONS: VARHANDLES
+
+==== CHAPTER 1.c: CORE LIBRARY FOUNDATIONS: SYNCHRONIZERS
 
 Q: tons of methods, we should probably cover the "protected" only?
 Q: we can skip it and rely on testing the implementations on higher tiers?
@@ -171,7 +139,7 @@
 --------- locks/AbstractQueuedLongSynchronizer
  #####      TBD
 
-==== TIER 2.a: CORE LIBRARY: LOCKS
+==== CHAPTER 2.c: CORE LIBRARY: LOCKS
 
 --------- synchronized
  DONE       mutual exclusion
@@ -204,7 +172,7 @@
  ....       starvation avoidance
  ....       fairness
 
-==== TIER 2.b: CORE LIBRARY: AUXILIARY ATOMICS
+==== CHAPTER 2.d: CORE LIBRARY: AUXILIARY ATOMICS
 
 --------- atomic/DoubleAccumulator
  ....       racy updates
@@ -219,7 +187,7 @@
  ....       racy updates
  ....       racy resets
 
-==== TIER 2.c: CORE LIBRARY: USER SYNCHRONIZERS
+==== CHAPTER 2.e: CORE LIBRARY: USER SYNCHRONIZERS
 
 --------- CountDownLatch
  ....       initial state
@@ -243,7 +211,11 @@
 --------- FutureTask
  ####       TBD
 
-==== TIER 3.x: CORE LIBRARY: EXECUTORS
+==== CHAPTER 3.x: CORE LIBRARY: REFLECTION
+
+==== CHAPTER 3.x: CORE LIBRARY: BUFFERS
+
+==== CHAPTER 3.x: CORE LIBRARY: EXECUTORS
 
 --------- ScheduledThreadPoolExecutor
  ####       TBD
@@ -262,7 +234,7 @@
 --------- RecursiveTask
  ####       TBD
 
-==== TIER 3.x: CORE LIBRARY: CONCURRENT COLLECTIONS
+==== CHAPTER 3.x: CORE LIBRARY: CONCURRENT COLLECTIONS
 
 --------- ConcurrentHashMap
  ####       TBD
@@ -279,7 +251,7 @@
 --------- ReadMostlyVector
  ####       TBD
 
-==== TIER 3.x: CORE LIBRARY: QUEUES
+==== CHAPTER 3.x: CORE LIBRARY: QUEUES
 
 --------- ArrayBlockingQueue
  ####       TBD
@@ -300,12 +272,12 @@
 --------- DelayQueue
  ####       TBD
 
-==== TIER 4.x: OTHER
+==== CHAPTER 4.x: OTHER
 
 --------- ThreadLocalRandom
  ####       TBD
 
-==== TIER 5.x: OTHER LIBRARY
+==== CHAPTER 5.x: OTHER LIBRARY
 
 --------- java.nio.buffers
  ####       read/write atomicity tests
--- a/jcstress-core/pom.xml	Wed Oct 21 20:35:44 2015 +0300
+++ b/jcstress-core/pom.xml	Fri May 06 14:10:34 2016 +0300
@@ -27,12 +27,16 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.openjdk.jcstress</groupId>
+    <parent>
+        <groupId>org.openjdk.jcstress</groupId>
+        <artifactId>jcstress-parent</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
     <artifactId>jcstress-core</artifactId>
-    <version>1.0-SNAPSHOT</version>
     <packaging>jar</packaging>
 
-    <name>Java Concurrency Stress Tests: Harness Core</name>
+    <name>Harness Core</name>
     <url>http://maven.apache.org</url>
 
     <scm>
@@ -50,8 +54,6 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>2.4</version>
                 <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
                     <proc>none</proc>
                     <compilerArguments>
                         <Xlint:all/>
@@ -60,103 +62,20 @@
                 </configuration>
             </plugin>
             <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.7</version>
-                <executions>
-                    <execution>
-                        <id>add-source</id>
-                        <phase>generate-sources</phase>
-                        <goals>
-                            <goal>add-source</goal>
-                        </goals>
-                        <configuration>
-                            <sources>
-                                <source>${project.build.directory}/generated-sources/descriptions/</source>
-                            </sources>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
                 <groupId>com.mycila.maven-license-plugin</groupId>
                 <artifactId>maven-license-plugin</artifactId>
-                <version>1.10.b1</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>format</goal>
-                        </goals>
-                        <phase>process-sources</phase>
-                        <configuration>
-                            <header>file:///${project.basedir}/../src/license/gpl_cpe/header.txt</header>
-                            <skipExistingHeaders>true</skipExistingHeaders>
-                            <strictCheck>true</strictCheck>
-                            <basedir>${project.basedir}/src/main/</basedir>
-                            <mapping>
-                                <java>PHP</java>
-                            </mapping>
-                        </configuration>
-                    </execution>
-                </executions>
             </plugin>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>buildnumber-maven-plugin</artifactId>
-                <version>1.1</version>
-                <executions>
-                    <execution>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>create</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <doCheck>false</doCheck>
-                    <doUpdate>false</doUpdate>
-                    <shortRevisionLength>16</shortRevisionLength>
-                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
-                <version>2.4</version>
-                <configuration>
-                    <archive>
-                        <manifest>
-                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-                        </manifest>
-                        <manifestEntries>
-                            <Implementation-Build>${buildNumber}</Implementation-Build>
-                            <Build-Time>${maven.build.timestamp}</Build-Time>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
             </plugin>
-
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-enforcer-plugin</artifactId>
-                <version>1.2</version>
-                <executions>
-                    <execution>
-                        <id>enforce-versions</id>
-                        <goals>
-                            <goal>enforce</goal>
-                        </goals>
-                        <configuration>
-                            <rules>
-                                <requireMavenVersion>
-                                    <version>3.0</version>
-                                </requireMavenVersion>
-                                <requireJavaVersion>
-                                    <version>1.8</version>
-                                </requireJavaVersion>
-                            </rules>
-                        </configuration>
-                    </execution>
-                </executions>
             </plugin>
         </plugins>
 
--- a/jcstress-test-gen/pom.xml	Wed Oct 21 20:35:44 2015 +0300
+++ b/jcstress-test-gen/pom.xml	Fri May 06 14:10:34 2016 +0300
@@ -27,12 +27,16 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.openjdk.jcstress</groupId>
+    <parent>
+        <groupId>org.openjdk.jcstress</groupId>
+        <artifactId>jcstress-parent</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
     <artifactId>jcstress-test-gen</artifactId>
-    <version>1.0-SNAPSHOT</version>
     <packaging>jar</packaging>
 
-    <name>Java Concurrency Stress Tests: Tests Generator</name>
+    <name>Tests Generator</name>
     <url>http://maven.apache.org</url>
 
     <properties>
@@ -44,33 +48,10 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
-                <version>2.4</version>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
             </plugin>
             <plugin>
                 <groupId>com.mycila.maven-license-plugin</groupId>
                 <artifactId>maven-license-plugin</artifactId>
-                <version>1.10.b1</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>format</goal>
-                        </goals>
-                        <phase>process-sources</phase>
-                        <configuration>
-                            <header>file:///${project.basedir}/../src/license/gpl_cpe/header.txt</header>
-                            <skipExistingHeaders>true</skipExistingHeaders>
-                            <strictCheck>true</strictCheck>
-                            <basedir>${project.basedir}/src/main/</basedir>
-                            <mapping>
-                                <java>PHP</java>
-                            </mapping>
-                        </configuration>
-                    </execution>
-                </executions>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
@@ -109,30 +90,27 @@
                             </transformers>
                         </configuration>
                     </execution>
+                    <execution>
+                        <id>chapter0a-generator</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <finalName>chapter0a-generator</finalName>
+                            <transformers>
+                                <transformer
+                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <mainClass>org.openjdk.jcstress.chapters.Chapter0aTestGenerator</mainClass>
+                                </transformer>
+                            </transformers>
+                        </configuration>
+                    </execution>
                 </executions>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-enforcer-plugin</artifactId>
-                <version>1.2</version>
-                <executions>
-                    <execution>
-                        <id>enforce-versions</id>
-                        <goals>
-                            <goal>enforce</goal>
-                        </goals>
-                        <configuration>
-                            <rules>
-                                <requireMavenVersion>
-                                    <version>3.0</version>
-                                </requireMavenVersion>
-                                <requireJavaVersion>
-                                    <version>1.8</version>
-                                </requireJavaVersion>
-                            </rules>
-                        </configuration>
-                    </execution>
-                </executions>
             </plugin>
         </plugins>
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/java/org/openjdk/jcstress/Spp.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,156 @@
+/*
+ * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package org.openjdk.jcstress;
+
+import java.util.*;
+import java.util.regex.*;
+
+/*
+ * Spp: A simple regex-based stream preprocessor based on Mark Reinhold's
+ *      sed-based spp.sh
+ *
+ * Usage: java build.tools.spp.Spp [-be] [-nel] [-Kkey] -Dvar=value ... <in >out
+ *
+ * If -nel is declared then empty lines will not be substituted for lines of
+ * text in the template that do not appear in the output.
+ *
+ *   Meaningful only at beginning of line, works with any number of keys:
+ *
+ *    #if[key]              Includes text between #if/#end if -Kkey specified,
+ *    #else[key]            otherwise changes text to blank lines; key test
+ *    #end[key]             may be negated by prefixing !, e.g., #if[!key]
+ *
+ *    #begin                If -be is specified then lines up to and including
+ *    #end                  #begin, and from #end to EOF, are deleted
+ *
+ *    #warn                 Changed into warning that file is generated
+ *
+ *    // ##                 Changed into blank line
+ *
+ *  Meaningful anywhere in line
+ *
+ *    {#if[key]?yes}        Expands to yes if -Kkey specified
+ *    {#if[key]?yes:no}     Expands to yes if -Kkey, otherwise no
+ *    {#if[!key]?yes}       Expands to yes if -Kother
+ *    {#if[!key]?yes:no}    Expands to yes if -Kother, otherwise no
+ *    $var$                 Expands to value if -Dvar=value given
+ *
+ *    yes, no must not contain whitespace
+ *
+ * @author Xueming Shen
+ */
+
+public class Spp {
+
+    private static final String LNSEP = System.getProperty("line.separator");
+    private static final String KEY = "([a-zA-Z0-9]+)";
+    private static final String VAR = "([a-zA-Z0-9_\\-]+)";
+    private static final String TEXT = "([a-zA-Z0-9&;,.<>/#() \\?\\[\\]\\$]+)"; // $ -- hack embedded $var$
+
+    private static final int GN_NOT = 1;
+    private static final int GN_KEY = 2;
+    private static final int GN_YES = 3;
+    private static final int GN_NO = 5;
+    private static final int GN_VAR = 6;
+
+    private final Matcher ifkey = Pattern.compile("^#if\\[(!)?" + KEY + "\\]").matcher("");
+    private final Matcher elsekey = Pattern.compile("^#else\\[(!)?" + KEY + "\\]").matcher("");
+    private final Matcher endkey = Pattern.compile("^#end\\[(!)?" + KEY + "\\]").matcher("");
+    private final Matcher vardef = Pattern.compile("\\{#if\\[(!)?" + KEY + "\\]\\?" + TEXT + "(:" + TEXT + ")?\\}|\\$" + VAR + "\\$").matcher("");
+    private final Matcher vardef2 = Pattern.compile("\\$" + VAR + "\\$").matcher("");
+
+    void append(StringBuffer buf, String ln,
+                Set<String> keys, Map<String, String> vars) {
+        vardef.reset(ln);
+        while (vardef.find()) {
+            String repl;
+            if (vardef.group(GN_VAR) != null)
+                repl = vars.get(vardef.group(GN_VAR));
+            else {
+                boolean test = keys.contains(vardef.group(GN_KEY));
+                if (vardef.group(GN_NOT) != null)
+                    test = !test;
+                repl = test ? vardef.group(GN_YES) : vardef.group(GN_NO);
+                if (repl == null)
+                    repl = "";
+                else {  // embedded $var$
+                    while (vardef2.reset(repl).find()) {
+                        repl = vardef2.replaceFirst(vars.get(vardef2.group(1)));
+                    }
+                }
+            }
+            vardef.appendReplacement(buf, repl);
+        }
+        vardef.appendTail(buf);
+    }
+
+
+    public static String spp(String src, Set<String> keys, Map<String, String> vars) {
+        StringBuffer sb = new StringBuffer();
+        new Spp().spp(new Scanner(src), sb, "", keys, vars, false);
+        return sb.toString();
+    }
+
+    // return true if #end[key], #end or EOF reached
+    boolean spp(Scanner in, StringBuffer buf, String key,
+                Set<String> keys, Map<String, String> vars, boolean skip) {
+        while (in.hasNextLine()) {
+            String ln = in.nextLine();
+            if (ifkey.reset(ln).find()) {
+                String k = ifkey.group(GN_KEY);
+                boolean test = keys.contains(k);
+                if (ifkey.group(GN_NOT) != null)
+                    test = !test;
+                if (!spp(in, buf, k, keys, vars, skip || !test)) {
+                    spp(in, buf, k, keys, vars, skip || test);
+                }
+                continue;
+            }
+            if (elsekey.reset(ln).find()) {
+                if (!key.equals(elsekey.group(GN_KEY))) {
+                    throw new Error("Mismatched #if-else-end at line <" + ln + ">");
+                }
+                return false;
+            }
+            if (endkey.reset(ln).find()) {
+                if (!key.equals(endkey.group(GN_KEY))) {
+                    throw new Error("Mismatched #if-else-end at line <" + ln + ">");
+                }
+                return true;
+            }
+            if (ln.startsWith("#warn")) {
+                ln = "// -- This file was mechanically generated: Do not edit! -- //";
+            } else if (ln.trim().startsWith("// ##")) {
+                ln = "";
+            }
+            if (!skip) {
+                append(buf, ln, keys, vars);
+                buf.append(LNSEP);
+            }
+        }
+        return true;
+    }
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/java/org/openjdk/jcstress/Values.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class Values {
+
+    public static final Map<String, String> DEFAULTS;
+    public static final Map<String, String> DEFAULTS_LITERAL;
+    public static final Map<String, String> VALUES;
+    public static final Map<String, String> VALUES_LITERAL;
+
+    static {
+        DEFAULTS = new HashMap<>();
+        DEFAULTS.put("boolean", "false");
+        DEFAULTS.put("byte",    "0");
+        DEFAULTS.put("char",    "\0");
+        DEFAULTS.put("short",   "0");
+        DEFAULTS.put("int",     "0");
+        DEFAULTS.put("float",   String.valueOf(0F));
+        DEFAULTS.put("long",    "0");
+        DEFAULTS.put("double",  String.valueOf(0D));
+        DEFAULTS.put("String",  "null");
+
+        DEFAULTS_LITERAL = new HashMap<>();
+        DEFAULTS_LITERAL.put("boolean", "false");
+        DEFAULTS_LITERAL.put("byte",    "0");
+        DEFAULTS_LITERAL.put("char",    "'\0'");
+        DEFAULTS_LITERAL.put("short",   "0");
+        DEFAULTS_LITERAL.put("int",     "0");
+        DEFAULTS_LITERAL.put("float",   "0F");
+        DEFAULTS_LITERAL.put("long",    "0L");
+        DEFAULTS_LITERAL.put("double",  "0D");
+        DEFAULTS_LITERAL.put("String",  "null");
+
+        VALUES = new HashMap<>();
+        VALUES.put("boolean", "true");
+        VALUES.put("byte",    "-1");
+        VALUES.put("char",    "A");
+        VALUES.put("short",   "-1");
+        VALUES.put("int",     "-1");
+        VALUES.put("float",   "2.3509528E-38");
+        VALUES.put("long",    "-1");
+        VALUES.put("double",  "1.39067116124321E-309");
+        VALUES.put("String",  "object");
+
+        VALUES_LITERAL = new HashMap<>();
+        VALUES_LITERAL.put("boolean", "true");
+        VALUES_LITERAL.put("byte",    "(byte) -1");
+        VALUES_LITERAL.put("char",    "'A'");
+        VALUES_LITERAL.put("short",   "(short) -1");
+        VALUES_LITERAL.put("int",     "-1");
+        VALUES_LITERAL.put("float",   "2.3509528E-38F");
+        VALUES_LITERAL.put("long",    "-1L");
+        VALUES_LITERAL.put("double",  "1.39067116124321E-309");
+        VALUES_LITERAL.put("String",  "\"object\"");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/java/org/openjdk/jcstress/chapters/Chapter0aTestGenerator.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,204 @@
+/*
+ * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.chapters;
+
+import org.openjdk.jcstress.Spp;
+import org.openjdk.jcstress.Values;
+
+import java.io.*;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.*;
+
+public class Chapter0aTestGenerator {
+
+    public static final String PREFIX = "org.openjdk.jcstress.tests";
+    public static final String[] TYPES = new String[]{"byte", "boolean", "char", "short", "int", "float", "long", "double", "String"};
+
+    public static void main(String... args) throws IOException {
+        if (args.length < 1) {
+            throw new IllegalStateException("Need a destination argument");
+        }
+        String dest = args[0];
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-FieldAtomicityTest.java.template"),
+                "accessAtomic.fields",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-FieldDefaultValuesTest.java.template"),
+                "defaultValues.fields",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-FieldInitTest.java.template"),
+                "init.fields",
+                new String[]{ "", "volatile", "final" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-FieldTearingTest.java.template"),
+                "tearing.fields",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-ArrayDefaultValuesTest.java.template"),
+                "defaultValues.arrays.small",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-ArrayLargeDefaultValuesTest.java.template"),
+                "defaultValues.arrays.large",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-ArrayInitTest.java.template"),
+                "init.arrays.small",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-ArrayLargeInitTest.java.template"),
+                "init.arrays.large",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-ArrayAtomicityTest.java.template"),
+                "accessAtomic.arrays.small",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-ArrayLargeAtomicityTest.java.template"),
+                "accessAtomic.arrays.large",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-ArrayTearingTest.java.template"),
+                "tearing.arrays.small",
+                new String[]{ "", "volatile" }
+        );
+
+        makeTests(
+                dest,
+                readFromResource("/chapter0a/X-ArrayLargeTearingTest.java.template"),
+                "tearing.arrays.large",
+                new String[]{ "", "volatile" }
+        );
+    }
+
+    private static void makeTests(String dest, String template, String label, String[] modifiers) throws IOException {
+        for (String modifier : modifiers) {
+            String pack = PREFIX + "." + label + "." + (modifier.equals("") ? "plain" : modifier + "s");
+            for (String type : TYPES) {
+                String name = testName(type);
+                String res = Spp.spp(template,
+                        keys(modifier, type),
+                        vars(modifier, type, pack, name));
+
+                writeOut(dest, pack, name, res);
+            }
+        }
+    }
+
+    private static String upcaseFirst(String s) {
+        return Character.toUpperCase(s.charAt(0)) + s.substring(1);
+    }
+
+    private static Map<String, String> vars(String modifier, String type, String pack, String name) {
+        Map<String, String> map = new HashMap<>();
+        map.put("type", type);
+        map.put("TYPE", type.toUpperCase());
+        map.put("Type", upcaseFirst(type));
+        map.put("name", name);
+        map.put("default", Values.DEFAULTS.get(type));
+        map.put("defaultLiteral", Values.DEFAULTS_LITERAL.get(type));
+        map.put("set", Values.VALUES.get(type));
+        map.put("setLiteral", Values.VALUES_LITERAL.get(type));
+        map.put("modifier", (modifier.equals("") ? "" : modifier + " "));
+        map.put("package", pack);
+        return map;
+    }
+
+    private static Set<String> keys(String modifier, String type) {
+        Set<String> set = new HashSet<>();
+        set.add(type);
+        if (alwaysAtomic(modifier, type)) {
+            set.add("alwaysAtomic");
+        }
+        set.add(modifier);
+        return set;
+    }
+
+    private static boolean alwaysAtomic(String modifier, String type) {
+        return modifier.equals("volatile") || !(type.equals("double") || type.equals("long"));
+    }
+
+    private static String testName(String type) {
+        return upcaseFirst(type) + "Test";
+    }
+
+    private static void writeOut(String destination, String pkg, String name, String contents) throws IOException {
+        Path dir = Paths.get(destination, pkg.replaceAll("\\.", File.separator));
+        Path file = Paths.get(destination, pkg.replaceAll("\\.", File.separator), name + ".java");
+        Files.createDirectories(dir);
+        Files.write(file, Arrays.asList(contents), Charset.defaultCharset());
+    }
+
+    private static String readFromResource(String name) throws IOException {
+        InputStream is = Chapter0aTestGenerator.class.getResourceAsStream(name);
+        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
+
+        StringBuilder sb = new StringBuilder();
+        String l;
+        while ((l = reader.readLine()) != null) {
+            sb.append(l);
+            sb.append(System.lineSeparator());
+        }
+        return sb.toString();
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-ArrayAtomicityTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[$default$]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[$set$]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+#if[alwaysAtomic]
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+#else[alwaysAtomic]
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+#end[alwaysAtomic]
+@State
+public class $name$ {
+
+    $modifier$$type$[] a = new $type$[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = $setLiteral$;
+    }
+
+    @Actor
+    public void actor2($Type$Result1 r) {
+        r.r1 = a[0];
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-ArrayDefaultValuesTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[$default$, $default$, $default$, $default$]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class $name$ {
+
+    $modifier$$type$[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new $type$[4];
+    }
+
+    @Actor
+    public void actor2($Type$Result4 r) {
+        $type$[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = $defaultLiteral$;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-ArrayInitTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields initialization is visible via racy publication.
+ */
+@JCStressTest
+#if[!volatile]
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+#end[!volatile]
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@State
+public class $name$ {
+
+    $modifier$$type$[] arr;
+
+    @Actor
+    public void actor1() {
+        $type$[] a = new $type$[4];
+        a[0] = a[1] = a[2] = a[3] = $setLiteral$;
+        arr = a;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        $type$[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allSet = true;
+            for ($type$ v : a) {
+                allSet &= (v == $setLiteral$);
+            }
+            r.r1 = allSet ? 1 : 0;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-ArrayLargeAtomicityTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+#if[alwaysAtomic]
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+#else[alwaysAtomic]
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+#end[alwaysAtomic]
+@State
+public class $name$ {
+
+    $modifier$$type$[] arr = new $type$[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        $type$[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = $setLiteral$;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        $type$[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for ($type$ v : a) {
+                allCorrect &= (v == $setLiteral$ || v == $defaultLiteral$);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-ArrayLargeDefaultValuesTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+#warn
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class $name$ {
+
+    $modifier$$type$[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new $type$[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        $type$[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for ($type$ v : a) {
+                allDefault &= (v == $defaultLiteral$);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-ArrayLargeInitTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields initialization is visible via racy publication.
+ */
+@JCStressTest
+#if[!volatile]
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+#end[!volatile]
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@State
+public class $name$ {
+
+    $modifier$$type$[] arr;
+
+    @Actor
+    public void actor1() {
+        $type$[] a = new $type$[2 * 1024 * 1024];
+        for (int c = 0; c < a.length; c++) a[c] = $setLiteral$;
+        arr = a;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        $type$[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allSet = true;
+            for ($type$ v : a) {
+                allSet &= (v == $setLiteral$);
+            }
+            r.r1 = allSet ? 1 : 0;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-ArrayLargeTearingTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+#warn
+
+/**
+ * Tests if fields writes are not word-teared.
+ */
+@JCStressTest
+@Outcome(id = "[$set$, $set$]", expect = Expect.ACCEPTABLE, desc = "Seeing the set value.")
+#if[alwaysAtomic]
+@Outcome(expect = Expect.FORBIDDEN, desc = "Should see the set values only")
+#else[alwaysAtomic]
+@Outcome(id = "[$default$, $default$]", expect = Expect.FORBIDDEN, desc = "Cannot see default values.")
+@Outcome(id = "[$set$, $default$]", expect = Expect.FORBIDDEN, desc = "Cannot see default values.")
+@Outcome(id = "[$default$, $set$]", expect = Expect.FORBIDDEN, desc = "Cannot see default values.")
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+#end[alwaysAtomic]
+@State
+public class $name$ {
+
+    $modifier$$type$[] arr =  new $type$[2 * 1024 * 1024];
+    int idx1 = ThreadLocalRandom.current().nextInt(2 * 1024 * 1024 - 1);
+    int idx2 = idx1 + 1;
+
+    @Actor
+    public void actor1() {
+        arr[idx1] = $setLiteral$;
+    }
+
+    @Actor
+    public void actor2() {
+        arr[idx2] = $setLiteral$;
+    }
+
+    @Arbiter
+    public void arbiter($Type$Result2 r) {
+        r.r1 = arr[idx1];
+        r.r2 = arr[idx2];
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-ArrayTearingTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields writes are not word-teared.
+ */
+@JCStressTest
+@Outcome(id = "[$set$, $set$]", expect = Expect.ACCEPTABLE, desc = "Seeing the set value.")
+#if[alwaysAtomic]
+@Outcome(expect = Expect.FORBIDDEN, desc = "Should see the set values only")
+#else[alwaysAtomic]
+@Outcome(id = "[$default$, $default$]", expect = Expect.FORBIDDEN, desc = "Cannot see default values.")
+@Outcome(id = "[$set$, $default$]", expect = Expect.FORBIDDEN, desc = "Cannot see default values.")
+@Outcome(id = "[$default$, $set$]", expect = Expect.FORBIDDEN, desc = "Cannot see default values.")
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+#end[alwaysAtomic]
+@State
+public class $name$ {
+
+    $modifier$$type$[] arr = new $type$[2];
+
+    @Actor
+    public void actor1() {
+        arr[0] = $setLiteral$;
+    }
+
+    @Actor
+    public void actor2() {
+        arr[1] = $setLiteral$;
+    }
+
+    @Arbiter
+    public void arbiter($Type$Result2 r) {
+        r.r1 = arr[0];
+        r.r2 = arr[1];
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-FieldAtomicityTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[$default$]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[$set$]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+#if[alwaysAtomic]
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+#else[alwaysAtomic]
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+#end[alwaysAtomic]
+@State
+public class $name$ {
+
+    $modifier$$type$ x;
+
+    @Actor
+    public void actor1() {
+        x = $setLiteral$;
+    }
+
+    @Actor
+    public void actor2($Type$Result1 r) {
+        r.r1 = x;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-FieldDefaultValuesTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[$default$, $default$, $default$, $default$]", expect = Expect.ACCEPTABLE, desc = "Default value for the field.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class $name$ {
+
+    Data data;
+
+    public static class Data {
+        $modifier$$type$ v0, v1, v2, v3;
+    }
+
+    @Actor
+    public void actor1() {
+        data = new Data();
+    }
+
+    @Actor
+    public void actor2($Type$Result4 r) {
+        Data d = this.data;
+        if (d == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = $defaultLiteral$;
+        } else {
+            r.r1 = d.v0;
+            r.r2 = d.v1;
+            r.r3 = d.v2;
+            r.r4 = d.v3;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-FieldInitTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields initialization is visible via racy publication.
+ */
+@JCStressTest
+#if[!final]
+@Outcome(id = "[$default$]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+#end[!final]
+@Outcome(id = "[$set$]", expect = Expect.ACCEPTABLE, desc = "Seeing the set value.")
+#if[alwaysAtomic]
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+#else[alwaysAtomic]
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec.")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+#end[alwaysAtomic]
+@State
+public class $name$ {
+
+    Data data;
+
+    public static class Data {
+        $modifier$$type$ x = $setLiteral$;
+    }
+
+    @Actor
+    public void actor1() {
+        data = new Data();
+    }
+
+    @Actor
+    public void actor2($Type$Result1 r) {
+        Data d = this.data;
+        if (d == null) {
+            // Pretend we have seen the set value
+            r.r1 = $setLiteral$;
+        } else {
+            r.r1 = d.x;
+        }
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/chapter0a/X-FieldTearingTest.java.template	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,72 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package $package$;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if fields writes are not word-teared.
+ */
+@JCStressTest
+@Outcome(id = "[$set$, $set$]", expect = Expect.ACCEPTABLE, desc = "Seeing the set value.")
+#if[alwaysAtomic]
+@Outcome(expect = Expect.FORBIDDEN, desc = "Should see the set values only")
+#else[alwaysAtomic]
+@Outcome(id = "[$default$, $default$]", expect = Expect.FORBIDDEN, desc = "Cannot see default values.")
+@Outcome(id = "[$set$, $default$]", expect = Expect.FORBIDDEN, desc = "Cannot see default values.")
+@Outcome(id = "[$default$, $set$]", expect = Expect.FORBIDDEN, desc = "Cannot see default values.")
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+#end[alwaysAtomic]
+@State
+public class $name$ {
+
+    Data data = new Data();
+
+    public static class Data {
+        $modifier$$type$ x1;
+        $modifier$$type$ x2;
+    }
+
+    @Actor
+    public void actor1() {
+        data.x1 = $setLiteral$;
+    }
+
+    @Actor
+    public void actor2() {
+        data.x2 = $setLiteral$;
+    }
+
+    @Arbiter
+    public void arbiter($Type$Result2 r) {
+        r.r1 = data.x1;
+        r.r2 = data.x2;
+    }
+
+}
--- a/pom.xml	Wed Oct 21 20:35:44 2015 +0300
+++ b/pom.xml	Fri May 06 14:10:34 2016 +0300
@@ -32,18 +32,140 @@
     <version>1.0-SNAPSHOT</version>
     <packaging>pom</packaging>
 
-    <name>Java Concurrency Stress Tests: Parent</name>
+    <name>Java Concurrency Stress Tests</name>
     <url>http://maven.apache.org</url>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-compiler-plugin</artifactId>
+                    <version>2.4</version>
+                    <configuration>
+                        <source>1.8</source>
+                        <target>1.8</target>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-shade-plugin</artifactId>
+                    <version>1.7.1</version>
+                    <executions>
+                        <execution>
+                            <id>main</id>
+                            <phase>package</phase>
+                            <goals>
+                                <goal>shade</goal>
+                            </goals>
+                            <configuration>
+                                <finalName>jcstress</finalName>
+                                <transformers>
+                                    <transformer
+                                            implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                        <mainClass>org.openjdk.jcstress.Main</mainClass>
+                                    </transformer>
+                                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
+                                        <resource>META-INF/TestList</resource>
+                                    </transformer>
+                                </transformers>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <groupId>com.mycila.maven-license-plugin</groupId>
+                    <artifactId>maven-license-plugin</artifactId>
+                    <version>1.10.b1</version>
+                    <executions>
+                        <execution>
+                            <goals>
+                                <goal>format</goal>
+                            </goals>
+                            <phase>process-sources</phase>
+                            <configuration>
+                                <header>file:///${project.basedir}/../src/license/gpl_cpe/header.txt</header>
+                                <skipExistingHeaders>true</skipExistingHeaders>
+                                <strictCheck>true</strictCheck>
+                                <basedir>${project.basedir}/src/main/</basedir>
+                                <mapping>
+                                    <java>PHP</java>
+                                </mapping>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <groupId>org.codehaus.mojo</groupId>
+                    <artifactId>buildnumber-maven-plugin</artifactId>
+                    <version>1.1</version>
+                    <executions>
+                        <execution>
+                            <phase>generate-resources</phase>
+                            <goals>
+                                <goal>create</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                    <configuration>
+                        <doCheck>false</doCheck>
+                        <doUpdate>false</doUpdate>
+                        <shortRevisionLength>16</shortRevisionLength>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-jar-plugin</artifactId>
+                    <version>2.4</version>
+                    <configuration>
+                        <archive>
+                            <manifest>
+                                <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+                            </manifest>
+                            <manifestEntries>
+                                <Implementation-Build>${buildNumber}</Implementation-Build>
+                                <Build-Time>${maven.build.timestamp}</Build-Time>
+                            </manifestEntries>
+                        </archive>
+                    </configuration>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-enforcer-plugin</artifactId>
+                    <version>1.2</version>
+                    <executions>
+                        <execution>
+                            <id>enforce-versions</id>
+                            <goals>
+                                <goal>enforce</goal>
+                            </goals>
+                            <configuration>
+                                <rules>
+                                    <requireMavenVersion>
+                                        <version>3.0</version>
+                                    </requireMavenVersion>
+                                    <requireJavaVersion>
+                                        <version>1.8</version>
+                                    </requireJavaVersion>
+                                </rules>
+                            </configuration>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
     <modules>
         <module>jcstress-test-gen</module>
         <module>jcstress-core</module>
         <module>tests-custom</module>
-        <module>tests-generated</module>
+        <module>tests-chapter-0a</module>
+        <module>tests-chapter-0b</module>
         <module>tests-all</module>
     </modules>
 
--- a/tests-all/pom.xml	Wed Oct 21 20:35:44 2015 +0300
+++ b/tests-all/pom.xml	Fri May 06 14:10:34 2016 +0300
@@ -27,12 +27,16 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
 
-    <groupId>org.openjdk.jcstress</groupId>
+    <parent>
+        <groupId>org.openjdk.jcstress</groupId>
+        <artifactId>jcstress-parent</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+
     <artifactId>jcstress-tests-all</artifactId>
-    <version>1.0-SNAPSHOT</version>
     <packaging>jar</packaging>
 
-    <name>Java Concurrency Stress Tests: All Tests</name>
+    <name>All Tests Bundle</name>
     <url>http://maven.apache.org</url>
 
     <scm>
@@ -47,120 +51,25 @@
         <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <version>2.4</version>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-shade-plugin</artifactId>
-                <version>1.7.1</version>
-                <executions>
-                    <execution>
-                        <id>main</id>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <finalName>jcstress</finalName>
-                            <transformers>
-                                <transformer
-                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                                    <mainClass>org.openjdk.jcstress.Main</mainClass>
-                                </transformer>
-                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
-                                    <resource>META-INF/TestList</resource>
-                                </transformer>
-                            </transformers>
-                        </configuration>
-                    </execution>
-                </executions>
             </plugin>
             <plugin>
                 <groupId>com.mycila.maven-license-plugin</groupId>
                 <artifactId>maven-license-plugin</artifactId>
-                <version>1.10.b1</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>format</goal>
-                        </goals>
-                        <phase>process-sources</phase>
-                        <configuration>
-                            <header>file:///${project.basedir}/../src/license/gpl_cpe/header.txt</header>
-                            <skipExistingHeaders>true</skipExistingHeaders>
-                            <strictCheck>true</strictCheck>
-                            <basedir>${project.basedir}/src/main/</basedir>
-                            <mapping>
-                                <java>PHP</java>
-                            </mapping>
-                        </configuration>
-                    </execution>
-                </executions>
             </plugin>
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>buildnumber-maven-plugin</artifactId>
-                <version>1.1</version>
-                <executions>
-                    <execution>
-                        <phase>generate-resources</phase>
-                        <goals>
-                            <goal>create</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <doCheck>false</doCheck>
-                    <doUpdate>false</doUpdate>
-                    <shortRevisionLength>16</shortRevisionLength>
-                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-jar-plugin</artifactId>
-                <version>2.4</version>
-                <configuration>
-                    <archive>
-                        <manifest>
-                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
-                        </manifest>
-                        <manifestEntries>
-                            <Implementation-Build>${buildNumber}</Implementation-Build>
-                            <Build-Time>${maven.build.timestamp}</Build-Time>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
             </plugin>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-enforcer-plugin</artifactId>
-                <version>1.2</version>
-                <executions>
-                    <execution>
-                        <id>enforce-versions</id>
-                        <goals>
-                            <goal>enforce</goal>
-                        </goals>
-                        <configuration>
-                            <rules>
-                                <requireMavenVersion>
-                                    <version>3.0</version>
-                                </requireMavenVersion>
-                                <requireJavaVersion>
-                                    <version>1.8</version>
-                                </requireJavaVersion>
-                            </rules>
-                        </configuration>
-                    </execution>
-                </executions>
             </plugin>
         </plugins>
-
     </build>
 
     <dependencies>
@@ -171,7 +80,12 @@
         </dependency>
         <dependency>
             <groupId>org.openjdk.jcstress</groupId>
-            <artifactId>jcstress-tests-generated</artifactId>
+            <artifactId>jcstress-tests-chapter-0a</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openjdk.jcstress</groupId>
+            <artifactId>jcstress-tests-chapter-0b</artifactId>
             <version>${project.version}</version>
         </dependency>
     </dependencies>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-all/src/main/resources/LICENSE	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,347 @@
+The GNU General Public License (GPL)
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it.  By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.  This General Public License applies to
+most of the Free Software Foundation's software and to any other program whose
+authors commit to using it.  (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price.  Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for this service if you wish),
+that you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that you know you
+can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights.  These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for
+a fee, you must give the recipients all the rights that you have.  You must
+make sure that they, too, receive or can get the source code.  And you must
+show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software.  If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents.  We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must be licensed for
+everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License.  The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or
+translated into another language.  (Hereinafter, translation is included
+without limitation in the term "modification".) Each licensee is addressed as
+"you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope.  The act of running the Program is
+not restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program).  Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the
+Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may
+at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+    a) You must cause the modified files to carry prominent notices stating
+    that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in whole or
+    in part contains or is derived from the Program or any part thereof, to be
+    licensed as a whole at no charge to all third parties under the terms of
+    this License.
+
+    c) If the modified program normally reads commands interactively when run,
+    you must cause it, when started running for such interactive use in the
+    most ordinary way, to print or display an announcement including an
+    appropriate copyright notice and a notice that there is no warranty (or
+    else, saying that you provide a warranty) and that users may redistribute
+    the program under these conditions, and telling the user how to view a copy
+    of this License.  (Exception: if the Program itself is interactive but does
+    not normally print such an announcement, your work based on the Program is
+    not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License, and
+its terms, do not apply to those sections when you distribute them as separate
+works.  But when you distribute the same sections as part of a whole which is a
+work based on the Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on
+the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and
+2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable source
+    code, which must be distributed under the terms of Sections 1 and 2 above
+    on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three years, to
+    give any third party, for a charge no more than your cost of physically
+    performing source distribution, a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of Sections 1
+    and 2 above on a medium customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer to
+    distribute corresponding source code.  (This alternative is allowed only
+    for noncommercial distribution and only if you received the program in
+    object code or executable form with such an offer, in accord with
+    Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it.  For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable.  However, as a special exception, the source code
+distributed need not include anything that is normally distributed (in either
+source or binary form) with the major components (compiler, kernel, and so on)
+of the operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License.  Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License.  However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works.  These actions are prohibited by law if you do not
+accept this License.  Therefore, by modifying or distributing the Program (or
+any work based on the Program), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to
+copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of the
+rights granted herein.  You are not responsible for enforcing compliance by
+third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License.  If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Program by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices.  Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded.  In
+such case, this License incorporates the limitation as if written in the body
+of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time.  Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any later
+version", you have the option of following the terms and conditions either of
+that version or of any later version published by the Free Software Foundation.
+If the Program does not specify a version number of this License, you may
+choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission.  For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
+PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program.  It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+    One line to give the program's name and a brief idea of what it does.
+
+    Copyright (C) <year> <name of author>
+
+    This program is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the Free
+    Software Foundation; either version 2 of the License, or (at your option)
+    any later version.
+
+    This program is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+    more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc., 59
+    Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it
+starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
+    with ABSOLUTELY NO WARRANTY; for details type 'show w'.  This is free
+    software, and you are welcome to redistribute it under certain conditions;
+    type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may be
+called something other than 'show w' and 'show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.  Here
+is a sample; alter the names:
+
+    Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+    'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+    signature of Ty Coon, 1 April 1989
+
+    Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General Public
+License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL
+
+Certain source files distributed by Oracle America and/or its affiliates are
+subject to the following clarification and special exception to the GPL, but
+only where Oracle has expressly included in the particular source file's header
+the words "Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the LICENSE file that accompanied this code."
+
+    Linking this library statically or dynamically with other modules is making
+    a combined work based on this library.  Thus, the terms and conditions of
+    the GNU General Public License cover the whole combination.
+
+    As a special exception, the copyright holders of this library give you
+    permission to link this library with independent modules to produce an
+    executable, regardless of the license terms of these independent modules,
+    and to copy and distribute the resulting executable under terms of your
+    choice, provided that you also meet, for each linked independent module,
+    the terms and conditions of the license of that module.  An independent
+    module is a module which is not derived from or based on this library.  If
+    you modify this library, you may extend this exception to your version of
+    the library, but you are not obligated to do so.  If you do not wish to do
+    so, delete this exception statement from your version.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-all/src/main/resources/THIRD_PARTY_README	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,29 @@
+DO NOT TRANSLATE OR LOCALIZE.
+-----------------------------
+
+%% This notice is provided with respect to JOpt-Simple v4.6.
+
+--- begin of LICENSE ---
+
+Copyright (c) SourceForge
+
+The MIT License Copyright (c) Permission is hereby granted, free of
+charge, to any person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+--- end of LICENSE ---
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/LICENSE	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,347 @@
+The GNU General Public License (GPL)
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it.  By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.  This General Public License applies to
+most of the Free Software Foundation's software and to any other program whose
+authors commit to using it.  (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price.  Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for this service if you wish),
+that you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that you know you
+can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights.  These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for
+a fee, you must give the recipients all the rights that you have.  You must
+make sure that they, too, receive or can get the source code.  And you must
+show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software.  If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents.  We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must be licensed for
+everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License.  The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or
+translated into another language.  (Hereinafter, translation is included
+without limitation in the term "modification".) Each licensee is addressed as
+"you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope.  The act of running the Program is
+not restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program).  Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the
+Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may
+at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+    a) You must cause the modified files to carry prominent notices stating
+    that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in whole or
+    in part contains or is derived from the Program or any part thereof, to be
+    licensed as a whole at no charge to all third parties under the terms of
+    this License.
+
+    c) If the modified program normally reads commands interactively when run,
+    you must cause it, when started running for such interactive use in the
+    most ordinary way, to print or display an announcement including an
+    appropriate copyright notice and a notice that there is no warranty (or
+    else, saying that you provide a warranty) and that users may redistribute
+    the program under these conditions, and telling the user how to view a copy
+    of this License.  (Exception: if the Program itself is interactive but does
+    not normally print such an announcement, your work based on the Program is
+    not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License, and
+its terms, do not apply to those sections when you distribute them as separate
+works.  But when you distribute the same sections as part of a whole which is a
+work based on the Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on
+the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and
+2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable source
+    code, which must be distributed under the terms of Sections 1 and 2 above
+    on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three years, to
+    give any third party, for a charge no more than your cost of physically
+    performing source distribution, a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of Sections 1
+    and 2 above on a medium customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer to
+    distribute corresponding source code.  (This alternative is allowed only
+    for noncommercial distribution and only if you received the program in
+    object code or executable form with such an offer, in accord with
+    Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it.  For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable.  However, as a special exception, the source code
+distributed need not include anything that is normally distributed (in either
+source or binary form) with the major components (compiler, kernel, and so on)
+of the operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License.  Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License.  However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works.  These actions are prohibited by law if you do not
+accept this License.  Therefore, by modifying or distributing the Program (or
+any work based on the Program), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to
+copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of the
+rights granted herein.  You are not responsible for enforcing compliance by
+third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License.  If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Program by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices.  Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded.  In
+such case, this License incorporates the limitation as if written in the body
+of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time.  Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any later
+version", you have the option of following the terms and conditions either of
+that version or of any later version published by the Free Software Foundation.
+If the Program does not specify a version number of this License, you may
+choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission.  For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
+PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program.  It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+    One line to give the program's name and a brief idea of what it does.
+
+    Copyright (C) <year> <name of author>
+
+    This program is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the Free
+    Software Foundation; either version 2 of the License, or (at your option)
+    any later version.
+
+    This program is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+    more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc., 59
+    Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it
+starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
+    with ABSOLUTELY NO WARRANTY; for details type 'show w'.  This is free
+    software, and you are welcome to redistribute it under certain conditions;
+    type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may be
+called something other than 'show w' and 'show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.  Here
+is a sample; alter the names:
+
+    Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+    'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+    signature of Ty Coon, 1 April 1989
+
+    Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General Public
+License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL
+
+Certain source files distributed by Oracle America and/or its affiliates are
+subject to the following clarification and special exception to the GPL, but
+only where Oracle has expressly included in the particular source file's header
+the words "Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the LICENSE file that accompanied this code."
+
+    Linking this library statically or dynamically with other modules is making
+    a combined work based on this library.  Thus, the terms and conditions of
+    the GNU General Public License cover the whole combination.
+
+    As a special exception, the copyright holders of this library give you
+    permission to link this library with independent modules to produce an
+    executable, regardless of the license terms of these independent modules,
+    and to copy and distribute the resulting executable under terms of your
+    choice, provided that you also meet, for each linked independent module,
+    the terms and conditions of the license of that module.  An independent
+    module is a module which is not derived from or based on this library.  If
+    you modify this library, you may extend this exception to your version of
+    the library, but you are not obligated to do so.  If you do not wish to do
+    so, delete this exception statement from your version.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/THIRD_PARTY_README	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,29 @@
+DO NOT TRANSLATE OR LOCALIZE.
+-----------------------------
+
+%% This notice is provided with respect to JOpt-Simple v4.6.
+
+--- begin of LICENSE ---
+
+Copyright (c) SourceForge
+
+The MIT License Copyright (c) Permission is hereby granted, free of
+charge, to any person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+--- end of LICENSE ---
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/pom.xml	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,115 @@
+<!--
+Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
+DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+
+This code is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 2 only, as
+published by the Free Software Foundation.  Oracle designates this
+particular file as subject to the "Classpath" exception as provided
+by Oracle in the LICENSE file that accompanied this code.
+
+This code is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+version 2 for more details (a copy is included in the LICENSE file that
+accompanied this code).
+
+You should have received a copy of the GNU General Public License version
+2 along with this work; if not, write to the Free Software Foundation,
+Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+or visit www.oracle.com if you need additional information or have any
+questions.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.openjdk.jcstress</groupId>
+        <artifactId>jcstress-parent</artifactId>
+        <version>1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>jcstress-tests-chapter-0a</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Chapter 0.a: Language Foundations: Basic Properties</name>
+    <url>http://maven.apache.org</url>
+
+    <scm>
+        <connection>scm:hg:http://hg.openjdk.java.net/code-tools/jcstress/</connection>
+    </scm>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>1.2.1</version>
+                <executions>
+                    <execution>
+                        <id>chapter0a-gen</id>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                        <phase>
+                            generate-sources
+                        </phase>
+                        <configuration>
+                            <executable>${java.home}/bin/java</executable>
+                            <arguments>
+                                <argument>-jar</argument>
+                                <argument>../jcstress-test-gen/target/chapter0a-generator.jar</argument>
+                                <argument>${project.build.sourceDirectory}/</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>com.mycila.maven-license-plugin</groupId>
+                <artifactId>maven-license-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>buildnumber-maven-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-jar-plugin</artifactId>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-enforcer-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.openjdk.jcstress</groupId>
+            <artifactId>jcstress-core</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openjdk.jcstress</groupId>
+            <artifactId>jcstress-test-gen</artifactId>
+            <version>${project.version}</version>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class BooleanTest {
+
+    boolean[] arr = new boolean[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        boolean[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = true;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        boolean[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (boolean v : a) {
+                allCorrect &= (v == true || v == false);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ByteTest {
+
+    byte[] arr = new byte[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        byte[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = (byte) -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        byte[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (byte v : a) {
+                allCorrect &= (v == (byte) -1 || v == 0);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+@State
+public class DoubleTest {
+
+    double[] arr = new double[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        double[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = 1.39067116124321E-309;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        double[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (double v : a) {
+                allCorrect &= (v == 1.39067116124321E-309 || v == 0D);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class FloatTest {
+
+    float[] arr = new float[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        float[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = 2.3509528E-38F;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        float[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (float v : a) {
+                allCorrect &= (v == 2.3509528E-38F || v == 0F);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class IntTest {
+
+    int[] arr = new int[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        int[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        int[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (int v : a) {
+                allCorrect &= (v == -1 || v == 0);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+@State
+public class LongTest {
+
+    long[] arr = new long[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        long[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = -1L;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        long[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (long v : a) {
+                allCorrect &= (v == -1L || v == 0L);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/ShortTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ShortTest {
+
+    short[] arr = new short[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        short[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = (short) -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        short[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (short v : a) {
+                allCorrect &= (v == (short) -1 || v == 0);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/plain/StringTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class StringTest {
+
+    String[] arr = new String[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        String[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = "object";
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        String[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (String v : a) {
+                allCorrect &= (v == "object" || v == null);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class BooleanTest {
+
+    volatile boolean[] arr = new boolean[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        boolean[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = true;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        boolean[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (boolean v : a) {
+                allCorrect &= (v == true || v == false);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ByteTest {
+
+    volatile byte[] arr = new byte[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        byte[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = (byte) -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        byte[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (byte v : a) {
+                allCorrect &= (v == (byte) -1 || v == 0);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class DoubleTest {
+
+    volatile double[] arr = new double[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        double[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = 1.39067116124321E-309;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        double[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (double v : a) {
+                allCorrect &= (v == 1.39067116124321E-309 || v == 0D);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class FloatTest {
+
+    volatile float[] arr = new float[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        float[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = 2.3509528E-38F;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        float[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (float v : a) {
+                allCorrect &= (v == 2.3509528E-38F || v == 0F);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class IntTest {
+
+    volatile int[] arr = new int[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        int[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        int[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (int v : a) {
+                allCorrect &= (v == -1 || v == 0);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class LongTest {
+
+    volatile long[] arr = new long[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        long[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = -1L;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        long[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (long v : a) {
+                allCorrect &= (v == -1L || v == 0L);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/ShortTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ShortTest {
+
+    volatile short[] arr = new short[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        short[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = (short) -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        short[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (short v : a) {
+                allCorrect &= (v == (short) -1 || v == 0);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/large/volatiles/StringTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.ACCEPTABLE, desc = "Seen all elements set.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class StringTest {
+
+    volatile String[] arr = new String[2 * 1024 * 1024];
+
+    @Actor
+    public void actor1() {
+        String[] a = arr;
+        for (int c = 0; c < a.length; c++) a[c] = "object";
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        String[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allCorrect = true;
+            for (String v : a) {
+                allCorrect &= (v == "object" || v == null);
+            }
+            r.r1 = allCorrect ? 1 : 0;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[false]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[true]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class BooleanTest {
+
+    boolean[] a = new boolean[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = true;
+    }
+
+    @Actor
+    public void actor2(BooleanResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ByteTest {
+
+    byte[] a = new byte[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = (byte) -1;
+    }
+
+    @Actor
+    public void actor2(ByteResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[1.39067116124321E-309]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+@State
+public class DoubleTest {
+
+    double[] a = new double[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = 1.39067116124321E-309;
+    }
+
+    @Actor
+    public void actor2(DoubleResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[2.3509528E-38]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class FloatTest {
+
+    float[] a = new float[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = 2.3509528E-38F;
+    }
+
+    @Actor
+    public void actor2(FloatResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class IntTest {
+
+    int[] a = new int[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+@State
+public class LongTest {
+
+    long[] a = new long[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = -1L;
+    }
+
+    @Actor
+    public void actor2(LongResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/ShortTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ShortTest {
+
+    short[] a = new short[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = (short) -1;
+    }
+
+    @Actor
+    public void actor2(ShortResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/plain/StringTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[null]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[object]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class StringTest {
+
+    String[] a = new String[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = "object";
+    }
+
+    @Actor
+    public void actor2(StringResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[false]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[true]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class BooleanTest {
+
+    volatile boolean[] a = new boolean[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = true;
+    }
+
+    @Actor
+    public void actor2(BooleanResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ByteTest {
+
+    volatile byte[] a = new byte[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = (byte) -1;
+    }
+
+    @Actor
+    public void actor2(ByteResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[1.39067116124321E-309]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class DoubleTest {
+
+    volatile double[] a = new double[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = 1.39067116124321E-309;
+    }
+
+    @Actor
+    public void actor2(DoubleResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[2.3509528E-38]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class FloatTest {
+
+    volatile float[] a = new float[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = 2.3509528E-38F;
+    }
+
+    @Actor
+    public void actor2(FloatResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class IntTest {
+
+    volatile int[] a = new int[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class LongTest {
+
+    volatile long[] a = new long[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = -1L;
+    }
+
+    @Actor
+    public void actor2(LongResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/ShortTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ShortTest {
+
+    volatile short[] a = new short[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = (short) -1;
+    }
+
+    @Actor
+    public void actor2(ShortResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/arrays/small/volatiles/StringTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[null]", expect = Expect.ACCEPTABLE, desc = "Default value for the element. Allowed to see this: data race.")
+@Outcome(id = "[object]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class StringTest {
+
+    volatile String[] a = new String[1];
+
+    @Actor
+    public void actor1() {
+        a[0] = "object";
+    }
+
+    @Actor
+    public void actor2(StringResult1 r) {
+        r.r1 = a[0];
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[false]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[true]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class BooleanTest {
+
+    boolean x;
+
+    @Actor
+    public void actor1() {
+        x = true;
+    }
+
+    @Actor
+    public void actor2(BooleanResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ByteTest {
+
+    byte x;
+
+    @Actor
+    public void actor1() {
+        x = (byte) -1;
+    }
+
+    @Actor
+    public void actor2(ByteResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[1.39067116124321E-309]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+@State
+public class DoubleTest {
+
+    double x;
+
+    @Actor
+    public void actor1() {
+        x = 1.39067116124321E-309;
+    }
+
+    @Actor
+    public void actor2(DoubleResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[2.3509528E-38]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class FloatTest {
+
+    float x;
+
+    @Actor
+    public void actor1() {
+        x = 2.3509528E-38F;
+    }
+
+    @Actor
+    public void actor2(FloatResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class IntTest {
+
+    int x;
+
+    @Actor
+    public void actor1() {
+        x = -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.ACCEPTABLE_SPEC, desc = "Non-atomic access detected, allowed by spec")
+@Ref("http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.7")
+@State
+public class LongTest {
+
+    long x;
+
+    @Actor
+    public void actor1() {
+        x = -1L;
+    }
+
+    @Actor
+    public void actor2(LongResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/ShortTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ShortTest {
+
+    short x;
+
+    @Actor
+    public void actor1() {
+        x = (short) -1;
+    }
+
+    @Actor
+    public void actor2(ShortResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/plain/StringTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[null]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[object]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class StringTest {
+
+    String x;
+
+    @Actor
+    public void actor1() {
+        x = "object";
+    }
+
+    @Actor
+    public void actor2(StringResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[false]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[true]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class BooleanTest {
+
+    volatile boolean x;
+
+    @Actor
+    public void actor1() {
+        x = true;
+    }
+
+    @Actor
+    public void actor2(BooleanResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ByteTest {
+
+    volatile byte x;
+
+    @Actor
+    public void actor1() {
+        x = (byte) -1;
+    }
+
+    @Actor
+    public void actor2(ByteResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[1.39067116124321E-309]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class DoubleTest {
+
+    volatile double x;
+
+    @Actor
+    public void actor1() {
+        x = 1.39067116124321E-309;
+    }
+
+    @Actor
+    public void actor2(DoubleResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[2.3509528E-38]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class FloatTest {
+
+    volatile float x;
+
+    @Actor
+    public void actor1() {
+        x = 2.3509528E-38F;
+    }
+
+    @Actor
+    public void actor2(FloatResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class IntTest {
+
+    volatile int x;
+
+    @Actor
+    public void actor1() {
+        x = -1;
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class LongTest {
+
+    volatile long x;
+
+    @Actor
+    public void actor1() {
+        x = -1L;
+    }
+
+    @Actor
+    public void actor2(LongResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/ShortTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[0]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class ShortTest {
+
+    volatile short x;
+
+    @Actor
+    public void actor1() {
+        x = (short) -1;
+    }
+
+    @Actor
+    public void actor2(ShortResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/accessAtomic/fields/volatiles/StringTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.accessAtomic.fields.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields experience non-atomic reads/writes.
+ */
+@JCStressTest
+@Outcome(id = "[null]", expect = Expect.ACCEPTABLE, desc = "Default value for the field. Allowed to see this: data race.")
+@Outcome(id = "[object]", expect = Expect.ACCEPTABLE, desc = "The value set by the actor thread. Observer sees the complete update.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Other values are forbidden: atomicity violation.")
+@State
+public class StringTest {
+
+    volatile String x;
+
+    @Actor
+    public void actor1() {
+        x = "object";
+    }
+
+    @Actor
+    public void actor2(StringResult1 r) {
+        r.r1 = x;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class BooleanTest {
+
+    boolean[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new boolean[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        boolean[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (boolean v : a) {
+                allDefault &= (v == false);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class ByteTest {
+
+    byte[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new byte[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        byte[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (byte v : a) {
+                allDefault &= (v == 0);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class DoubleTest {
+
+    double[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new double[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        double[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (double v : a) {
+                allDefault &= (v == 0D);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class FloatTest {
+
+    float[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new float[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        float[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (float v : a) {
+                allDefault &= (v == 0F);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class IntTest {
+
+    int[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new int[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        int[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (int v : a) {
+                allDefault &= (v == 0);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class LongTest {
+
+    long[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new long[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        long[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (long v : a) {
+                allDefault &= (v == 0L);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/ShortTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class ShortTest {
+
+    short[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new short[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        short[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (short v : a) {
+                allDefault &= (v == 0);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/plain/StringTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class StringTest {
+
+    String[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new String[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        String[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (String v : a) {
+                allDefault &= (v == null);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class BooleanTest {
+
+    volatile boolean[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new boolean[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        boolean[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (boolean v : a) {
+                allDefault &= (v == false);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class ByteTest {
+
+    volatile byte[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new byte[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        byte[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (byte v : a) {
+                allDefault &= (v == 0);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class DoubleTest {
+
+    volatile double[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new double[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        double[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (double v : a) {
+                allDefault &= (v == 0D);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class FloatTest {
+
+    volatile float[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new float[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        float[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (float v : a) {
+                allDefault &= (v == 0F);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class IntTest {
+
+    volatile int[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new int[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        int[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (int v : a) {
+                allDefault &= (v == 0);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class LongTest {
+
+    volatile long[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new long[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        long[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (long v : a) {
+                allDefault &= (v == 0L);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/ShortTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class ShortTest {
+
+    volatile short[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new short[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        short[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (short v : a) {
+                allDefault &= (v == 0);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/large/volatiles/StringTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.large.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+import java.util.concurrent.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0]",  expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(id = "[-1]", expect = Expect.ACCEPTABLE, desc = "Have not seen the array yet.")
+@Outcome(id = "[1]",  expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class StringTest {
+
+    volatile String[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new String[2 * 1024 * 1024];
+    }
+
+    @Actor
+    public void actor2(IntResult1 r) {
+        String[] a = arr;
+        if (a == null) {
+            r.r1 = -1;
+        } else {
+            boolean allDefault = true;
+            for (String v : a) {
+                allDefault &= (v == null);
+            }
+            r.r1 = allDefault ? 0 : 1;
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[false, false, false, false]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class BooleanTest {
+
+    boolean[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new boolean[4];
+    }
+
+    @Actor
+    public void actor2(BooleanResult4 r) {
+        boolean[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = false;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0, 0, 0, 0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class ByteTest {
+
+    byte[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new byte[4];
+    }
+
+    @Actor
+    public void actor2(ByteResult4 r) {
+        byte[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0.0, 0.0, 0.0, 0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class DoubleTest {
+
+    double[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new double[4];
+    }
+
+    @Actor
+    public void actor2(DoubleResult4 r) {
+        double[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0D;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0.0, 0.0, 0.0, 0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class FloatTest {
+
+    float[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new float[4];
+    }
+
+    @Actor
+    public void actor2(FloatResult4 r) {
+        float[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0F;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0, 0, 0, 0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class IntTest {
+
+    int[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new int[4];
+    }
+
+    @Actor
+    public void actor2(IntResult4 r) {
+        int[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0, 0, 0, 0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class LongTest {
+
+    long[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new long[4];
+    }
+
+    @Actor
+    public void actor2(LongResult4 r) {
+        long[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0L;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/ShortTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0, 0, 0, 0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class ShortTest {
+
+    short[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new short[4];
+    }
+
+    @Actor
+    public void actor2(ShortResult4 r) {
+        short[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/plain/StringTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.plain;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[null, null, null, null]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class StringTest {
+
+    String[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new String[4];
+    }
+
+    @Actor
+    public void actor2(StringResult4 r) {
+        String[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = null;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/BooleanTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[false, false, false, false]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class BooleanTest {
+
+    volatile boolean[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new boolean[4];
+    }
+
+    @Actor
+    public void actor2(BooleanResult4 r) {
+        boolean[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = false;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/ByteTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0, 0, 0, 0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class ByteTest {
+
+    volatile byte[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new byte[4];
+    }
+
+    @Actor
+    public void actor2(ByteResult4 r) {
+        byte[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
Binary file tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/CharTest.java has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/DoubleTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0.0, 0.0, 0.0, 0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class DoubleTest {
+
+    volatile double[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new double[4];
+    }
+
+    @Actor
+    public void actor2(DoubleResult4 r) {
+        double[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0D;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/FloatTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0.0, 0.0, 0.0, 0.0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class FloatTest {
+
+    volatile float[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new float[4];
+    }
+
+    @Actor
+    public void actor2(FloatResult4 r) {
+        float[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0F;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/IntTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package org.openjdk.jcstress.tests.defaultValues.arrays.small.volatiles;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+// -- This file was mechanically generated: Do not edit! -- //
+
+/**
+ * Tests if fields are initialized to default values.
+ */
+@JCStressTest
+@Outcome(id = "[0, 0, 0, 0]", expect = Expect.ACCEPTABLE, desc = "Default value for the element.")
+@Outcome(expect = Expect.FORBIDDEN, desc = "Non-default values are forbidden.")
+@State
+public class IntTest {
+
+    volatile int[] arr;
+
+    @Actor
+    public void actor1() {
+        arr = new int[4];
+    }
+
+    @Actor
+    public void actor2(IntResult4 r) {
+        int[] a = arr;
+        if (a == null) {
+            // Pretend we have seen the default values
+            r.r1 = r.r2 = r.r3 = r.r4 = 0;
+        } else {
+            r.r1 = a[0];
+            r.r2 = a[1];
+            r.r3 = a[2];
+            r.r4 = a[3];
+        }
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0a/src/main/java/org/openjdk/jcstress/tests/defaultValues/arrays/small/volatiles/LongTest.java	Fri May 06 14:10:34 2016 +0300
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a