changeset 369:ef7859c6197a

Chapters 0.e, 1.d: Acquire/Release memory effects test for language and VarHandles.
author shade
date Tue, 28 Feb 2017 20:48:09 +0100
parents 8096cdcc19f2
children f4886026345e
files jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2StringResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2StringResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2StringResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2StringResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2StringResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2StringResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2StringResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2StringResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2StringResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2BooleanResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2ByteResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2CharResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2DoubleResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2FloatResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2IntResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2LongResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2ShortResult.java jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2StringResult.java jcstress-test-gen/pom.xml jcstress-test-gen/src/main/java/org/openjdk/jcstress/chapters/Chapter0eTestGenerator.java jcstress-test-gen/src/main/java/org/openjdk/jcstress/chapters/Chapter1dTestGenerator.java jcstress-test-gen/src/main/resources/acqrel/X-ArrayAcqRelTest.java.template jcstress-test-gen/src/main/resources/acqrel/X-FieldAcqRelTest.java.template jcstress-test-gen/src/main/resources/acqrel/X-VarHandleArrayAcqRelTest.java.template jcstress-test-gen/src/main/resources/acqrel/X-VarHandleByteArrayViewAcqRelTest.java.template jcstress-test-gen/src/main/resources/acqrel/X-VarHandleDirectByteBufferViewAcqRelTest.java.template jcstress-test-gen/src/main/resources/acqrel/X-VarHandleFieldAcqRelTest.java.template jcstress-test-gen/src/main/resources/acqrel/X-VarHandleHeapByteBufferViewAcqRelTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/arrays/X-CASTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/arrays/X-WeakCASContendStrongTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/arrays/X-WeakCASTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/byteArray/X-CASTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/byteArray/X-WeakCASContendStrongTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/byteArray/X-WeakCASTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/byteBuffer/X-CASTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/byteBuffer/X-WeakCASContendStrongTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/byteBuffer/X-WeakCASTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/fields/X-CASTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/fields/X-WeakCASContendStrongTest.java.template jcstress-test-gen/src/main/resources/operationAtomic/fields/X-WeakCASTest.java.template pom.xml tests-all/pom.xml tests-chapter-0e/pom.xml tests-chapter-0e/src/main/java/Test.java tests-chapter-1d/pom.xml tests-chapter-1d/src/main/java/Test.java
diffstat 118 files changed, 7190 insertions(+), 715 deletions(-) [+]
line wrap: on
line diff
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2BooleanResult.java	Tue Feb 28 20:23:45 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.infra.results;
-
-import org.openjdk.jcstress.annotations.Result;
-
-import java.io.Serializable;
-
-@Result
-public class Bool2BooleanResult implements Serializable {
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r1;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r2;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Bool2BooleanResult that = (Bool2BooleanResult) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        result = 31 * result + (r3 ? 1 : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return r1 + ", " + r2 + ", " + r3;
-    }
-
-}
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2ByteResult.java	Tue Feb 28 20:23:45 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.infra.results;
-
-import org.openjdk.jcstress.annotations.Result;
-
-import java.io.Serializable;
-
-@Result
-public class Bool2ByteResult implements Serializable {
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r1;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r2;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public byte r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Bool2ByteResult that = (Bool2ByteResult) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        result = 31 * result + (int) r3;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return r1 + ", " + r2 + ", " + r3;
-    }
-
-}
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2CharResult.java	Tue Feb 28 20:23:45 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.infra.results;
-
-import org.openjdk.jcstress.annotations.Result;
-
-import java.io.Serializable;
-
-@Result
-public class Bool2CharResult implements Serializable {
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r1;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r2;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public char r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Bool2CharResult that = (Bool2CharResult) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        result = 31 * result + (int) r3;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return r1 + ", " + r2 + ", " + r3;
-    }
-
-}
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2DoubleResult.java	Tue Feb 28 20:23:45 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.infra.results;
-
-import org.openjdk.jcstress.annotations.Result;
-
-import java.io.Serializable;
-
-@Result
-public class Bool2DoubleResult implements Serializable {
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r1;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r2;
-    
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public double r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Bool2DoubleResult that = (Bool2DoubleResult) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (Double.compare(that.r3, r3) != 0) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        long temp = r3 != +0.0d ? Double.doubleToLongBits(r3) : 0L;
-        result = 31 * result + (int) (temp ^ (temp >>> 32));
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return r1 + ", " + r2 + ", " + r3;
-    }
-
-}
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2FloatResult.java	Tue Feb 28 20:23:45 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.infra.results;
-
-import org.openjdk.jcstress.annotations.Result;
-
-import java.io.Serializable;
-
-@Result
-public class Bool2FloatResult implements Serializable {
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r1;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r2;
-    
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public float r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Bool2FloatResult that = (Bool2FloatResult) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (Float.compare(that.r3, r3) != 0) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return r1 + ", " + r2 + ", " + r3;
-    }
-
-}
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2IntResult.java	Tue Feb 28 20:23:45 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.infra.results;
-
-import org.openjdk.jcstress.annotations.Result;
-
-import java.io.Serializable;
-
-@Result
-public class Bool2IntResult implements Serializable {
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r1;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r2;
-    
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public int r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Bool2IntResult that = (Bool2IntResult) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        result = 31 * result + r3;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return r1 + ", " + r2 + ", " + r3;
-    }
-
-}
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2LongResult.java	Tue Feb 28 20:23:45 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.infra.results;
-
-import org.openjdk.jcstress.annotations.Result;
-
-import java.io.Serializable;
-
-@Result
-public class Bool2LongResult implements Serializable {
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r1;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r2;
-    
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public long r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Bool2LongResult that = (Bool2LongResult) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return r1 + ", " + r2 + ", " + r3;
-    }
-
-}
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2ShortResult.java	Tue Feb 28 20:23:45 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.infra.results;
-
-import org.openjdk.jcstress.annotations.Result;
-
-import java.io.Serializable;
-
-@Result
-public class Bool2ShortResult implements Serializable {
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r1;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r2;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public short r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Bool2ShortResult that = (Bool2ShortResult) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != that.r3) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        result = 31 * result + (int) r3;
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return r1 + ", " + r2 + ", " + r3;
-    }
-
-}
--- a/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Bool2StringResult.java	Tue Feb 28 20:23:45 2017 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,73 +0,0 @@
-/*
- * Copyright (c) 2005, 2014, 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.infra.results;
-
-import org.openjdk.jcstress.annotations.Result;
-
-import java.io.Serializable;
-
-@Result
-public class Bool2StringResult implements Serializable {
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r1;
-
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public boolean r2;
-    
-    @sun.misc.Contended
-    @jdk.internal.vm.annotation.Contended
-    public String r3;
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        Bool2StringResult that = (Bool2StringResult) o;
-
-        if (r1 != that.r1) return false;
-        if (r2 != that.r2) return false;
-        if (r3 != null ? !r3.equals(that.r3) : that.r3 != null) return false;
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        int result = (r1 ? 1 : 0);
-        result = 31 * result + (r2 ? 1 : 0);
-        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
-        return result;
-    }
-
-    @Override
-    public String toString() {
-        return r1 + ", " + r2 + ", " + r3;
-    }
-
-}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2BooleanResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Boolean2BooleanResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Boolean2BooleanResult that = (Boolean2BooleanResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        if (r3 != that.r3) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 ? 1 : 0);
+        result = 31 * result + (r2 ? 1 : 0);
+        result = 31 * result + (r3 ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2ByteResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2005, 2014, 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Boolean2ByteResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Boolean2ByteResult that = (Boolean2ByteResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        if (r3 != that.r3) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 ? 1 : 0);
+        result = 31 * result + (r2 ? 1 : 0);
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2CharResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2005, 2014, 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Boolean2CharResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Boolean2CharResult that = (Boolean2CharResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        if (r3 != that.r3) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 ? 1 : 0);
+        result = 31 * result + (r2 ? 1 : 0);
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2DoubleResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2005, 2014, 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Boolean2DoubleResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Boolean2DoubleResult that = (Boolean2DoubleResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        if (Double.compare(that.r3, r3) != 0) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 ? 1 : 0);
+        result = 31 * result + (r2 ? 1 : 0);
+        long temp = r3 != +0.0d ? Double.doubleToLongBits(r3) : 0L;
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2FloatResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2005, 2014, 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Boolean2FloatResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Boolean2FloatResult that = (Boolean2FloatResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        if (Float.compare(that.r3, r3) != 0) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 ? 1 : 0);
+        result = 31 * result + (r2 ? 1 : 0);
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2IntResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2005, 2014, 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Boolean2IntResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Boolean2IntResult that = (Boolean2IntResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        if (r3 != that.r3) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 ? 1 : 0);
+        result = 31 * result + (r2 ? 1 : 0);
+        result = 31 * result + r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2LongResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2005, 2014, 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Boolean2LongResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Boolean2LongResult that = (Boolean2LongResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        if (r3 != that.r3) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 ? 1 : 0);
+        result = 31 * result + (r2 ? 1 : 0);
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2ShortResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2005, 2014, 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Boolean2ShortResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Boolean2ShortResult that = (Boolean2ShortResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        if (r3 != that.r3) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 ? 1 : 0);
+        result = 31 * result + (r2 ? 1 : 0);
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Boolean2StringResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,73 @@
+/*
+ * Copyright (c) 2005, 2014, 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Boolean2StringResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Boolean2StringResult that = (Boolean2StringResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        if (r3 != null ? !r3.equals(that.r3) : that.r3 != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 ? 1 : 0);
+        result = 31 * result + (r2 ? 1 : 0);
+        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2BooleanResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Byte2BooleanResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Byte2BooleanResult that = (Byte2BooleanResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (r3 ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2ByteResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Byte2ByteResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Byte2ByteResult that = (Byte2ByteResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2CharResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Byte2CharResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Byte2CharResult that = (Byte2CharResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2DoubleResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Byte2DoubleResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Byte2DoubleResult that = (Byte2DoubleResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Double.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        result = (int) r1;
+        result = 31 * result + (int) r2;
+        temp = Double.doubleToLongBits(r3);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2FloatResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Byte2FloatResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Byte2FloatResult that = (Byte2FloatResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Float.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2IntResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Byte2IntResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Byte2IntResult that = (Byte2IntResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2LongResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Byte2LongResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Byte2LongResult that = (Byte2LongResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2ShortResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Byte2ShortResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Byte2ShortResult that = (Byte2ShortResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Byte2StringResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Byte2StringResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Byte2StringResult that = (Byte2StringResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 != null ? r3.equals(that.r3) : that.r3 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2BooleanResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Char2BooleanResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Char2BooleanResult that = (Char2BooleanResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (r3 ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2ByteResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Char2ByteResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Char2ByteResult that = (Char2ByteResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2CharResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Char2CharResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Char2CharResult that = (Char2CharResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2DoubleResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Char2DoubleResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Char2DoubleResult that = (Char2DoubleResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Double.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        result = (int) r1;
+        result = 31 * result + (int) r2;
+        temp = Double.doubleToLongBits(r3);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2FloatResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Char2FloatResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Char2FloatResult that = (Char2FloatResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Float.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2IntResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Char2IntResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Char2IntResult that = (Char2IntResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2LongResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Char2LongResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Char2LongResult that = (Char2LongResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2ShortResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Char2ShortResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Char2ShortResult that = (Char2ShortResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Char2StringResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Char2StringResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Char2StringResult that = (Char2StringResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 != null ? r3.equals(that.r3) : that.r3 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2BooleanResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Double2BooleanResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Double2BooleanResult that = (Double2BooleanResult) o;
+
+        if (Double.compare(that.r1, r1) != 0) return false;
+        if (Double.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        temp = Double.doubleToLongBits(r1);
+        result = (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r2);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        result = 31 * result + (r3 ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2ByteResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Double2ByteResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Double2ByteResult that = (Double2ByteResult) o;
+
+        if (Double.compare(that.r1, r1) != 0) return false;
+        if (Double.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        temp = Double.doubleToLongBits(r1);
+        result = (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r2);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2CharResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Double2CharResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Double2CharResult that = (Double2CharResult) o;
+
+        if (Double.compare(that.r1, r1) != 0) return false;
+        if (Double.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        temp = Double.doubleToLongBits(r1);
+        result = (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r2);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2DoubleResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Double2DoubleResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Double2DoubleResult that = (Double2DoubleResult) o;
+
+        if (Double.compare(that.r1, r1) != 0) return false;
+        if (Double.compare(that.r2, r2) != 0) return false;
+        return Double.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        temp = Double.doubleToLongBits(r1);
+        result = (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r2);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r3);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2FloatResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Double2FloatResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Double2FloatResult that = (Double2FloatResult) o;
+
+        if (Double.compare(that.r1, r1) != 0) return false;
+        if (Double.compare(that.r2, r2) != 0) return false;
+        return Float.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        temp = Double.doubleToLongBits(r1);
+        result = (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r2);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2IntResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Double2IntResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Double2IntResult that = (Double2IntResult) o;
+
+        if (Double.compare(that.r1, r1) != 0) return false;
+        if (Double.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        temp = Double.doubleToLongBits(r1);
+        result = (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r2);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        result = 31 * result + r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2LongResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Double2LongResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Double2LongResult that = (Double2LongResult) o;
+
+        if (Double.compare(that.r1, r1) != 0) return false;
+        if (Double.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        temp = Double.doubleToLongBits(r1);
+        result = (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r2);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2ShortResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Double2ShortResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Double2ShortResult that = (Double2ShortResult) o;
+
+        if (Double.compare(that.r1, r1) != 0) return false;
+        if (Double.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        temp = Double.doubleToLongBits(r1);
+        result = (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r2);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Double2StringResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Double2StringResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Double2StringResult that = (Double2StringResult) o;
+
+        if (Double.compare(that.r1, r1) != 0) return false;
+        if (Double.compare(that.r2, r2) != 0) return false;
+        return r3 != null ? r3.equals(that.r3) : that.r3 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        temp = Double.doubleToLongBits(r1);
+        result = (int) (temp ^ (temp >>> 32));
+        temp = Double.doubleToLongBits(r2);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2BooleanResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Float2BooleanResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Float2BooleanResult that = (Float2BooleanResult) o;
+
+        if (Float.compare(that.r1, r1) != 0) return false;
+        if (Float.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
+        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
+        result = 31 * result + (r3 ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2ByteResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Float2ByteResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Float2ByteResult that = (Float2ByteResult) o;
+
+        if (Float.compare(that.r1, r1) != 0) return false;
+        if (Float.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
+        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2CharResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Float2CharResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Float2CharResult that = (Float2CharResult) o;
+
+        if (Float.compare(that.r1, r1) != 0) return false;
+        if (Float.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
+        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2DoubleResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Float2DoubleResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Float2DoubleResult that = (Float2DoubleResult) o;
+
+        if (Float.compare(that.r1, r1) != 0) return false;
+        if (Float.compare(that.r2, r2) != 0) return false;
+        return Double.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
+        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
+        temp = Double.doubleToLongBits(r3);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2FloatResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Float2FloatResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Float2FloatResult that = (Float2FloatResult) o;
+
+        if (Float.compare(that.r1, r1) != 0) return false;
+        if (Float.compare(that.r2, r2) != 0) return false;
+        return Float.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
+        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2IntResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Float2IntResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Float2IntResult that = (Float2IntResult) o;
+
+        if (Float.compare(that.r1, r1) != 0) return false;
+        if (Float.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
+        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
+        result = 31 * result + r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2LongResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Float2LongResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Float2LongResult that = (Float2LongResult) o;
+
+        if (Float.compare(that.r1, r1) != 0) return false;
+        if (Float.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
+        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2ShortResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Float2ShortResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Float2ShortResult that = (Float2ShortResult) o;
+
+        if (Float.compare(that.r1, r1) != 0) return false;
+        if (Float.compare(that.r2, r2) != 0) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
+        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Float2StringResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Float2StringResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Float2StringResult that = (Float2StringResult) o;
+
+        if (Float.compare(that.r1, r1) != 0) return false;
+        if (Float.compare(that.r2, r2) != 0) return false;
+        return r3 != null ? r3.equals(that.r3) : that.r3 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (r1 != +0.0f ? Float.floatToIntBits(r1) : 0);
+        result = 31 * result + (r2 != +0.0f ? Float.floatToIntBits(r2) : 0);
+        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2BooleanResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Int2BooleanResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Int2BooleanResult that = (Int2BooleanResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1;
+        result = 31 * result + r2;
+        result = 31 * result + (r3 ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2ByteResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Int2ByteResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Int2ByteResult that = (Int2ByteResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1;
+        result = 31 * result + r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2CharResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Int2CharResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Int2CharResult that = (Int2CharResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1;
+        result = 31 * result + r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2DoubleResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Int2DoubleResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Int2DoubleResult that = (Int2DoubleResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Double.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        result = r1;
+        result = 31 * result + r2;
+        temp = Double.doubleToLongBits(r3);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2FloatResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Int2FloatResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Int2FloatResult that = (Int2FloatResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Float.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1;
+        result = 31 * result + r2;
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2IntResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Int2IntResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Int2IntResult that = (Int2IntResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1;
+        result = 31 * result + r2;
+        result = 31 * result + r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2LongResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Int2LongResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Int2LongResult that = (Int2LongResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1;
+        result = 31 * result + r2;
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2ShortResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Int2ShortResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Int2ShortResult that = (Int2ShortResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1;
+        result = 31 * result + r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Int2StringResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Int2StringResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Int2StringResult that = (Int2StringResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 != null ? r3.equals(that.r3) : that.r3 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1;
+        result = 31 * result + r2;
+        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2BooleanResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Long2BooleanResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Long2BooleanResult that = (Long2BooleanResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) (r1 ^ (r1 >>> 32));
+        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
+        result = 31 * result + (r3 ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2ByteResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Long2ByteResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Long2ByteResult that = (Long2ByteResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) (r1 ^ (r1 >>> 32));
+        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2CharResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Long2CharResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Long2CharResult that = (Long2CharResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) (r1 ^ (r1 >>> 32));
+        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2DoubleResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Long2DoubleResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Long2DoubleResult that = (Long2DoubleResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Double.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        result = (int) (r1 ^ (r1 >>> 32));
+        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
+        temp = Double.doubleToLongBits(r3);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2FloatResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Long2FloatResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Long2FloatResult that = (Long2FloatResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Float.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) (r1 ^ (r1 >>> 32));
+        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2IntResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Long2IntResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Long2IntResult that = (Long2IntResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) (r1 ^ (r1 >>> 32));
+        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
+        result = 31 * result + r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2LongResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Long2LongResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Long2LongResult that = (Long2LongResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) (r1 ^ (r1 >>> 32));
+        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2ShortResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Long2ShortResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Long2ShortResult that = (Long2ShortResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) (r1 ^ (r1 >>> 32));
+        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Long2StringResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Long2StringResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Long2StringResult that = (Long2StringResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 != null ? r3.equals(that.r3) : that.r3 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) (r1 ^ (r1 >>> 32));
+        result = 31 * result + (int) (r2 ^ (r2 >>> 32));
+        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2BooleanResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Short2BooleanResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Short2BooleanResult that = (Short2BooleanResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (r3 ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2ByteResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Short2ByteResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Short2ByteResult that = (Short2ByteResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2CharResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Short2CharResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Short2CharResult that = (Short2CharResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2DoubleResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Short2DoubleResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Short2DoubleResult that = (Short2DoubleResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Double.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        result = (int) r1;
+        result = 31 * result + (int) r2;
+        temp = Double.doubleToLongBits(r3);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2FloatResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Short2FloatResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Short2FloatResult that = (Short2FloatResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return Float.compare(that.r3, r3) == 0;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2IntResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Short2IntResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Short2IntResult that = (Short2IntResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2LongResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Short2LongResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Short2LongResult that = (Short2LongResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2ShortResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Short2ShortResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Short2ShortResult that = (Short2ShortResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 == that.r3;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/Short2StringResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class Short2StringResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        Short2StringResult that = (Short2StringResult) o;
+
+        if (r1 != that.r1) return false;
+        if (r2 != that.r2) return false;
+        return r3 != null ? r3.equals(that.r3) : that.r3 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) r1;
+        result = 31 * result + (int) r2;
+        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2BooleanResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class String2BooleanResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public boolean r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        String2BooleanResult that = (String2BooleanResult) o;
+
+        if (r3 != that.r3) return false;
+        if (r1 != null ? !r1.equals(that.r1) : that.r1 != null) return false;
+        return r2 != null ? r2.equals(that.r2) : that.r2 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1 != null ? r1.hashCode() : 0;
+        result = 31 * result + (r2 != null ? r2.hashCode() : 0);
+        result = 31 * result + (r3 ? 1 : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2ByteResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class String2ByteResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public byte r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        String2ByteResult that = (String2ByteResult) o;
+
+        if (r3 != that.r3) return false;
+        if (r1 != null ? !r1.equals(that.r1) : that.r1 != null) return false;
+        return r2 != null ? r2.equals(that.r2) : that.r2 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1 != null ? r1.hashCode() : 0;
+        result = 31 * result + (r2 != null ? r2.hashCode() : 0);
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2CharResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class String2CharResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public char r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        String2CharResult that = (String2CharResult) o;
+
+        if (r3 != that.r3) return false;
+        if (r1 != null ? !r1.equals(that.r1) : that.r1 != null) return false;
+        return r2 != null ? r2.equals(that.r2) : that.r2 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1 != null ? r1.hashCode() : 0;
+        result = 31 * result + (r2 != null ? r2.hashCode() : 0);
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2DoubleResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class String2DoubleResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public double r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        String2DoubleResult that = (String2DoubleResult) o;
+
+        if (Double.compare(that.r3, r3) != 0) return false;
+        if (r1 != null ? !r1.equals(that.r1) : that.r1 != null) return false;
+        return r2 != null ? r2.equals(that.r2) : that.r2 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result;
+        long temp;
+        result = r1 != null ? r1.hashCode() : 0;
+        result = 31 * result + (r2 != null ? r2.hashCode() : 0);
+        temp = Double.doubleToLongBits(r3);
+        result = 31 * result + (int) (temp ^ (temp >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2FloatResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class String2FloatResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public float r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        String2FloatResult that = (String2FloatResult) o;
+
+        if (Float.compare(that.r3, r3) != 0) return false;
+        if (r1 != null ? !r1.equals(that.r1) : that.r1 != null) return false;
+        return r2 != null ? r2.equals(that.r2) : that.r2 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1 != null ? r1.hashCode() : 0;
+        result = 31 * result + (r2 != null ? r2.hashCode() : 0);
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2IntResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class String2IntResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public int r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        String2IntResult that = (String2IntResult) o;
+
+        if (Float.compare(that.r3, r3) != 0) return false;
+        if (r1 != null ? !r1.equals(that.r1) : that.r1 != null) return false;
+        return r2 != null ? r2.equals(that.r2) : that.r2 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1 != null ? r1.hashCode() : 0;
+        result = 31 * result + (r2 != null ? r2.hashCode() : 0);
+        result = 31 * result + (r3 != +0.0f ? Float.floatToIntBits(r3) : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2LongResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class String2LongResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public long r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        String2LongResult that = (String2LongResult) o;
+
+        if (r3 != that.r3) return false;
+        if (r1 != null ? !r1.equals(that.r1) : that.r1 != null) return false;
+        return r2 != null ? r2.equals(that.r2) : that.r2 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1 != null ? r1.hashCode() : 0;
+        result = 31 * result + (r2 != null ? r2.hashCode() : 0);
+        result = 31 * result + (int) (r3 ^ (r3 >>> 32));
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2ShortResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class String2ShortResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public short r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        String2ShortResult that = (String2ShortResult) o;
+
+        if (r3 != that.r3) return false;
+        if (r1 != null ? !r1.equals(that.r1) : that.r1 != null) return false;
+        return r2 != null ? r2.equals(that.r2) : that.r2 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1 != null ? r1.hashCode() : 0;
+        result = 31 * result + (r2 != null ? r2.hashCode() : 0);
+        result = 31 * result + (int) r3;
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-core/src/main/java/org/openjdk/jcstress/infra/results/String2StringResult.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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.infra.results;
+
+import org.openjdk.jcstress.annotations.Result;
+
+import java.io.Serializable;
+
+@Result
+public class String2StringResult implements Serializable {
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r1;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r2;
+
+    @sun.misc.Contended
+    @jdk.internal.vm.annotation.Contended
+    public String r3;
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        String2StringResult that = (String2StringResult) o;
+
+        if (r1 != null ? !r1.equals(that.r1) : that.r1 != null) return false;
+        if (r2 != null ? !r2.equals(that.r2) : that.r2 != null) return false;
+        return r3 != null ? r3.equals(that.r3) : that.r3 == null;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = r1 != null ? r1.hashCode() : 0;
+        result = 31 * result + (r2 != null ? r2.hashCode() : 0);
+        result = 31 * result + (r3 != null ? r3.hashCode() : 0);
+        return result;
+    }
+
+    @Override
+    public String toString() {
+        return r1 + ", " + r2 + ", " + r3;
+    }
+
+}
--- a/jcstress-test-gen/pom.xml	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/pom.xml	Tue Feb 28 20:48:09 2017 +0100
@@ -123,6 +123,22 @@
                         </configuration>
                     </execution>
                     <execution>
+                        <id>chapter0e-generator</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <finalName>chapter0e-generator</finalName>
+                            <transformers>
+                                <transformer
+                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <mainClass>org.openjdk.jcstress.chapters.Chapter0eTestGenerator</mainClass>
+                                </transformer>
+                            </transformers>
+                        </configuration>
+                    </execution>
+                    <execution>
                         <id>chapter1a-generator</id>
                         <phase>package</phase>
                         <goals>
@@ -170,6 +186,22 @@
                             </transformers>
                         </configuration>
                     </execution>
+                    <execution>
+                        <id>chapter1d-generator</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <finalName>chapter1d-generator</finalName>
+                            <transformers>
+                                <transformer
+                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                                    <mainClass>org.openjdk.jcstress.chapters.Chapter1dTestGenerator</mainClass>
+                                </transformer>
+                            </transformers>
+                        </configuration>
+                    </execution>
                 </executions>
             </plugin>
             <plugin>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/java/org/openjdk/jcstress/chapters/Chapter0eTestGenerator.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,119 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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 org.openjdk.jcstress.util.StringUtils;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+public class Chapter0eTestGenerator {
+
+    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 final String[] MODIFIERS = new String[]{ "", "volatile" };
+
+    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,
+                GeneratorUtils.readFromResource("/acqrel/X-FieldAcqRelTest.java.template"),
+                "acqrel.fields"
+        );
+
+        makeTests(
+                dest,
+                GeneratorUtils.readFromResource("/acqrel/X-ArrayAcqRelTest.java.template"),
+                "acqrel.arrays"
+        );
+
+    }
+
+    private static void makeTests(String dest, String template, String label) throws IOException {
+        for (String modifier : MODIFIERS) {
+            String pack = PREFIX + "." + label + "." + (modifier.equals("") ? "plain" : modifier + "s");
+            for (String typeV : TYPES) {
+                for (String typeG : TYPES) {
+                    String name = testName(typeG, typeV);
+                    String res = Spp.spp(template,
+                            keys(modifier, typeG, label),
+                            vars(modifier, typeG, typeV, pack, name));
+
+                    GeneratorUtils.writeOut(dest, pack, name, res);
+                }
+            }
+        }
+    }
+
+
+    private static Map<String, String> vars(String modifier, String typeG, String typeV, String pack, String name) {
+        Map<String, String> map = new HashMap<>();
+        map.put("typeG", typeG);
+        map.put("typeV", typeV);
+        map.put("TYPEG", typeG.toUpperCase());
+        map.put("TYPEV", typeV.toUpperCase());
+        map.put("TypeG", StringUtils.upcaseFirst(typeG));
+        map.put("TypeV", StringUtils.upcaseFirst(typeV));
+        map.put("name", name);
+        map.put("defaultG", Values.DEFAULTS.get(typeG));
+        map.put("defaultV", Values.DEFAULTS.get(typeV));
+        map.put("defaultGLiteral", Values.DEFAULTS_LITERAL.get(typeG));
+        map.put("defaultVLiteral", Values.DEFAULTS_LITERAL.get(typeV));
+        map.put("setG", Values.VALUES.get(typeG));
+        map.put("setV", Values.VALUES.get(typeV));
+        map.put("setGLiteral", Values.VALUES_LITERAL.get(typeG));
+        map.put("setVLiteral", Values.VALUES_LITERAL.get(typeV));
+        map.put("modifier", (modifier.equals("") ? "" : modifier + " "));
+        map.put("package", pack);
+        return map;
+    }
+
+    private static Set<String> keys(String modifier, String type, String label) {
+        Set<String> set = new HashSet<>();
+        set.add(type);
+        if (racy(modifier, type, label)) {
+            set.add("racy");
+        }
+        set.add(modifier);
+        return set;
+    }
+
+    private static boolean racy(String modifier, String type, String label) {
+        return (!modifier.equals("volatile") || label.contains("array"));
+    }
+
+    private static String testName(String typeG, String typeV) {
+        return StringUtils.upcaseFirst(typeG) + StringUtils.upcaseFirst(typeV) + "Test";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/java/org/openjdk/jcstress/chapters/Chapter1dTestGenerator.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,211 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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 org.openjdk.jcstress.util.StringUtils;
+
+import java.io.IOException;
+import java.nio.ByteOrder;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+public class Chapter1dTestGenerator {
+
+    public static final String PREFIX = "org.openjdk.jcstress.tests";
+    public static final String[] TYPES_ALL = new String[]{"byte", "boolean", "char", "short", "int", "float", "long", "double", "String"};
+    public static final String[] TYPES_VIEWS = new String[]{"char", "short", "int", "float", "long", "double"};
+
+    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,
+                GeneratorUtils.readFromResource("/acqrel/X-VarHandleFieldAcqRelTest.java.template"),
+                "acqrel.varHandles.fields"
+        );
+
+        makeTests(
+                dest,
+                GeneratorUtils.readFromResource("/acqrel/X-VarHandleArrayAcqRelTest.java.template"),
+                "acqrel.varHandles.arrays"
+        );
+
+        makeBufferTests(
+                dest,
+                GeneratorUtils.readFromResource("/acqrel/X-VarHandleByteArrayViewAcqRelTest.java.template"),
+                "acqrel.varHandles.byteArray"
+        );
+
+        makeBufferTests(
+                dest,
+                GeneratorUtils.readFromResource("/acqrel/X-VarHandleHeapByteBufferViewAcqRelTest.java.template"),
+                "acqrel.varHandles.byteBuffer.heap"
+        );
+
+        makeBufferTests(
+                dest,
+                GeneratorUtils.readFromResource("/acqrel/X-VarHandleDirectByteBufferViewAcqRelTest.java.template"),
+                "acqrel.varHandles.byteBuffer.direct"
+        );
+    }
+
+    private enum VarHandleMode {
+        NAKED("plain"),
+        OPAQUE("opaque"),
+        ACQ_REL("acqrel"),
+        VOLATILE("volatiles"),
+        ;
+
+        private String label;
+
+        VarHandleMode(String label) {
+            this.label = label;
+        }
+
+        @Override
+        public String toString() {
+            return label;
+        }
+    }
+
+    private static void makeTests(String dest, String template, String label) throws IOException {
+        for (VarHandleMode gs : VarHandleMode.values()) {
+            String pack = PREFIX + "." + label + "." + gs;
+            for (String typeG : TYPES_ALL) {
+                for (String typeV : TYPES_ALL) {
+                    String name = testName(typeG, typeV);
+                    String res = Spp.spp(template,
+                            keys(typeG, typeV, gs),
+                            vars(typeG, typeV, pack, name, gs, null));
+
+                    GeneratorUtils.writeOut(dest, pack, name, res);
+                }
+            }
+        }
+    }
+
+    private static void makeBufferTests(String dest, String template, String label) throws IOException {
+        for (VarHandleMode gs : VarHandleMode.values()) {
+            for (ByteOrder bo : new ByteOrder[] { ByteOrder.BIG_ENDIAN, ByteOrder.LITTLE_ENDIAN }) {
+                String pack = PREFIX + "." + label + "." + bo.toString().toLowerCase().replace("_endian", "") + "." + gs;
+                for (String typeG : TYPES_VIEWS) {
+                    for (String typeV : TYPES_ALL) {
+                        String name = testName(typeG, typeV);
+                        String res = Spp.spp(template,
+                                keys(typeG, typeV, gs),
+                                vars(typeG, typeV, pack, name, gs, bo));
+
+                        GeneratorUtils.writeOut(dest, pack, name, res);
+                    }
+                }
+            }
+        }
+    }
+
+    private static Map<String, String> vars(String typeG, String typeV, String pack, String name, VarHandleMode mode, ByteOrder bo) {
+        Map<String, String> map = new HashMap<>();
+
+        map.put("typeG", typeG);
+        map.put("typeV", typeV);
+        map.put("TYPEG", typeG.toUpperCase());
+        map.put("TYPEV", typeV.toUpperCase());
+        map.put("TypeG", StringUtils.upcaseFirst(typeG));
+        map.put("TypeV", StringUtils.upcaseFirst(typeV));
+        map.put("name", name);
+        map.put("defaultG", Values.DEFAULTS.get(typeG));
+        map.put("defaultV", Values.DEFAULTS.get(typeV));
+        map.put("defaultGLiteral", Values.DEFAULTS_LITERAL.get(typeG));
+        map.put("defaultVLiteral", Values.DEFAULTS_LITERAL.get(typeV));
+        map.put("setG", Values.VALUES.get(typeG));
+        map.put("setV", Values.VALUES.get(typeV));
+        map.put("setGLiteral", Values.VALUES_LITERAL.get(typeG));
+        map.put("setVLiteral", Values.VALUES_LITERAL.get(typeV));
+        map.put("package", pack);
+
+        map.put("package", pack);
+        map.put("byteOrder", String.valueOf(bo));
+
+        switch (mode) {
+            case NAKED: {
+                map.put("setOp", "set");
+                map.put("getOp", "get");
+                break;
+            }
+            case OPAQUE: {
+                map.put("setOp", "setOpaque");
+                map.put("getOp", "getOpaque");
+                break;
+            }
+            case ACQ_REL: {
+                map.put("setOp", "setRelease");
+                map.put("getOp", "getAcquire");
+                break;
+            }
+            case VOLATILE: {
+                map.put("setOp", "setVolatile");
+                map.put("getOp", "getVolatile");
+                break;
+            }
+            default:
+                throw new IllegalStateException("" + mode);
+        }
+        return map;
+    }
+
+    private static Set<String> keys(String modifier, String type, VarHandleMode mode) {
+        Set<String> set = new HashSet<>();
+        set.add(type);
+        if (racy(mode)) {
+            set.add("racy");
+        }
+        set.add(modifier);
+        return set;
+    }
+
+    private static boolean racy(VarHandleMode mode) {
+        switch (mode) {
+            case NAKED:
+            case OPAQUE:
+                return true;
+            case ACQ_REL:
+            case VOLATILE:
+                return false;
+            default:
+                throw new IllegalStateException(mode.toString());
+        }
+    }
+
+
+    private static String testName(String typeG, String typeV) {
+        return StringUtils.upcaseFirst(typeG) + StringUtils.upcaseFirst(typeV) + "Test";
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/acqrel/X-ArrayAcqRelTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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 memory consistency problems.
+ */
+@JCStressTest
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $defaultG$",
+        "$setV$, $defaultV$, $defaultG$",
+        "$defaultV$, $setV$, $defaultG$",
+        "$setV$, $setV$, $defaultG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Default value for guard, allowed to see anything.")
+@Outcome(id = {
+        "$defaultV$, $setV$, $setG$",
+        "$setV$, $setV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Observing the value for guard, allowed to see latest value.")
+#if[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Seeing previous writes, allowed with racy guard.")
+#else[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.FORBIDDEN, desc = "Seeing previous writes, forbidden with proper guard.")
+#end[racy]
+@State
+public class $name$ {
+
+    $typeV$ v;
+    $modifier$$typeG$[] g = new $typeG$[1];
+
+    @Actor
+    public void actor1() {
+        v = $defaultVLiteral$;
+        v = $setVLiteral$;
+        g[0] = $setGLiteral$;
+    }
+
+    @Actor
+    public void actor2($TypeV$2$TypeG$Result r) {
+        $typeV$ v1 = v;
+        $typeG$ g1 = g[0];
+        $typeV$ v2 = v;
+        r.r1 = v1;
+        r.r2 = v2;
+        r.r3 = g1;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/acqrel/X-FieldAcqRelTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,80 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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 memory consistency problems.
+ */
+@JCStressTest
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $defaultG$",
+        "$setV$, $defaultV$, $defaultG$",
+        "$defaultV$, $setV$, $defaultG$",
+        "$setV$, $setV$, $defaultG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Default value for guard, allowed to see anything.")
+@Outcome(id = {
+        "$defaultV$, $setV$, $setG$",
+        "$setV$, $setV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Observing the value for guard, allowed to see latest value.")
+#if[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Seeing previous writes, allowed with racy guard.")
+#else[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.FORBIDDEN, desc = "Seeing previous writes, forbidden with proper guard.")
+#end[racy]
+@State
+public class $name$ {
+
+    $typeV$ v;
+    $modifier$$typeG$ g;
+
+    @Actor
+    public void actor1() {
+        v = $defaultVLiteral$;
+        v = $setVLiteral$;
+        g = $setGLiteral$;
+    }
+
+    @Actor
+    public void actor2($TypeV$2$TypeG$Result r) {
+        $typeV$ v1 = v;
+        $typeG$ g1 = g;
+        $typeV$ v2 = v;
+        r.r1 = v1;
+        r.r2 = v2;
+        r.r3 = g1;
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/acqrel/X-VarHandleArrayAcqRelTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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 java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if array element accessors experience coherence failures.
+ */
+@JCStressTest
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $defaultG$",
+        "$setV$, $defaultV$, $defaultG$",
+        "$defaultV$, $setV$, $defaultG$",
+        "$setV$, $setV$, $defaultG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Default value for guard, allowed to see anything.")
+@Outcome(id = {
+        "$defaultV$, $setV$, $setG$",
+        "$setV$, $setV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Observing the value for guard, allowed to see latest value.")
+#if[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Seeing previous writes, allowed with racy guard.")
+#else[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.FORBIDDEN, desc = "Seeing previous writes, forbidden with proper guard.")
+#end[racy]
+@State
+public class $name$ {
+
+    static final VarHandle VH = MethodHandles.arrayElementVarHandle($typeG$[].class);
+
+    $typeV$ v;
+    $typeG$[] g = new $typeG$[1];
+
+    @Actor
+    public void actor1() {
+        v = $defaultVLiteral$;
+        v = $setVLiteral$;
+        VH.$setOp$(g, 0, $setGLiteral$);
+    }
+
+    @Actor
+    public void actor2($TypeV$2$TypeG$Result r) {
+        $typeV$ v1 = v;
+        $typeG$ g1 = ($typeG$)VH.$getOp$(g, 0);
+        $typeV$ v2 = v;
+        r.r1 = v1;
+        r.r2 = v2;
+        r.r3 = g1;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/acqrel/X-VarHandleByteArrayViewAcqRelTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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 java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
+import java.nio.ByteOrder;
+import java.nio.ByteBuffer;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if byte array views accessors experience coherence failures.
+ */
+@JCStressTest
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $defaultG$",
+        "$setV$, $defaultV$, $defaultG$",
+        "$defaultV$, $setV$, $defaultG$",
+        "$setV$, $setV$, $defaultG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Default value for guard, allowed to see anything.")
+@Outcome(id = {
+        "$defaultV$, $setV$, $setG$",
+        "$setV$, $setV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Observing the value for guard, allowed to see latest value.")
+#if[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Seeing previous writes, allowed with racy guard.")
+#else[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.FORBIDDEN, desc = "Seeing previous writes, forbidden with proper guard.")
+#end[racy]
+@State
+public class $name$ {
+
+    static final int OFF = ByteBuffer.wrap(new byte[128]).alignmentOffset(0, 8);
+    static final VarHandle VH = MethodHandles.byteArrayViewVarHandle($typeG$[].class, ByteOrder.$byteOrder$);
+
+    $typeV$ v;
+    byte[] g = new byte[OFF + 8];
+
+    @Actor
+    public void actor1() {
+        v = $defaultVLiteral$;
+        v = $setVLiteral$;
+        VH.$setOp$(g, OFF, $setGLiteral$);
+    }
+
+    @Actor
+    public void actor2($TypeV$2$TypeG$Result r) {
+        $typeV$ v1 = v;
+        $typeG$ g1 = ($typeG$)VH.$getOp$(g, OFF);
+        $typeV$ v2 = v;
+        r.r1 = v1;
+        r.r2 = v2;
+        r.r3 = g1;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/acqrel/X-VarHandleDirectByteBufferViewAcqRelTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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 java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
+import java.nio.ByteOrder;
+import java.nio.ByteBuffer;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if byte array views accessors experience coherence failures.
+ */
+@JCStressTest
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $defaultG$",
+        "$setV$, $defaultV$, $defaultG$",
+        "$defaultV$, $setV$, $defaultG$",
+        "$setV$, $setV$, $defaultG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Default value for guard, allowed to see anything.")
+@Outcome(id = {
+        "$defaultV$, $setV$, $setG$",
+        "$setV$, $setV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Observing the value for guard, allowed to see latest value.")
+#if[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Seeing previous writes, allowed with racy guard.")
+#else[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.FORBIDDEN, desc = "Seeing previous writes, forbidden with proper guard.")
+#end[racy]
+@State
+public class $name$ {
+
+    static final VarHandle VH = MethodHandles.byteBufferViewVarHandle($typeG$[].class, ByteOrder.$byteOrder$);
+
+    ByteBuffer g = ByteBuffer.allocateDirect(16);
+    int off = g.alignmentOffset(0, 8);
+
+    $typeV$ v;
+
+    @Actor
+    public void actor1() {
+        v = $defaultVLiteral$;
+        v = $setVLiteral$;
+        VH.$setOp$(g, off, $setGLiteral$);
+    }
+
+    @Actor
+    public void actor2($TypeV$2$TypeG$Result r) {
+        $typeV$ v1 = v;
+        $typeG$ g1 = ($typeG$)VH.$getOp$(g, off);
+        $typeV$ v2 = v;
+        r.r1 = v1;
+        r.r2 = v2;
+        r.r3 = g1;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/acqrel/X-VarHandleFieldAcqRelTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,94 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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 java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if field accessors experience coherence failures.
+ */
+@JCStressTest
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $defaultG$",
+        "$setV$, $defaultV$, $defaultG$",
+        "$defaultV$, $setV$, $defaultG$",
+        "$setV$, $setV$, $defaultG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Default value for guard, allowed to see anything.")
+@Outcome(id = {
+        "$defaultV$, $setV$, $setG$",
+        "$setV$, $setV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Observing the value for guard, allowed to see latest value.")
+#if[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Seeing previous writes, allowed with racy guard.")
+#else[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.FORBIDDEN, desc = "Seeing previous writes, forbidden with proper guard.")
+#end[racy]
+@State
+public class $name$ {
+
+    static final VarHandle VH;
+
+    static {
+        try {
+            VH = MethodHandles.lookup().findVarHandle($name$.class, "g", $typeG$.class);
+        } catch (NoSuchFieldException | IllegalAccessException e) {
+            throw new IllegalStateException(e);
+        }
+    }
+
+    $typeV$ v;
+    $typeG$ g;
+
+    @Actor
+    public void actor1() {
+        v = $defaultVLiteral$;
+        v = $setVLiteral$;
+        VH.$setOp$(this, $setGLiteral$);
+    }
+
+    @Actor
+    public void actor2($TypeV$2$TypeG$Result r) {
+        $typeV$ v1 = v;
+        $typeG$ g1 = ($typeG$)VH.$getOp$(this);
+        $typeV$ v2 = v;
+        r.r1 = v1;
+        r.r2 = v2;
+        r.r3 = g1;
+    }
+
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jcstress-test-gen/src/main/resources/acqrel/X-VarHandleHeapByteBufferViewAcqRelTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2017, Red Hat Inc. 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 java.lang.invoke.MethodHandles;
+import java.lang.invoke.VarHandle;
+import java.nio.ByteOrder;
+import java.nio.ByteBuffer;
+
+import org.openjdk.jcstress.annotations.*;
+import org.openjdk.jcstress.infra.results.*;
+
+#warn
+
+/**
+ * Tests if byte array views accessors experience coherence failures.
+ */
+@JCStressTest
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $defaultG$",
+        "$setV$, $defaultV$, $defaultG$",
+        "$defaultV$, $setV$, $defaultG$",
+        "$setV$, $setV$, $defaultG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Default value for guard, allowed to see anything.")
+@Outcome(id = {
+        "$defaultV$, $setV$, $setG$",
+        "$setV$, $setV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Observing the value for guard, allowed to see latest value.")
+#if[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.ACCEPTABLE, desc = "Seeing previous writes, allowed with racy guard.")
+#else[racy]
+@Outcome(id = {
+        "$defaultV$, $defaultV$, $setG$",
+        "$setV$, $defaultV$, $setG$",
+    }, expect = Expect.FORBIDDEN, desc = "Seeing previous writes, forbidden with proper guard.")
+#end[racy]
+@State
+public class $name$ {
+
+    static final VarHandle VH = MethodHandles.byteBufferViewVarHandle($typeG$[].class, ByteOrder.$byteOrder$);
+
+    ByteBuffer g = ByteBuffer.allocate(16);
+    int off = g.alignmentOffset(0, 8);
+
+    $typeV$ v;
+
+    @Actor
+    public void actor1() {
+        v = $defaultVLiteral$;
+        v = $setVLiteral$;
+        VH.$setOp$(g, off, $setGLiteral$);
+    }
+
+    @Actor
+    public void actor2($TypeV$2$TypeG$Result r) {
+        $typeV$ v1 = v;
+        $typeG$ g1 = ($typeG$)VH.$getOp$(g, off);
+        $typeV$ v2 = v;
+        r.r1 = v1;
+        r.r2 = v2;
+        r.r3 = g1;
+    }
+
+}
+
--- a/jcstress-test-gen/src/main/resources/operationAtomic/arrays/X-CASTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/arrays/X-CASTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -63,17 +63,17 @@
     }
 
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %CAS<$valueLiteral0$, $valueLiteral1$>%
     }
 
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %CAS<$valueLiteral0$, $valueLiteral2$>%
     }
 
     @Arbiter
-    public void arbiter1(Bool2$Type$Result r) {
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = array[0];
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/arrays/X-WeakCASContendStrongTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/arrays/X-WeakCASContendStrongTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -63,17 +63,17 @@
     }
 
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %WeakCAS<$valueLiteral0$, $valueLiteral1$>%
     }
 
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %CompareAndSet<$valueLiteral0$, $valueLiteral2$>%
     }
 
     @Arbiter
-    public void arbiter1(Bool2$Type$Result r) {
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = array[0];
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/arrays/X-WeakCASTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/arrays/X-WeakCASTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -63,17 +63,17 @@
     }
 
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %WeakCAS<$valueLiteral0$, $valueLiteral1$>%
     }
 
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %WeakCAS<$valueLiteral0$, $valueLiteral2$>%
     }
 
     @Arbiter
-    public void arbiter1(Bool2$Type$Result r) {
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = array[0];
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/byteArray/X-CASTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/byteArray/X-CASTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -65,17 +65,17 @@
     byte[] byteArray = new byte[OFF + 8];
 
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %CAS<$valueLiteral0$, $valueLiteral1$>%
     }
 
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %CAS<$valueLiteral0$, $valueLiteral2$>%
     }
 
     @Arbiter
-    public void arbiter1(Bool2$Type$Result r) {
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = ($type$) vh.get(byteArray, OFF);
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/byteArray/X-WeakCASContendStrongTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/byteArray/X-WeakCASContendStrongTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -65,17 +65,17 @@
     byte[] byteArray = new byte[OFF + 8];
 
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %WeakCAS<$valueLiteral0$, $valueLiteral1$>%
     }
 
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %CompareAndSet<$valueLiteral0$, $valueLiteral2$>%
     }
 
     @Arbiter
-    public void arbiter1(Bool2$Type$Result r) {
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = ($type$) vh.get(byteArray, OFF);
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/byteArray/X-WeakCASTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/byteArray/X-WeakCASTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -65,17 +65,17 @@
     byte[] byteArray = new byte[OFF + 8];
 
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %WeakCAS<$valueLiteral0$, $valueLiteral1$>%
     }
 
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %WeakCAS<$valueLiteral0$, $valueLiteral2$>%
     }
 
     @Arbiter
-    public void arbiter1(Bool2$Type$Result r) {
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = ($type$) vh.get(byteArray, OFF);
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/byteBuffer/X-CASTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/byteBuffer/X-CASTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -65,17 +65,17 @@
     ByteBuffer byteBuffer = $buffer_allocate$(OFF + 8);
 
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %CAS<$valueLiteral0$, $valueLiteral1$>%
     }
 
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %CAS<$valueLiteral0$, $valueLiteral2$>%
     }
 
     @Arbiter
-    public void arbiter1(Bool2$Type$Result r) {
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = ($type$) vh.get(byteBuffer, OFF);
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/byteBuffer/X-WeakCASContendStrongTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/byteBuffer/X-WeakCASContendStrongTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -65,17 +65,17 @@
     ByteBuffer byteBuffer = $buffer_allocate$(OFF + 8);
 
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %WeakCAS<$valueLiteral0$, $valueLiteral1$>%
     }
 
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %CompareAndSet<$valueLiteral0$, $valueLiteral2$>%
     }
 
     @Arbiter
-    public void arbiter1(Bool2$Type$Result r) {
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = ($type$) vh.get(byteBuffer, OFF);
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/byteBuffer/X-WeakCASTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/byteBuffer/X-WeakCASTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -65,17 +65,17 @@
     ByteBuffer byteBuffer = $buffer_allocate$(OFF + 8);
 
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %WeakCAS<$valueLiteral0$, $valueLiteral1$>%
     }
 
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %WeakCAS<$valueLiteral0$, $valueLiteral2$>%
     }
 
     @Arbiter
-    public void arbiter1(Bool2$Type$Result r) {
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = ($type$) vh.get(byteBuffer, OFF);
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/fields/X-CASTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/fields/X-CASTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -61,19 +61,19 @@
             throw new RuntimeException(e);
         }
     }
-    
+
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %CAS<$valueLiteral0$, $valueLiteral1$>%
     }
-    
+
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %CAS<$valueLiteral0$, $valueLiteral2$>%
     }
 
-    @Arbiter 
-    public void arbiter1(Bool2$Type$Result r) {
+    @Arbiter
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = field;
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/fields/X-WeakCASContendStrongTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/fields/X-WeakCASContendStrongTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -61,19 +61,19 @@
             throw new RuntimeException(e);
         }
     }
-    
+
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %WeakCAS<$valueLiteral0$, $valueLiteral1$>%
     }
-    
+
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %CompareAndSet<$valueLiteral0$, $valueLiteral2$>%
     }
 
-    @Arbiter 
-    public void arbiter1(Bool2$Type$Result r) {
+    @Arbiter
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = field;
     }
 
--- a/jcstress-test-gen/src/main/resources/operationAtomic/fields/X-WeakCASTest.java.template	Tue Feb 28 20:23:45 2017 +0100
+++ b/jcstress-test-gen/src/main/resources/operationAtomic/fields/X-WeakCASTest.java.template	Tue Feb 28 20:48:09 2017 +0100
@@ -37,7 +37,7 @@
 import org.openjdk.jcstress.annotations.Outcome;
 import org.openjdk.jcstress.annotations.State;
 import org.openjdk.jcstress.annotations.Description;
-import org.openjdk.jcstress.infra.results.Bool2$Type$Result;
+import org.openjdk.jcstress.infra.results.*;
 
 
 @JCStressTest
@@ -61,19 +61,19 @@
             throw new RuntimeException(e);
         }
     }
-    
+
     @Actor
-    public void actor1(Bool2$Type$Result r) {
+    public void actor1(Boolean2$Type$Result r) {
         r.r1 = %WeakCAS<$valueLiteral0$, $valueLiteral1$>%
     }
-    
+
     @Actor
-    public void actor2(Bool2$Type$Result r) {
+    public void actor2(Boolean2$Type$Result r) {
         r.r2 = %WeakCAS<$valueLiteral0$, $valueLiteral2$>%
     }
 
-    @Arbiter 
-    public void arbiter1(Bool2$Type$Result r) {
+    @Arbiter
+    public void arbiter1(Boolean2$Type$Result r) {
         r.r3 = field;
     }
 
--- a/pom.xml	Tue Feb 28 20:23:45 2017 +0100
+++ b/pom.xml	Tue Feb 28 20:48:09 2017 +0100
@@ -251,9 +251,11 @@
         <module>tests-chapter-0b</module>
         <module>tests-chapter-0c</module>
         <module>tests-chapter-0d</module>
+        <module>tests-chapter-0e</module>
         <module>tests-chapter-1a</module>
         <module>tests-chapter-1b</module>
         <module>tests-chapter-1c</module>
+        <module>tests-chapter-1d</module>
         <module>tests-chapter-2b</module>
         <module>tests-all</module>
     </modules>
--- a/tests-all/pom.xml	Tue Feb 28 20:23:45 2017 +0100
+++ b/tests-all/pom.xml	Tue Feb 28 20:48:09 2017 +0100
@@ -100,6 +100,11 @@
         </dependency>
         <dependency>
             <groupId>org.openjdk.jcstress</groupId>
+            <artifactId>jcstress-tests-chapter-0e</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openjdk.jcstress</groupId>
             <artifactId>jcstress-tests-chapter-1a</artifactId>
             <version>${project.version}</version>
         </dependency>
@@ -115,6 +120,11 @@
         </dependency>
         <dependency>
             <groupId>org.openjdk.jcstress</groupId>
+            <artifactId>jcstress-tests-chapter-1d</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.openjdk.jcstress</groupId>
             <artifactId>jcstress-tests-chapter-2b</artifactId>
             <version>${project.version}</version>
         </dependency>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-0e/pom.xml	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,134 @@
+<!--
+Copyright (c) 2017, Red Hat Inc. 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>0.2-SNAPSHOT</version>
+    </parent>
+    <artifactId>jcstress-tests-chapter-0e</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Chapter 0.e: Language Foundations: Acquire/Release Memory Effects</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/chapter0e-generator.jar</argument>
+                                <argument>${project.build.directory}/generated-sources/tests/</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </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/tests/</source>
+                            </sources>
+                        </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-0e/src/main/java/Test.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2017, Red Hat Inc. 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.
+ */
+// Stub to break the habit of revision control systems to remove empty dirs
+public class Test {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests-chapter-1d/pom.xml	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,134 @@
+<!--
+Copyright (c) 2017, Red Hat Inc. 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>0.2-SNAPSHOT</version>
+    </parent>
+    <artifactId>jcstress-tests-chapter-1d</artifactId>
+    <packaging>jar</packaging>
+
+    <name>Chapter 1.d: Library Foundations: VarHandles, Acquire/Release Memory Effects</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/chapter1d-generator.jar</argument>
+                                <argument>${project.build.directory}/generated-sources/tests/</argument>
+                            </arguments>
+                        </configuration>
+                    </execution>
+                </executions>
+            </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/tests/</source>
+                            </sources>
+                        </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-1d/src/main/java/Test.java	Tue Feb 28 20:48:09 2017 +0100
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2017, Red Hat Inc. 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.
+ */
+// Stub to break the habit of revision control systems to remove empty dirs
+public class Test {
+}