diff a/test/hotspot/jtreg/runtime/valhalla/inlinetypes/classfileparser/cfpTests.jcod b/test/hotspot/jtreg/runtime/valhalla/inlinetypes/classfileparser/cfpTests.jcod
--- /dev/null
+++ b/test/hotspot/jtreg/runtime/valhalla/inlinetypes/classfileparser/cfpTests.jcod
@@ -0,0 +1,2696 @@
+/*
+ * Copyright (c) 2018, 2024, 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.
+ *
+ * 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.
+ *
+ */
+
+// This file contains multiple illegal inline type classes that should cause
+// ClassFormatError exceptions when attempted to be loaded.
+//
+// Many of these test were originally generated from this Java file and then
+// modified to cause ClassFormatError or ClassCircularityError exceptions.  The
+// '(bad)' comments in most of the tests show where the modifications were made.
+//
+// final inline class Value {
+//     static final Value VT = makeValue(0x01234567);
+//     final int int_v;
+//     Value() {
+//         int_v = 1;
+//     }
+//     static Value makeValue(int x) {
+//         Value v = Value.default;
+//         v = __WithField(v.int_v, x);
+//         return v;
+//     }
+// }
+
+
+// Test that class modifiers cannot have both ACC_PRIMITIVE and ACC_ABSTRACT set.
+//
+class ValueAbstract {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [28] { // Constant Pool
+    ; // first element is empty
+    Method #7 #23; // #1     at 0x0A
+    Field #3 #24; // #2     at 0x0F
+    class #9; // #3     at 0x14
+    int 0x01234567; // #4     at 0x17
+    Method #3 #25; // #5     at 0x1C
+    Field #3 #26; // #6     at 0x21
+    class #27; // #7     at 0x26
+    Utf8 "VT"; // #8     at 0x29
+    Utf8 "ValueAbstract"; // #9     at 0x2E
+    Utf8 "ValueTypes"; // #10     at 0x36
+    Utf8 "LValueAbstract;"; // #11     at 0x43
+    Utf8 "int_v"; // #12     at 0x4D
+    Utf8 "I"; // #13     at 0x55
+    Utf8 "<init>"; // #14     at 0x59
+    Utf8 "()V"; // #15     at 0x62
+    Utf8 "Code"; // #16     at 0x68
+    Utf8 "LineNumberTable"; // #17     at 0x6F
+    Utf8 "makeValueAbstract"; // #18     at 0x81
+    Utf8 "(I)LValueAbstract;"; // #19     at 0x8D
+    Utf8 "<clinit>"; // #20     at 0x9A
+    Utf8 "SourceFile"; // #21     at 0xA5
+    Utf8 "ValueAbstract.java"; // #22     at 0xB2
+    NameAndType #14 #15; // #23     at 0xBF
+    NameAndType #12 #13; // #24     at 0xC4
+    NameAndType #18 #19; // #25     at 0xC9
+    NameAndType #8 #11; // #26     at 0xCE
+    Utf8 "java/lang/Object"; // #27     at 0xD3
+  } // Constant Pool
+
+  0x0C30; // access [  ACC_PRIMITIVE ACC_ABSTRACT(bad) ACC_SUPER ACC_FINAL ]
+  #3;// this_cpx
+  #7;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [2] { // fields
+    { // Member at 0xF0
+      0x0118; // access
+      #8; // name_cpx
+      #11; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0xF8
+      0x0010; // access
+      #12; // name_cpx
+      #13; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [3] { // methods
+    { // Member at 0x0102
+      0x0000; // access
+      #14; // name_cpx
+      #15; // sig_cpx
+      [1] { // Attributes
+        Attr(#16, 42) { // Code at 0x010A
+          2; // max_stack
+          1; // max_locals
+          Bytes[10]{
+            0x2AB700012A04B500;
+            0x02B1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#17, 14) { // LineNumberTable at 0x0126
+              [3] { // LineNumberTable
+                0  4; //  at 0x0132
+                4  5; //  at 0x0136
+                9  6; //  at 0x013A
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x013A
+      0x0008; // access
+      #18; // name_cpx
+      #19; // sig_cpx
+      [1] { // Attributes
+        Attr(#16, 44) { // Code at 0x0142
+          2; // max_stack
+          2; // max_locals
+          Bytes[12]{
+            0xCB00034C2B1ACC00;
+            0x024C2BB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#17, 14) { // LineNumberTable at 0x0160
+              [3] { // LineNumberTable
+                0  8; //  at 0x016C
+                4  9; //  at 0x0170
+                10  10; //  at 0x0174
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0174
+      0x0008; // access
+      #20; // name_cpx
+      #15; // sig_cpx
+      [1] { // Attributes
+        Attr(#16, 33) { // Code at 0x017C
+          1; // max_stack
+          0; // max_locals
+          Bytes[9]{
+            0x1204B80005B30006;
+            0xB1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#17, 6) { // LineNumberTable at 0x0197
+              [1] { // LineNumberTable
+                0  2; //  at 0x01A3
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [2] { // Attributes
+    Attr(#21, 2) { // SourceFile at 0x01A5
+      #22;
+    } // end SourceFile
+    ;
+    Attr(#10, 4) { // ValueTypes at 0x01AD
+      0x00010003;
+    } // end ValueTypes
+  } // Attributes
+} // end class ValueAbstract
+
+//////////////////////////////////////////////////////////////////////
+
+// Test that class modifiers cannot have both ACC_PRIMITIVE and ACC_ENUM set.
+//
+class ValueEnum {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [28] { // Constant Pool
+    ; // first element is empty
+    Method #7 #23; // #1     at 0x0A
+    Field #3 #24; // #2     at 0x0F
+    class #9; // #3     at 0x14
+    int 0x01234567; // #4     at 0x17
+    Method #3 #25; // #5     at 0x1C
+    Field #3 #26; // #6     at 0x21
+    class #27; // #7     at 0x26
+    Utf8 "VT"; // #8     at 0x29
+    Utf8 "ValueEnum"; // #9     at 0x2E
+    Utf8 "ValueTypes"; // #10     at 0x36
+    Utf8 "LValueEnum;"; // #11     at 0x43
+    Utf8 "int_v"; // #12     at 0x4D
+    Utf8 "I"; // #13     at 0x55
+    Utf8 "<init>"; // #14     at 0x59
+    Utf8 "()V"; // #15     at 0x62
+    Utf8 "Code"; // #16     at 0x68
+    Utf8 "LineNumberTable"; // #17     at 0x6F
+    Utf8 "makeValueEnum"; // #18     at 0x81
+    Utf8 "(I)LValueEnum;"; // #19     at 0x8D
+    Utf8 "<clinit>"; // #20     at 0x9A
+    Utf8 "SourceFile"; // #21     at 0xA5
+    Utf8 "ValueEnum.java"; // #22     at 0xB2
+    NameAndType #14 #15; // #23     at 0xBF
+    NameAndType #12 #13; // #24     at 0xC4
+    NameAndType #18 #19; // #25     at 0xC9
+    NameAndType #8 #11; // #26     at 0xCE
+    Utf8 "java/lang/Object"; // #27     at 0xD3
+  } // Constant Pool
+
+  0x04850; // access [  ACC_VALUE ACC_PRIMITIVE ACC_ENUM(bad) ACC_FINAL ]
+  #3;// this_cpx
+  #7;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [2] { // fields
+    { // Member at 0xF0
+      0x0118; // access
+      #8; // name_cpx
+      #11; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0xF8
+      0x0010; // access
+      #12; // name_cpx
+      #13; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [3] { // methods
+    { // Member at 0x0102
+      0x0000; // access
+      #14; // name_cpx
+      #15; // sig_cpx
+      [1] { // Attributes
+        Attr(#16, 42) { // Code at 0x010A
+          2; // max_stack
+          1; // max_locals
+          Bytes[10]{
+            0x2AB700012A04B500;
+            0x02B1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#17, 14) { // LineNumberTable at 0x0126
+              [3] { // LineNumberTable
+                0  4; //  at 0x0132
+                4  5; //  at 0x0136
+                9  6; //  at 0x013A
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x013A
+      0x0008; // access
+      #18; // name_cpx
+      #19; // sig_cpx
+      [1] { // Attributes
+        Attr(#16, 44) { // Code at 0x0142
+          2; // max_stack
+          2; // max_locals
+          Bytes[12]{
+            0xCB00034C2B1ACC00;
+            0x024C2BB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#17, 14) { // LineNumberTable at 0x0160
+              [3] { // LineNumberTable
+                0  8; //  at 0x016C
+                4  9; //  at 0x0170
+                10  10; //  at 0x0174
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0174
+      0x0008; // access
+      #20; // name_cpx
+      #15; // sig_cpx
+      [1] { // Attributes
+        Attr(#16, 33) { // Code at 0x017C
+          1; // max_stack
+          0; // max_locals
+          Bytes[9]{
+            0x1204B80005B30006;
+            0xB1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#17, 6) { // LineNumberTable at 0x0197
+              [1] { // LineNumberTable
+                0  2; //  at 0x01A3
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [2] { // Attributes
+    Attr(#21, 2) { // SourceFile at 0x01A5
+      #22;
+    } // end SourceFile
+    ;
+    Attr(#10, 4) { // ValueTypes at 0x01AD
+      0x00010003;
+    } // end ValueTypes
+  } // Attributes
+} // end class ValueEnum
+
+//////////////////////////////////////////////////////////////////////
+
+// Test that inline type fields must be final.
+//
+class ValueFieldNotFinal {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [28] { // Constant Pool
+    ; // first element is empty
+    Method #7 #23; // #1     at 0x0A
+    Field #3 #24; // #2     at 0x0F
+    class #9; // #3     at 0x14
+    int 0x01234567; // #4     at 0x17
+    Method #3 #25; // #5     at 0x1C
+    Field #3 #26; // #6     at 0x21
+    class #27; // #7     at 0x26
+    Utf8 "VT"; // #8     at 0x29
+    Utf8 "ValueFieldNotFinal"; // #9     at 0x2E
+    Utf8 "ValueTypes"; // #10     at 0x36
+    Utf8 "LValueFieldNotFinal;"; // #11     at 0x43
+    Utf8 "int_v"; // #12     at 0x4D
+    Utf8 "I"; // #13     at 0x55
+    Utf8 "<init>"; // #14     at 0x59
+    Utf8 "()V"; // #15     at 0x62
+    Utf8 "Code"; // #16     at 0x68
+    Utf8 "LineNumberTable"; // #17     at 0x6F
+    Utf8 "makeValueFieldNotFinal"; // #18     at 0x81
+    Utf8 "(I)LValueFieldNotFinal;"; // #19     at 0x8D
+    Utf8 "<clinit>"; // #20     at 0x9A
+    Utf8 "SourceFile"; // #21     at 0xA5
+    Utf8 "ValueFieldNotFinal.java"; // #22     at 0xB2
+    NameAndType #14 #15; // #23     at 0xBF
+    NameAndType #12 #13; // #24     at 0xC4
+    NameAndType #18 #19; // #25     at 0xC9
+    NameAndType #8 #11; // #26     at 0xCE
+    Utf8 "java/lang/Object"; // #27     at 0xD3
+  } // Constant Pool
+
+  0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ]
+  #3;// this_cpx
+  #7;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [2] { // fields
+    { // Member at 0xF0
+      0x0118; // access
+      #8; // name_cpx
+      #11; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0xF8
+      0x0000; // access [ Field not ACC_FINAL(bad) ]
+      #12; // name_cpx
+      #13; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [3] { // methods
+    { // Member at 0x0102
+      0x0000; // access
+      #14; // name_cpx
+      #15; // sig_cpx
+      [1] { // Attributes
+        Attr(#16, 42) { // Code at 0x010A
+          2; // max_stack
+          1; // max_locals
+          Bytes[10]{
+            0x2AB700012A04B500;
+            0x02B1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#17, 14) { // LineNumberTable at 0x0126
+              [3] { // LineNumberTable
+                0  4; //  at 0x0132
+                4  5; //  at 0x0136
+                9  6; //  at 0x013A
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x013A
+      0x0008; // access
+      #18; // name_cpx
+      #19; // sig_cpx
+      [1] { // Attributes
+        Attr(#16, 44) { // Code at 0x0142
+          2; // max_stack
+          2; // max_locals
+          Bytes[12]{
+            0xCB00034C2B1ACC00;
+            0x024C2BB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#17, 14) { // LineNumberTable at 0x0160
+              [3] { // LineNumberTable
+                0  8; //  at 0x016C
+                4  9; //  at 0x0170
+                10  10; //  at 0x0174
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0174
+      0x0008; // access
+      #20; // name_cpx
+      #15; // sig_cpx
+      [1] { // Attributes
+        Attr(#16, 33) { // Code at 0x017C
+          1; // max_stack
+          0; // max_locals
+          Bytes[9]{
+            0x1204B80005B30006;
+            0xB1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#17, 6) { // LineNumberTable at 0x0197
+              [1] { // LineNumberTable
+                0  2; //  at 0x01A3
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [2] { // Attributes
+    Attr(#21, 2) { // SourceFile at 0x01A5
+      #22;
+    } // end SourceFile
+    ;
+    Attr(#10, 4) { // ValueTypes at 0x01AD
+      0x00010003;
+    } // end ValueTypes
+  } // Attributes
+} // end class ValueFieldNotFinal
+
+//////////////////////////////////////////////////////////////////////
+
+// Test that class modifiers cannot have both ACC_PRIMITIVE and ACC_INTERFACE set.
+//
+class ValueInterface {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [27] { // Constant Pool
+    ; // first element is empty
+    Method #7 #21; // #1     at 0x0A
+    Field #3 #22; // #2     at 0x0F
+    class #23; // #3     at 0x14
+    int 0x01234567; // #4     at 0x17
+    Method #3 #24; // #5     at 0x1C
+    Field #3 #25; // #6     at 0x21
+    class #26; // #7     at 0x26
+    Utf8 "VT"; // #8     at 0x29
+    Utf8 "LValueInterface;"; // #9     at 0x2E
+    Utf8 "int_v"; // #10     at 0x3C
+    Utf8 "I"; // #11     at 0x44
+    Utf8 "<init>"; // #12     at 0x48
+    Utf8 "()V"; // #13     at 0x51
+    Utf8 "Code"; // #14     at 0x57
+    Utf8 "LineNumberTable"; // #15     at 0x5E
+    Utf8 "makeValueInterface"; // #16     at 0x70
+    Utf8 "(I)LValueInterface;"; // #17     at 0x80
+    Utf8 "<clinit>"; // #18     at 0x91
+    Utf8 "SourceFile"; // #19     at 0x9C
+    Utf8 "ValueInterface.java"; // #20     at 0xA9
+    NameAndType #12 #13; // #21     at 0xBA
+    NameAndType #10 #11; // #22     at 0xBF
+    Utf8 "ValueInterface"; // #23     at 0xC4
+    NameAndType #16 #17; // #24     at 0xD0
+    NameAndType #8 #9; // #25     at 0xD5
+    Utf8 "java/lang/Object"; // #26     at 0xDA
+  } // Constant Pool
+
+  0x0A30; // access [ ACC_PRIMITIVE ACC_INTERFACE(bad) ACC_SUPER ACC_FINAL ]
+  #3;// this_cpx
+  #7;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [2] { // fields
+    { // Member at 0xF7
+      0x0018; // access
+      #8; // name_cpx
+      #9; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0xFF
+      0x0010; // access
+      #10; // name_cpx
+      #11; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [1] { // methods
+    { // Member at 0x0141
+      0x0008; // access
+      #16; // name_cpx
+      #17; // sig_cpx
+      [1] { // Attributes
+        Attr(#14, 44) { // Code at 0x0149
+          2; // max_stack
+          2; // max_locals
+          Bytes[12]{
+            0xCB00034C2B1ACC00;
+            0x024C2BB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#15, 14) { // LineNumberTable at 0x0167
+              [3] { // LineNumberTable
+                0  8; //  at 0x0173
+                4  9; //  at 0x0177
+                10  10; //  at 0x017B
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [1] { // Attributes
+    Attr(#19, 2) { // SourceFile at 0x01AC
+      #20;
+    } // end SourceFile
+  } // Attributes
+} // end class ValueInterface
+
+//////////////////////////////////////////////////////////////////////
+
+// Test that inline type instance methods cannot be synchronized.
+//
+// final inline class ValueMethodSynch {
+//     final int int_v;
+//
+//     ValueMethodSynch() { int_v = 1; }
+//
+//     int getInt(int x) { return x; }
+// }
+
+class ValueMethodSynch {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [46] { // Constant Pool
+    ; // first element is empty
+    class #23; // #1     at 0x0A
+    Field #1 #24; // #2     at 0x0D
+    InvokeDynamic 0s #27; // #3     at 0x12
+    InvokeDynamic 0s #28; // #4     at 0x17
+    InvokeDynamic 0s #29; // #5     at 0x1C
+    class #30; // #6     at 0x21
+    Utf8 "int_v"; // #7     at 0x24
+    Utf8 "I"; // #8     at 0x2C
+    Utf8 "getInt"; // #9     at 0x30
+    Utf8 "(I)I"; // #10     at 0x39
+    Utf8 "Code"; // #11     at 0x40
+    Utf8 "LineNumberTable"; // #12     at 0x47
+    Utf8 "hashCode"; // #13     at 0x59
+    Utf8 "()I"; // #14     at 0x64
+    Utf8 "equals"; // #15     at 0x6A
+    Utf8 "(Ljava/lang/Object;)Z"; // #16     at 0x73
+    Utf8 "toString"; // #17     at 0x8B
+    Utf8 "()Ljava/lang/String;"; // #18     at 0x96
+    Utf8 "<init>"; // #19     at 0xAD
+    Utf8 "()QValueMethodSynch;"; // #20     at 0xB6
+    Utf8 "SourceFile"; // #21     at 0xCD
+    Utf8 "ValueMethodSynch.java"; // #22     at 0xDA
+    Utf8 "ValueMethodSynch"; // #23     at 0xF2
+    NameAndType #7 #8; // #24     at 0x0105
+    Utf8 "BootstrapMethods"; // #25     at 0x010A
+    MethodHandle 6b #31; // #26     at 0x011D
+    NameAndType #13 #32; // #27     at 0x0121
+    NameAndType #15 #33; // #28     at 0x0126
+    NameAndType #17 #34; // #29     at 0x012B
+    Utf8 "java/lang/Object"; // #30     at 0x0130
+    Method #35 #36; // #31     at 0x0143
+    Utf8 "(QValueMethodSynch;)I"; // #32     at 0x0148
+    Utf8 "(QValueMethodSynch;Ljava/lang/Object;)Z"; // #33     at 0x0160
+    Utf8 "(QValueMethodSynch;)Ljava/lang/String;"; // #34     at 0x018A
+    class #37; // #35     at 0x01B3
+    NameAndType #38 #42; // #36     at 0x01B6
+    Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #37     at 0x01BB
+    Utf8 "makeBootstrapMethod"; // #38     at 0x01E4
+    class #44; // #39     at 0x01FA
+    Utf8 "Lookup"; // #40     at 0x01FD
+    Utf8 "InnerClasses"; // #41     at 0x0206
+    Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #42     at 0x0215
+    class #45; // #43     at 0x028B
+    Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #44     at 0x028E
+    Utf8 "java/lang/invoke/MethodHandles"; // #45     at 0x02B6
+  } // Constant Pool
+
+  0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ]
+  #1;// this_cpx
+  #6;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [1] { // fields
+    { // Member at 0x02E1
+      0x0010; // access
+      #7; // name_cpx
+      #8; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [5] { // methods
+    { // Member at 0x02EB
+      0x0020; // access [ ACC_SYNCHRONIZED(bad) ]
+      #9; // name_cpx
+      #10; // sig_cpx
+      [1] { // Attributes
+        Attr(#11, 26) { // Code at 0x02F3
+          1; // max_stack
+          2; // max_locals
+          Bytes[2]{
+            0x1BAC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#12, 6) { // LineNumberTable at 0x0307
+              [1] { // LineNumberTable
+                0  9; //  at 0x0313
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0313
+      0x0011; // access
+      #13; // name_cpx
+      #14; // sig_cpx
+      [1] { // Attributes
+        Attr(#11, 31) { // Code at 0x031B
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00030000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#12, 6) { // LineNumberTable at 0x0334
+              [1] { // LineNumberTable
+                0  1; //  at 0x0340
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0340
+      0x0011; // access
+      #15; // name_cpx
+      #16; // sig_cpx
+      [1] { // Attributes
+        Attr(#11, 32) { // Code at 0x0348
+          2; // max_stack
+          2; // max_locals
+          Bytes[8]{
+            0x2A2BBA00040000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#12, 6) { // LineNumberTable at 0x0362
+              [1] { // LineNumberTable
+                0  1; //  at 0x036E
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x036E
+      0x0011; // access
+      #17; // name_cpx
+      #18; // sig_cpx
+      [1] { // Attributes
+        Attr(#11, 31) { // Code at 0x0376
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00050000B0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#12, 6) { // LineNumberTable at 0x038F
+              [1] { // LineNumberTable
+                0  1; //  at 0x039B
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x039B
+      0x0008; // access
+      #19; // name_cpx
+      #20; // sig_cpx
+      [1] { // Attributes
+        Attr(#11, 45) { // Code at 0x03A3
+          2; // max_stack
+          1; // max_locals
+          Bytes[13]{
+            0xCB00014B042A5FCC;
+            0x00024B2AB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#12, 14) { // LineNumberTable at 0x03C2
+              [3] { // LineNumberTable
+                0  4; //  at 0x03CE
+                4  5; //  at 0x03D2
+                11  6; //  at 0x03D6
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [3] { // Attributes
+    Attr(#21, 2) { // SourceFile at 0x03D8
+      #22;
+    } // end SourceFile
+    ;
+    Attr(#41, 10) { // InnerClasses at 0x03E0
+      [1] { // InnerClasses
+        #39 #43 #40 25; //  at 0x03F0
+      }
+    } // end InnerClasses
+    ;
+    Attr(#25, 6) { // BootstrapMethods at 0x03F0
+      [1] { // bootstrap_methods
+        {  //  bootstrap_method
+          #26; // bootstrap_method_ref
+          [0] { // bootstrap_arguments
+          }  //  bootstrap_arguments
+        }  //  bootstrap_method
+      }
+    } // end BootstrapMethods
+  } // Attributes
+} // end class ValueMethodSynch
+
+//////////////////////////////////////////////////////////////////////
+
+// Inline types Circ and Circ2 have fields of each other's type.  This should
+// cause a ClassCircularityError exception when one of them is being loaded.
+//
+// The inline types are based on these two Java classes:
+//
+// final inline class Circ {
+//     static final Circ VT = makeCirc(0x01234567);
+//     final int int_v;
+//     final Circ2 v2;
+//     Circ() {
+//         int_v = 1;
+//         v2 = Circ2.default;
+//     }
+//     static Circ makeCirc(int x) {
+//         Circ v = Circ.default;
+//         v = __WithField(v.int_v, x);
+//         return v;
+//     }
+// }
+//----------------------------------------------------------------
+// final inline class Circ2 {
+//     static final Circ2 VT = makeCirc2('\u0123');
+//     final char char_v;
+//     final Circ vv;
+//     Circ2() {
+//         char_v = 'z';
+//         vv = Circ.default;
+//     }
+//     static Circ2 makeCirc2(char c) {
+//         Circ2 v = Circ2.default;
+//         v = __WithField(v.char_v, c);
+//         return v;
+//     }
+// }
+
+class Circ {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [61] { // Constant Pool
+    ; // first element is empty
+    class #34; // #1     at 0x0A
+    Field #1 #35; // #2     at 0x0D
+    class #36; // #3     at 0x12
+    Field #1 #37; // #4     at 0x15
+    InvokeDynamic 0s #40; // #5     at 0x1A
+    InvokeDynamic 0s #41; // #6     at 0x1F
+    InvokeDynamic 0s #42; // #7     at 0x24
+    int 0x01234567; // #8     at 0x29
+    Method #1 #43; // #9     at 0x2E
+    Field #1 #44; // #10     at 0x33
+    class #45; // #11     at 0x38
+    Utf8 "VT"; // #12     at 0x3B
+    Utf8 "QCirc;"; // #13     at 0x40
+    Utf8 "int_v"; // #14     at 0x49
+    Utf8 "I"; // #15     at 0x51
+    Utf8 "v2"; // #16     at 0x55
+    Utf8 "QCirc2;"; // #17     at 0x5A
+    Utf8 "makeCirc"; // #18     at 0x65
+    Utf8 "(I)QCirc;"; // #19     at 0x6F
+    Utf8 "Code"; // #20     at 0x7B
+    Utf8 "LineNumberTable"; // #21     at 0x82
+    Utf8 "hashCode"; // #22     at 0x94
+    Utf8 "()I"; // #23     at 0x9F
+    Utf8 "equals"; // #24     at 0xA5
+    Utf8 "(Ljava/lang/Object;)Z"; // #25     at 0xAE
+    Utf8 "toString"; // #26     at 0xC6
+    Utf8 "()Ljava/lang/String;"; // #27     at 0xD1
+    Utf8 "<clinit>"; // #28     at 0xE8
+    Utf8 "()V"; // #29     at 0xF3
+    Utf8 "<vnew>"; // #30     at 0xF9
+    Utf8 "()QCirc;"; // #31     at 0x0102
+    Utf8 "SourceFile"; // #32     at 0x010D
+    Utf8 "Circ.java"; // #33     at 0x011A
+    Utf8 "Circ"; // #34     at 0x0126
+    NameAndType #14 #15; // #35     at 0x012D
+    Utf8 "Circ2"; // #36     at 0x0132
+    NameAndType #16 #17; // #37     at 0x013A
+    Utf8 "BootstrapMethods"; // #38     at 0x013F
+    MethodHandle 6b #46; // #39     at 0x0152
+    NameAndType #22 #47; // #40     at 0x0156
+    NameAndType #24 #48; // #41     at 0x015B
+    NameAndType #26 #49; // #42     at 0x0160
+    NameAndType #18 #19; // #43     at 0x0165
+    NameAndType #12 #13; // #44     at 0x016A
+    Utf8 "java/lang/Object"; // #45     at 0x016F
+    Method #50 #51; // #46     at 0x0182
+    Utf8 "(QCirc;)I"; // #47     at 0x0187
+    Utf8 "(QCirc;Ljava/lang/Object;)Z"; // #48     at 0x0193
+    Utf8 "(QCirc;)Ljava/lang/String;"; // #49     at 0x01B1
+    class #52; // #50     at 0x01CE
+    NameAndType #53 #57; // #51     at 0x01D1
+    Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #52     at 0x01D6
+    Utf8 "makeBootstrapMethod"; // #53     at 0x01FF
+    class #59; // #54     at 0x0215
+    Utf8 "Lookup"; // #55     at 0x0218
+    Utf8 "InnerClasses"; // #56     at 0x0221
+    Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #57     at 0x0230
+    class #60; // #58     at 0x02A6
+    Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #59     at 0x02A9
+    Utf8 "java/lang/invoke/MethodHandles"; // #60     at 0x02D1
+  } // Constant Pool
+
+  0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ]
+  #1;// this_cpx
+  #11;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [3] { // fields
+    { // Member at 0x02FC
+      0x0018; // access
+      #12; // name_cpx
+      #13; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0304
+      0x0010; // access
+      #14; // name_cpx
+      #15; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x030C
+      0x0010; // access
+      #16; // name_cpx
+      #17; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [6] { // methods
+    { // Member at 0x0316
+      0x0008; // access
+      #18; // name_cpx
+      #19; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 45) { // Code at 0x031E
+          2; // max_stack
+          2; // max_locals
+          Bytes[13]{
+            0xCB00014C1A2B5FCC;
+            0x00024C2BB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 14) { // LineNumberTable at 0x033D
+              [3] { // LineNumberTable
+                0  12; //  at 0x0349
+                4  13; //  at 0x034D
+                11  14; //  at 0x0351
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0351
+      0x0011; // access
+      #22; // name_cpx
+      #23; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 31) { // Code at 0x0359
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00050000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x0372
+              [1] { // LineNumberTable
+                0  1; //  at 0x037E
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x037E
+      0x0011; // access
+      #24; // name_cpx
+      #25; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 32) { // Code at 0x0386
+          2; // max_stack
+          2; // max_locals
+          Bytes[8]{
+            0x2A2BBA00060000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x03A0
+              [1] { // LineNumberTable
+                0  1; //  at 0x03AC
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x03AC
+      0x0011; // access
+      #26; // name_cpx
+      #27; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 31) { // Code at 0x03B4
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00070000B0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x03CD
+              [1] { // LineNumberTable
+                0  1; //  at 0x03D9
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x03D9
+      0x0008; // access
+      #28; // name_cpx
+      #29; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 33) { // Code at 0x03E1
+          1; // max_stack
+          0; // max_locals
+          Bytes[9]{
+            0x1208B80009B3000A;
+            0xB1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x03FC
+              [1] { // LineNumberTable
+                0  2; //  at 0x0408
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0408
+      0x0008; // access
+      #30; // name_cpx
+      #31; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 58) { // Code at 0x0410
+          2; // max_stack
+          1; // max_locals
+          Bytes[22]{
+            0xCB00014B042A5FCC;
+            0x00024BCB00032A5F;
+            0xCC00044B2AB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 18) { // LineNumberTable at 0x0438
+              [4] { // LineNumberTable
+                0  6; //  at 0x0444
+                4  7; //  at 0x0448
+                11  8; //  at 0x044C
+                20  9; //  at 0x0450
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [3] { // Attributes
+    Attr(#32, 2) { // SourceFile at 0x0452
+      #33;
+    } // end SourceFile
+    ;
+    Attr(#56, 10) { // InnerClasses at 0x045A
+      [1] { // InnerClasses
+        #54 #58 #55 25; //  at 0x046A
+      }
+    } // end InnerClasses
+    ;
+    Attr(#38, 6) { // BootstrapMethods at 0x046A
+      [1] { // bootstrap_methods
+        {  //  bootstrap_method
+          #39; // bootstrap_method_ref
+          [0] { // bootstrap_arguments
+          }  //  bootstrap_arguments
+        }  //  bootstrap_method
+      }
+    } // end BootstrapMethods
+  } // Attributes
+} // end class Circ
+
+class Circ2 {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [60] { // Constant Pool
+    ; // first element is empty
+    class #33; // #1     at 0x0A
+    Field #1 #34; // #2     at 0x0D
+    class #35; // #3     at 0x12
+    Field #1 #36; // #4     at 0x15
+    InvokeDynamic 0s #39; // #5     at 0x1A
+    InvokeDynamic 0s #40; // #6     at 0x1F
+    InvokeDynamic 0s #41; // #7     at 0x24
+    Method #1 #42; // #8     at 0x29
+    Field #1 #43; // #9     at 0x2E
+    class #44; // #10     at 0x33
+    Utf8 "VT"; // #11     at 0x36
+    Utf8 "QCirc2;"; // #12     at 0x3B
+    Utf8 "char_v"; // #13     at 0x45
+    Utf8 "C"; // #14     at 0x4E
+    Utf8 "vv"; // #15     at 0x52
+    Utf8 "QCirc;"; // #16     at 0x57
+    Utf8 "makeCirc2"; // #17     at 0x60
+    Utf8 "(C)QCirc2;"; // #18     at 0x6C
+    Utf8 "Code"; // #19     at 0x79
+    Utf8 "LineNumberTable"; // #20     at 0x80
+    Utf8 "hashCode"; // #21     at 0x92
+    Utf8 "()I"; // #22     at 0x9D
+    Utf8 "equals"; // #23     at 0xA3
+    Utf8 "(Ljava/lang/Object;)Z"; // #24     at 0xAC
+    Utf8 "toString"; // #25     at 0xC4
+    Utf8 "()Ljava/lang/String;"; // #26     at 0xCF
+    Utf8 "<clinit>"; // #27     at 0xE6
+    Utf8 "()V"; // #28     at 0xF1
+    Utf8 "<vnew>"; // #29     at 0xF7
+    Utf8 "()QCirc2;"; // #30     at 0x0100
+    Utf8 "SourceFile"; // #31     at 0x010C
+    Utf8 "Circ2.java"; // #32     at 0x0119
+    Utf8 "Circ2"; // #33     at 0x0126
+    NameAndType #13 #14; // #34     at 0x012E
+    Utf8 "Circ"; // #35     at 0x0133
+    NameAndType #15 #16; // #36     at 0x013A
+    Utf8 "BootstrapMethods"; // #37     at 0x013F
+    MethodHandle 6b #45; // #38     at 0x0152
+    NameAndType #21 #46; // #39     at 0x0156
+    NameAndType #23 #47; // #40     at 0x015B
+    NameAndType #25 #48; // #41     at 0x0160
+    NameAndType #17 #18; // #42     at 0x0165
+    NameAndType #11 #12; // #43     at 0x016A
+    Utf8 "java/lang/Object"; // #44     at 0x016F
+    Method #49 #50; // #45     at 0x0182
+    Utf8 "(QCirc2;)I"; // #46     at 0x0187
+    Utf8 "(QCirc2;Ljava/lang/Object;)Z"; // #47     at 0x0194
+    Utf8 "(QCirc2;)Ljava/lang/String;"; // #48     at 0x01B3
+    class #51; // #49     at 0x01D1
+    NameAndType #52 #56; // #50     at 0x01D4
+    Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #51     at 0x01D9
+    Utf8 "makeBootstrapMethod"; // #52     at 0x0202
+    class #58; // #53     at 0x0218
+    Utf8 "Lookup"; // #54     at 0x021B
+    Utf8 "InnerClasses"; // #55     at 0x0224
+    Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #56     at 0x0233
+    class #59; // #57     at 0x02A9
+    Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #58     at 0x02AC
+    Utf8 "java/lang/invoke/MethodHandles"; // #59     at 0x02D4
+  } // Constant Pool
+
+  0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ]
+  #1;// this_cpx
+  #10;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [3] { // fields
+    { // Member at 0x02FF
+      0x0018; // access
+      #11; // name_cpx
+      #12; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0307
+      0x0010; // access
+      #13; // name_cpx
+      #14; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x030F
+      0x0010; // access
+      #15; // name_cpx
+      #16; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [6] { // methods
+    { // Member at 0x0319
+      0x0008; // access
+      #17; // name_cpx
+      #18; // sig_cpx
+      [1] { // Attributes
+        Attr(#19, 45) { // Code at 0x0321
+          2; // max_stack
+          2; // max_locals
+          Bytes[13]{
+            0xCB00014C1A2B5FCC;
+            0x00024C2BB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#20, 14) { // LineNumberTable at 0x0340
+              [3] { // LineNumberTable
+                0  12; //  at 0x034C
+                4  13; //  at 0x0350
+                11  14; //  at 0x0354
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0354
+      0x0011; // access
+      #21; // name_cpx
+      #22; // sig_cpx
+      [1] { // Attributes
+        Attr(#19, 31) { // Code at 0x035C
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00050000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#20, 6) { // LineNumberTable at 0x0375
+              [1] { // LineNumberTable
+                0  1; //  at 0x0381
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0381
+      0x0011; // access
+      #23; // name_cpx
+      #24; // sig_cpx
+      [1] { // Attributes
+        Attr(#19, 32) { // Code at 0x0389
+          2; // max_stack
+          2; // max_locals
+          Bytes[8]{
+            0x2A2BBA00060000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#20, 6) { // LineNumberTable at 0x03A3
+              [1] { // LineNumberTable
+                0  1; //  at 0x03AF
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x03AF
+      0x0011; // access
+      #25; // name_cpx
+      #26; // sig_cpx
+      [1] { // Attributes
+        Attr(#19, 31) { // Code at 0x03B7
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00070000B0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#20, 6) { // LineNumberTable at 0x03D0
+              [1] { // LineNumberTable
+                0  1; //  at 0x03DC
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x03DC
+      0x0008; // access
+      #27; // name_cpx
+      #28; // sig_cpx
+      [1] { // Attributes
+        Attr(#19, 34) { // Code at 0x03E4
+          1; // max_stack
+          0; // max_locals
+          Bytes[10]{
+            0x110123B80008B300;
+            0x09B1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#20, 6) { // LineNumberTable at 0x0400
+              [1] { // LineNumberTable
+                0  2; //  at 0x040C
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x040C
+      0x0008; // access
+      #29; // name_cpx
+      #30; // sig_cpx
+      [1] { // Attributes
+        Attr(#19, 59) { // Code at 0x0414
+          2; // max_stack
+          1; // max_locals
+          Bytes[23]{
+            0xCB00014B107A2A5F;
+            0xCC00024BCB00032A;
+            0x5FCC00044B2AB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#20, 18) { // LineNumberTable at 0x043D
+              [4] { // LineNumberTable
+                0  6; //  at 0x0449
+                4  7; //  at 0x044D
+                12  8; //  at 0x0451
+                21  9; //  at 0x0455
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [3] { // Attributes
+    Attr(#31, 2) { // SourceFile at 0x0457
+      #32;
+    } // end SourceFile
+    ;
+    Attr(#55, 10) { // InnerClasses at 0x045F
+      [1] { // InnerClasses
+        #53 #57 #54 25; //  at 0x046F
+      }
+    } // end InnerClasses
+    ;
+    Attr(#37, 6) { // BootstrapMethods at 0x046F
+      [1] { // bootstrap_methods
+        {  //  bootstrap_method
+          #38; // bootstrap_method_ref
+          [0] { // bootstrap_arguments
+          }  //  bootstrap_arguments
+        }  //  bootstrap_method
+      }
+    } // end BootstrapMethods
+  } // Attributes
+} // end class Circ2
+
+//////////////////////////////////////////////////////////////////////
+
+// Inline types CircStaticA and CircStaticB have static fields of each other's
+// type.  This should cause a ClassCircularityError exception when one of them
+// is being loaded.
+//
+// The inline types are based on these two Java classes:
+//
+// final inline class CircStaticA {
+//     static final CircStaticA VT = makeCircStaticA(0x01234567);
+//     final int int_v;
+//     static final CircStaticB v2 = CircStaticB.default;
+//     CircStaticA() {
+//         int_v = 1;
+//     }
+//     static CircStaticA makeCircStaticA(int x) {
+//         CircStaticA v = CircStaticA.default;
+//         v = __WithField(v.int_v, x);
+//         return v;
+//     }
+// }
+//----------------------------------------------------------------
+// final inline class CircStaticB {
+//     static final CircStaticB VT = makeCircStaticB(0x01234567);
+//     final int int_v;
+//     static final CircStaticA v2 = CircStaticA.default;
+//     CircStaticB() {
+//         int_v = 1;
+//     }
+//     static CircStaticB makeCircStaticB(int x) {
+//         CircStaticB v = CircStaticB.default;
+//         v = __WithField(v.int_v, x);
+//         return v;
+//     }
+// }
+
+class CircStaticA {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [61] { // Constant Pool
+    ; // first element is empty
+    class #34; // #1     at 0x0A
+    Field #1 #35; // #2     at 0x0D
+    InvokeDynamic 0s #38; // #3     at 0x12
+    InvokeDynamic 0s #39; // #4     at 0x17
+    InvokeDynamic 0s #40; // #5     at 0x1C
+    int 0x01234567; // #6     at 0x21
+    Method #1 #41; // #7     at 0x26
+    Field #1 #42; // #8     at 0x2B
+    class #43; // #9     at 0x30
+    Field #1 #44; // #10     at 0x33
+    class #45; // #11     at 0x38
+    Utf8 "VT"; // #12     at 0x3B
+    Utf8 "QCircStaticA;"; // #13     at 0x40
+    Utf8 "int_v"; // #14     at 0x50
+    Utf8 "I"; // #15     at 0x58
+    Utf8 "v2"; // #16     at 0x5C
+    Utf8 "QCircStaticB;"; // #17     at 0x61
+    Utf8 "makeCircStaticA"; // #18     at 0x71
+    Utf8 "(I)QCircStaticA;"; // #19     at 0x83
+    Utf8 "Code"; // #20     at 0x96
+    Utf8 "LineNumberTable"; // #21     at 0x9D
+    Utf8 "hashCode"; // #22     at 0xAF
+    Utf8 "()I"; // #23     at 0xBA
+    Utf8 "equals"; // #24     at 0xC0
+    Utf8 "(Ljava/lang/Object;)Z"; // #25     at 0xC9
+    Utf8 "toString"; // #26     at 0xE1
+    Utf8 "()Ljava/lang/String;"; // #27     at 0xEC
+    Utf8 "<clinit>"; // #28     at 0x0103
+    Utf8 "()V"; // #29     at 0x010E
+    Utf8 "<vnew>"; // #30     at 0x0114
+    Utf8 "()QCircStaticA;"; // #31     at 0x011D
+    Utf8 "SourceFile"; // #32     at 0x012F
+    Utf8 "CircStaticA.java"; // #33     at 0x013C
+    Utf8 "CircStaticA"; // #34     at 0x014F
+    NameAndType #14 #15; // #35     at 0x015D
+    Utf8 "BootstrapMethods"; // #36     at 0x0162
+    MethodHandle 6b #46; // #37     at 0x0175
+    NameAndType #22 #47; // #38     at 0x0179
+    NameAndType #24 #48; // #39     at 0x017E
+    NameAndType #26 #49; // #40     at 0x0183
+    NameAndType #18 #19; // #41     at 0x0188
+    NameAndType #12 #13; // #42     at 0x018D
+    Utf8 "CircStaticB"; // #43     at 0x0192
+    NameAndType #16 #17; // #44     at 0x01A0
+    Utf8 "java/lang/Object"; // #45     at 0x01A5
+    Method #50 #51; // #46     at 0x01B8
+    Utf8 "(QCircStaticA;)I"; // #47     at 0x01BD
+    Utf8 "(QCircStaticA;Ljava/lang/Object;)Z"; // #48     at 0x01D0
+    Utf8 "(QCircStaticA;)Ljava/lang/String;"; // #49     at 0x01F5
+    class #52; // #50     at 0x0219
+    NameAndType #53 #57; // #51     at 0x021C
+    Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #52     at 0x0221
+    Utf8 "makeBootstrapMethod"; // #53     at 0x024A
+    class #59; // #54     at 0x0260
+    Utf8 "Lookup"; // #55     at 0x0263
+    Utf8 "InnerClasses"; // #56     at 0x026C
+    Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #57     at 0x027B
+    class #60; // #58     at 0x02F1
+    Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #59     at 0x02F4
+    Utf8 "java/lang/invoke/MethodHandles"; // #60     at 0x031C
+  } // Constant Pool
+
+  0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ]
+  #1;// this_cpx
+  #11;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [3] { // fields
+    { // Member at 0x0347
+      0x0018; // access
+      #12; // name_cpx
+      #13; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x034F
+      0x0010; // access
+      #14; // name_cpx
+      #15; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0357
+      0x0018; // access
+      #16; // name_cpx
+      #17; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [6] { // methods
+    { // Member at 0x0361
+      0x0008; // access
+      #18; // name_cpx
+      #19; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 45) { // Code at 0x0369
+          2; // max_stack
+          2; // max_locals
+          Bytes[13]{
+            0xCB00014C1A2B5FCC;
+            0x00024C2BB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 14) { // LineNumberTable at 0x0388
+              [3] { // LineNumberTable
+                0  11; //  at 0x0394
+                4  12; //  at 0x0398
+                11  13; //  at 0x039C
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x039C
+      0x0011; // access
+      #22; // name_cpx
+      #23; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 31) { // Code at 0x03A4
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00030000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x03BD
+              [1] { // LineNumberTable
+                0  1; //  at 0x03C9
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x03C9
+      0x0011; // access
+      #24; // name_cpx
+      #25; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 32) { // Code at 0x03D1
+          2; // max_stack
+          2; // max_locals
+          Bytes[8]{
+            0x2A2BBA00040000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x03EB
+              [1] { // LineNumberTable
+                0  1; //  at 0x03F7
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x03F7
+      0x0011; // access
+      #26; // name_cpx
+      #27; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 31) { // Code at 0x03FF
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00050000B0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x0418
+              [1] { // LineNumberTable
+                0  1; //  at 0x0424
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0424
+      0x0008; // access
+      #28; // name_cpx
+      #29; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 43) { // Code at 0x042C
+          1; // max_stack
+          0; // max_locals
+          Bytes[15]{
+            0x1206B80007B30008;
+            0xCB0009B3000AB1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 10) { // LineNumberTable at 0x044D
+              [2] { // LineNumberTable
+                0  2; //  at 0x0459
+                8  4; //  at 0x045D
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x045D
+      0x0008; // access
+      #30; // name_cpx
+      #31; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 45) { // Code at 0x0465
+          2; // max_stack
+          1; // max_locals
+          Bytes[13]{
+            0xCB00014B042A5FCC;
+            0x00024B2AB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 14) { // LineNumberTable at 0x0484
+              [3] { // LineNumberTable
+                0  6; //  at 0x0490
+                4  7; //  at 0x0494
+                11  8; //  at 0x0498
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [3] { // Attributes
+    Attr(#32, 2) { // SourceFile at 0x049A
+      #33;
+    } // end SourceFile
+    ;
+    Attr(#56, 10) { // InnerClasses at 0x04A2
+      [1] { // InnerClasses
+        #54 #58 #55 25; //  at 0x04B2
+      }
+    } // end InnerClasses
+    ;
+    Attr(#36, 6) { // BootstrapMethods at 0x04B2
+      [1] { // bootstrap_methods
+        {  //  bootstrap_method
+          #37; // bootstrap_method_ref
+          [0] { // bootstrap_arguments
+          }  //  bootstrap_arguments
+        }  //  bootstrap_method
+      }
+    } // end BootstrapMethods
+  } // Attributes
+} // end class CircStaticA
+
+class CircStaticB {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [61] { // Constant Pool
+    ; // first element is empty
+    class #34; // #1     at 0x0A
+    Field #1 #35; // #2     at 0x0D
+    InvokeDynamic 0s #38; // #3     at 0x12
+    InvokeDynamic 0s #39; // #4     at 0x17
+    InvokeDynamic 0s #40; // #5     at 0x1C
+    int 0x01234567; // #6     at 0x21
+    Method #1 #41; // #7     at 0x26
+    Field #1 #42; // #8     at 0x2B
+    class #43; // #9     at 0x30
+    Field #1 #44; // #10     at 0x33
+    class #45; // #11     at 0x38
+    Utf8 "VT"; // #12     at 0x3B
+    Utf8 "QCircStaticB;"; // #13     at 0x40
+    Utf8 "int_v"; // #14     at 0x50
+    Utf8 "I"; // #15     at 0x58
+    Utf8 "v2"; // #16     at 0x5C
+    Utf8 "QCircStaticA;"; // #17     at 0x61
+    Utf8 "makeCircStaticB"; // #18     at 0x71
+    Utf8 "(I)QCircStaticB;"; // #19     at 0x83
+    Utf8 "Code"; // #20     at 0x96
+    Utf8 "LineNumberTable"; // #21     at 0x9D
+    Utf8 "hashCode"; // #22     at 0xAF
+    Utf8 "()I"; // #23     at 0xBA
+    Utf8 "equals"; // #24     at 0xC0
+    Utf8 "(Ljava/lang/Object;)Z"; // #25     at 0xC9
+    Utf8 "toString"; // #26     at 0xE1
+    Utf8 "()Ljava/lang/String;"; // #27     at 0xEC
+    Utf8 "<clinit>"; // #28     at 0x0103
+    Utf8 "()V"; // #29     at 0x010E
+    Utf8 "<vnew>"; // #30     at 0x0114
+    Utf8 "()QCircStaticB;"; // #31     at 0x011D
+    Utf8 "SourceFile"; // #32     at 0x012F
+    Utf8 "CircStaticB.java"; // #33     at 0x013C
+    Utf8 "CircStaticB"; // #34     at 0x014F
+    NameAndType #14 #15; // #35     at 0x015D
+    Utf8 "BootstrapMethods"; // #36     at 0x0162
+    MethodHandle 6b #46; // #37     at 0x0175
+    NameAndType #22 #47; // #38     at 0x0179
+    NameAndType #24 #48; // #39     at 0x017E
+    NameAndType #26 #49; // #40     at 0x0183
+    NameAndType #18 #19; // #41     at 0x0188
+    NameAndType #12 #13; // #42     at 0x018D
+    Utf8 "CircStaticA"; // #43     at 0x0192
+    NameAndType #16 #17; // #44     at 0x01A0
+    Utf8 "java/lang/Object"; // #45     at 0x01A5
+    Method #50 #51; // #46     at 0x01B8
+    Utf8 "(QCircStaticB;)I"; // #47     at 0x01BD
+    Utf8 "(QCircStaticB;Ljava/lang/Object;)Z"; // #48     at 0x01D0
+    Utf8 "(QCircStaticB;)Ljava/lang/String;"; // #49     at 0x01F5
+    class #52; // #50     at 0x0219
+    NameAndType #53 #57; // #51     at 0x021C
+    Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #52     at 0x0221
+    Utf8 "makeBootstrapMethod"; // #53     at 0x024A
+    class #59; // #54     at 0x0260
+    Utf8 "Lookup"; // #55     at 0x0263
+    Utf8 "InnerClasses"; // #56     at 0x026C
+    Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #57     at 0x027B
+    class #60; // #58     at 0x02F1
+    Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #59     at 0x02F4
+    Utf8 "java/lang/invoke/MethodHandles"; // #60     at 0x031C
+  } // Constant Pool
+
+  0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ]
+  #1;// this_cpx
+  #11;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [3] { // fields
+    { // Member at 0x0347
+      0x0018; // access
+      #12; // name_cpx
+      #13; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x034F
+      0x0010; // access
+      #14; // name_cpx
+      #15; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0357
+      0x0018; // access
+      #16; // name_cpx
+      #17; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [6] { // methods
+    { // Member at 0x0361
+      0x0008; // access
+      #18; // name_cpx
+      #19; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 45) { // Code at 0x0369
+          2; // max_stack
+          2; // max_locals
+          Bytes[13]{
+            0xCB00014C1A2B5FCC;
+            0x00024C2BB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 14) { // LineNumberTable at 0x0388
+              [3] { // LineNumberTable
+                0  11; //  at 0x0394
+                4  12; //  at 0x0398
+                11  13; //  at 0x039C
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x039C
+      0x0011; // access
+      #22; // name_cpx
+      #23; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 31) { // Code at 0x03A4
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00030000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x03BD
+              [1] { // LineNumberTable
+                0  1; //  at 0x03C9
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x03C9
+      0x0011; // access
+      #24; // name_cpx
+      #25; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 32) { // Code at 0x03D1
+          2; // max_stack
+          2; // max_locals
+          Bytes[8]{
+            0x2A2BBA00040000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x03EB
+              [1] { // LineNumberTable
+                0  1; //  at 0x03F7
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x03F7
+      0x0011; // access
+      #26; // name_cpx
+      #27; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 31) { // Code at 0x03FF
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00050000B0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 6) { // LineNumberTable at 0x0418
+              [1] { // LineNumberTable
+                0  1; //  at 0x0424
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0424
+      0x0008; // access
+      #28; // name_cpx
+      #29; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 43) { // Code at 0x042C
+          1; // max_stack
+          0; // max_locals
+          Bytes[15]{
+            0x1206B80007B30008;
+            0xCB0009B3000AB1;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 10) { // LineNumberTable at 0x044D
+              [2] { // LineNumberTable
+                0  2; //  at 0x0459
+                8  4; //  at 0x045D
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x045D
+      0x0008; // access
+      #30; // name_cpx
+      #31; // sig_cpx
+      [1] { // Attributes
+        Attr(#20, 45) { // Code at 0x0465
+          2; // max_stack
+          1; // max_locals
+          Bytes[13]{
+            0xCB00014B042A5FCC;
+            0x00024B2AB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#21, 14) { // LineNumberTable at 0x0484
+              [3] { // LineNumberTable
+                0  6; //  at 0x0490
+                4  7; //  at 0x0494
+                11  8; //  at 0x0498
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [3] { // Attributes
+    Attr(#32, 2) { // SourceFile at 0x049A
+      #33;
+    } // end SourceFile
+    ;
+    Attr(#56, 10) { // InnerClasses at 0x04A2
+      [1] { // InnerClasses
+        #54 #58 #55 25; //  at 0x04B2
+      }
+    } // end InnerClasses
+    ;
+    Attr(#36, 6) { // BootstrapMethods at 0x04B2
+      [1] { // bootstrap_methods
+        {  //  bootstrap_method
+          #37; // bootstrap_method_ref
+          [0] { // bootstrap_arguments
+          }  //  bootstrap_arguments
+        }  //  bootstrap_method
+      }
+    } // end BootstrapMethods
+  } // Attributes
+} // end class CircStaticB
+
+//////////////////////////////////////////////////////////////////////
+
+// Test that an inline type cannot be Cloneable.
+//
+// final inline class ValueCloneable implements Cloneable {
+//    final int field;
+//    private ValueCloneable() { field = 0; }
+//}
+
+class ValueCloneable {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [46] { // Constant Pool
+    ; // first element is empty
+    class #22; // #1     at 0x0A
+    Field #1 #23; // #2     at 0x0D
+    InvokeDynamic 0s #26; // #3     at 0x12
+    InvokeDynamic 0s #27; // #4     at 0x17
+    InvokeDynamic 0s #28; // #5     at 0x1C
+    class #29; // #6     at 0x21
+    class #30; // #7     at 0x24
+    Utf8 "field"; // #8     at 0x27
+    Utf8 "I"; // #9     at 0x2F
+    Utf8 "hashCode"; // #10     at 0x33
+    Utf8 "()I"; // #11     at 0x3E
+    Utf8 "Code"; // #12     at 0x44
+    Utf8 "LineNumberTable"; // #13     at 0x4B
+    Utf8 "equals"; // #14     at 0x5D
+    Utf8 "(Ljava/lang/Object;)Z"; // #15     at 0x66
+    Utf8 "toString"; // #16     at 0x7E
+    Utf8 "()Ljava/lang/String;"; // #17     at 0x89
+    Utf8 "<vnew>"; // #18     at 0xA0
+    Utf8 "()QValueCloneable;"; // #19     at 0xA9
+    Utf8 "SourceFile"; // #20     at 0xBE
+    Utf8 "ValueCloneable.java"; // #21     at 0xCB
+    Utf8 "ValueCloneable"; // #22     at 0xE1
+    NameAndType #8 #9; // #23     at 0xF2
+    Utf8 "BootstrapMethods"; // #24     at 0xF7
+    MethodHandle 6b #31; // #25     at 0x010A
+    NameAndType #10 #32; // #26     at 0x010E
+    NameAndType #14 #33; // #27     at 0x0113
+    NameAndType #16 #34; // #28     at 0x0118
+    Utf8 "java/lang/Object"; // #29     at 0x011D
+    Utf8 "java/lang/Cloneable"; // #30     at 0x0130
+    Method #35 #36; // #31     at 0x0146
+    Utf8 "(QValueCloneable;)I"; // #32     at 0x014B
+    Utf8 "(QValueCloneable;Ljava/lang/Object;)Z"; // #33     at 0x0161
+    Utf8 "(QValueCloneable;)Ljava/lang/String;"; // #34     at 0x0189
+    class #37; // #35     at 0x01B0
+    NameAndType #38 #42; // #36     at 0x01B3
+    Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #37     at 0x01B8
+    Utf8 "makeBootstrapMethod"; // #38     at 0x01E1
+    class #44; // #39     at 0x01F7
+    Utf8 "Lookup"; // #40     at 0x01FA
+    Utf8 "InnerClasses"; // #41     at 0x0203
+    Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #42     at 0x0212
+    class #45; // #43     at 0x0288
+    Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #44     at 0x028B
+    Utf8 "java/lang/invoke/MethodHandles"; // #45     at 0x02B3
+  } // Constant Pool
+
+  0x0850; // access [ ACC_VALUE ACC_PRIMITIVE ACC_FINAL ]
+  #1;// this_cpx
+  #6;// super_cpx
+
+  [1] { // Interfaces
+    #7;
+  } // Interfaces
+
+  [1] { // fields
+    { // Member at 0x02E0
+      0x0010; // access
+      #8; // name_cpx
+      #9; // sig_cpx
+      [0] { // Attributes
+      } // Attributes
+    } // Member
+  } // fields
+
+  [4] { // methods
+    { // Member at 0x02EA
+      0x0011; // access
+      #10; // name_cpx
+      #11; // sig_cpx
+      [1] { // Attributes
+        Attr(#12, 31) { // Code at 0x02F2
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00030000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#13, 6) { // LineNumberTable at 0x030B
+              [1] { // LineNumberTable
+                0  1; //  at 0x0317
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0317
+      0x0011; // access
+      #14; // name_cpx
+      #15; // sig_cpx
+      [1] { // Attributes
+        Attr(#12, 32) { // Code at 0x031F
+          2; // max_stack
+          2; // max_locals
+          Bytes[8]{
+            0x2A2BBA00040000AC;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#13, 6) { // LineNumberTable at 0x0339
+              [1] { // LineNumberTable
+                0  1; //  at 0x0345
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0345
+      0x0011; // access
+      #16; // name_cpx
+      #17; // sig_cpx
+      [1] { // Attributes
+        Attr(#12, 31) { // Code at 0x034D
+          1; // max_stack
+          1; // max_locals
+          Bytes[7]{
+            0x2ABA00050000B0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#13, 6) { // LineNumberTable at 0x0366
+              [1] { // LineNumberTable
+                0  1; //  at 0x0372
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+    ;
+    { // Member at 0x0372
+      0x0008; // access
+      #18; // name_cpx
+      #19; // sig_cpx
+      [1] { // Attributes
+        Attr(#12, 37) { // Code at 0x037A
+          2; // max_stack
+          1; // max_locals
+          Bytes[13]{
+            0xCB00014B032A5FCC;
+            0x00024B2AB0;
+          };
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#13, 6) { // LineNumberTable at 0x0399
+              [1] { // LineNumberTable
+                0  3; //  at 0x03A5
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    } // Member
+  } // methods
+
+  [3] { // Attributes
+    Attr(#20, 2) { // SourceFile at 0x03A7
+      #21;
+    } // end SourceFile
+    ;
+    Attr(#41, 10) { // InnerClasses at 0x03AF
+      [1] { // InnerClasses
+        #39 #43 #40 25; //  at 0x03BF
+      }
+    } // end InnerClasses
+    ;
+    Attr(#24, 6) { // BootstrapMethods at 0x03BF
+      [1] { // bootstrap_methods
+        {  //  bootstrap_method
+          #25; // bootstrap_method_ref
+          [0] { // bootstrap_arguments
+          }  //  bootstrap_arguments
+        }  //  bootstrap_method
+      }
+    } // end BootstrapMethods
+  } // Attributes
+} // end class ValueCloneable
+
+
+// Test that a class with an old class file version cannot contain a Q signature.
+class OldClassWithQSig {
+  0xCAFEBABE;
+  0; // minor version
+  52; // version
+  [29] { // Constant Pool
+    ; // first element is empty
+    Utf8 "OldClassWithQSig"; // #1     at 0x0A
+    class #1; // #2     at 0x1A
+    Utf8 "java/lang/Object"; // #3     at 0x1D
+    class #3; // #4     at 0x30
+    Utf8 "inlineclasses.scala"; // #5     at 0x33
+    Utf8 "Lscala/reflect/ScalaSignature;"; // #6     at 0x49
+    Utf8 "bytes"; // #7     at 0x6A
+    Utf8 "i1QB\t!AAC\bI\t\tQ!!Q\nEAQ!YQ\"T=J]2Lg.Z\"mCN(\"q*W;z}\r1C\n!\tQQ\"D\fa!B:dC2\fB\b\f\te.*fM\t.F!\tQ!#\tJ;%Aj]&$h\b3AA!)qba#"; // #8     at 0x72
+    Utf8 "i"; // #9     at 0x0128
+    Utf8 "I"; // #10     at 0x012C
+    Utf8 "()I"; // #11     at 0x0130
+    NameAndType #9 #10; // #12     at 0x0136
+    Field #2 #12; // #13     at 0x013B
+    Utf8 "this"; // #14     at 0x0140
+    Utf8 "QOldClassWithQSig;"; // #15     at 0x0147
+    Utf8 "<init>"; // #16     at 0x0159
+    Utf8 "(I)V"; // #17     at 0x0162
+    Utf8 "()V"; // #18     at 0x0169
+    NameAndType #16 #18; // #19     at 0x016F
+    Method #4 #19; // #20     at 0x0174
+    Utf8 "Code"; // #21     at 0x0179
+    Utf8 "LineNumberTable"; // #22     at 0x0180
+    Utf8 "LocalVariableTable"; // #23     at 0x0192
+    Utf8 "MethodParameters"; // #24     at 0x01A7
+    Utf8 "SourceFile"; // #25     at 0x01BA
+    Utf8 "RuntimeVisibleAnnotations"; // #26     at 0x01C7
+    Utf8 "ScalaInlineInfo"; // #27     at 0x01E3
+    Utf8 "ScalaSig"; // #28     at 0x01F5
+  } // Constant Pool
+
+  0x0121; // access [ ACC_PUBLIC ACC_SUPER ]
+  #2;// this_cpx
+  #4;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [1] { // Fields
+    {  // field at 0x020A
+      0x0012; // access
+      #9; // name_index       : i
+      #10; // descriptor_index : I
+      [0] { // Attributes
+      } // Attributes
+    }
+  } // Fields
+
+  [2] { // Methods
+    {  // method at 0x0214
+      0x0001; // access
+      #9; // name_index       : i
+      #11; // descriptor_index : ()I
+      [1] { // Attributes
+        Attr(#21, 47) { // Code at 0x021C
+          1; // max_stack
+          1; // max_locals
+          Bytes[5]{
+            0x2AB4000DAC;
+          }
+          [0] { // Traps
+          } // end Traps
+          [2] { // Attributes
+            Attr(#22, 6) { // LineNumberTable at 0x0233
+              [1] { // line_number_table
+                0  1; //  at 0x023F
+              }
+            } // end LineNumberTable
+            ;
+            Attr(#23, 12) { // LocalVariableTable at 0x023F
+              [1] { // LocalVariableTable
+                0 5 14 15 0; //  at 0x0251
+              }
+            } // end LocalVariableTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    }
+    ;
+    {  // method at 0x0251
+      0x0001; // access
+      #16; // name_index       : <init>
+      #17; // descriptor_index : (I)V
+      [2] { // Attributes
+        Attr(#21, 70) { // Code at 0x0259
+          2; // max_stack
+          2; // max_locals
+          Bytes[10]{
+            0x2A1BB5000D2AB700;
+            0x14B1;
+          }
+          [0] { // Traps
+          } // end Traps
+          [2] { // Attributes
+            Attr(#22, 14) { // LineNumberTable at 0x0275
+              [3] { // line_number_table
+                0  1; //  at 0x0281
+                5  3; //  at 0x0285
+                9  1; //  at 0x0289
+              }
+            } // end LineNumberTable
+            ;
+            Attr(#23, 22) { // LocalVariableTable at 0x0289
+              [2] { // LocalVariableTable
+                0 10 14 15 0; //  at 0x029B
+                0 10 9 10 1; //  at 0x02A5
+              }
+            } // end LocalVariableTable
+          } // Attributes
+        } // end Code
+        ;
+        Attr(#24, 5) { // MethodParameters at 0x02A5
+          [1]b { // MethodParameters
+            #9  0x0010; //  at 0x02B0
+          }
+        } // end MethodParameters
+      } // Attributes
+    }
+  } // Methods
+
+  [4] { // Attributes
+    Attr(#25, 2) { // SourceFile at 0x02B2
+      #5;
+    } // end SourceFile
+    ;
+    Attr(#26, 11) { // RuntimeVisibleAnnotations at 0x02BA
+      [1] { // annotations
+        {  //  annotation
+          #6;
+          [1] { // element_value_pairs
+            {  //  element value pair
+              #7;
+              {  //  element_value
+                's';
+                #8;
+              }  //  element_value
+            }  //  element value pair
+          }  //  element_value_pairs
+        }  //  annotation
+      }
+    } // end RuntimeVisibleAnnotations
+    ;
+    Attr(#27, 14) { // ScalaInlineInfo at 0x02CB
+      0x0100000200100011;
+      0x000009000B00;
+    } // end ScalaInlineInfo
+    ;
+    Attr(#28, 3) { // ScalaSig at 0x02DF
+      0x050200;
+    } // end ScalaSig
+  } // Attributes
+} // end class OldClassWithQSig
+
+
+// Test that a class with an old class file version cannot contain an array Q signature.
+class OldClassWithQArraySig {
+  0xCAFEBABE;
+  0; // minor version
+  52; // version
+  [20] { // Constant Pool
+    ; // first element is empty
+    Method #2 #3; // #1     at 0x0A
+    class #4; // #2     at 0x0F
+    NameAndType #5 #6; // #3     at 0x12
+    Utf8 "java/lang/Object"; // #4     at 0x17
+    Utf8 "<init>"; // #5     at 0x2A
+    Utf8 "()V"; // #6     at 0x33
+    class #8; // #7     at 0x39
+    Utf8 "java/lang/Integer"; // #8     at 0x3C
+    Field #10 #11; // #9     at 0x50
+    class #12; // #10     at 0x55
+    NameAndType #13 #14; // #11     at 0x58
+    Utf8 "OldClassWithQArraySig"; // #12     at 0x5D
+    Utf8 "ia"; // #13     at 0x65
+    Utf8 "[Qjava/lang/Integer;"; // #14     at 0x6A
+    Utf8 "Code"; // #15     at 0x81
+    Utf8 "LineNumberTable"; // #16     at 0x88
+    Utf8 "runIt"; // #17     at 0x9A
+    Utf8 "SourceFile"; // #18     at 0xA2
+    Utf8 "OldClassWithQArraySig.java"; // #19     at 0xAF
+  } // Constant Pool
+
+  0x0021; // access [ ACC_PUBLIC ACC_SUPER ]
+  #10;// this_cpx
+  #2;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [1] { // Fields
+    {  // field at 0xC6
+      0x0000; // access
+      #13; // name_index       : ia
+      #14; // descriptor_index : [Qjava/lang/Integer;
+      [0] { // Attributes
+      } // Attributes
+    }
+  } // Fields
+
+  [2] { // Methods
+    {  // method at 0xD0
+      0x0001; // access
+      #5; // name_index       : <init>
+      #6; // descriptor_index : ()V
+      [1] { // Attributes
+        Attr(#15, 29) { // Code at 0xD8
+          1; // max_stack
+          1; // max_locals
+          Bytes[5]{
+            0x2AB70001B1;
+          }
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#16, 6) { // LineNumberTable at 0xEF
+              [1] { // line_number_table
+                0  1; //  at 0xFB
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    }
+    ;
+    {  // method at 0xFB
+      0x0001; // access
+      #17; // name_index       : runIt
+      #6; // descriptor_index : ()V
+      [1] { // Attributes
+        Attr(#15, 37) { // Code at 0x0103
+          2; // max_stack
+          1; // max_locals
+          Bytes[9]{
+            0x2A05BD0007B50009;
+            0xB1;
+          }
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#16, 10) { // LineNumberTable at 0x011E
+              [2] { // line_number_table
+                0  6; //  at 0x012A
+                8  7; //  at 0x012E
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    }
+  } // Methods
+
+  [1] { // Attributes
+    Attr(#18, 2) { // SourceFile at 0x0130
+      #19;
+    } // end SourceFile
+  } // Attributes
+} // end class OldClassWithQArraySig
+
+
+// This class has a super_cpx of zero.  This should cause a ClassFormatError
+// exception when this class is loaded.
+class SuperIsZero {
+  0xCAFEBABE;
+  0; // minor version
+  66; // version
+  [15] { // Constant Pool
+    ; // first element is empty
+    class #2; // #1     at 0x0A
+    Utf8 "SuperIsZero"; // #2     at 0x0D
+    Field #1 #4; // #3     at 0x1A
+    NameAndType #5 #6; // #4     at 0x1F
+    Utf8 "x"; // #5     at 0x24
+    Utf8 "I"; // #6     at 0x28
+    class #8; // #7     at 0x2C
+    Utf8 "java/lang/Object"; // #8     at 0x2F
+    Utf8 "<init>"; // #9     at 0x42
+    Utf8 "()QSuperIsZero;"; // #10     at 0x4B
+    Utf8 "Code"; // #11     at 0x5C
+    Utf8 "LineNumberTable"; // #12     at 0x63
+    Utf8 "SourceFile"; // #13     at 0x75
+    Utf8 "SuperIsZero.java"; // #14     at 0x82
+  } // Constant Pool
+
+  0x0051; // access [ ACC_VALUE ACC_PUBLIC ACC_FINAL ]
+  #1;// this_cpx
+  #0;// super_cpx // !!! changed 7 to 0
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [1] { // Fields
+    {  // field at 0x9E
+      0x0010; // access
+      #5; // name_index       : x
+      #6; // descriptor_index : I
+      [0] { // Attributes
+      } // Attributes
+    }
+  } // Fields
+
+  [1] { // Methods
+    {  // method at 0xA8
+      0x0009; // access
+      #9; // name_index       : <init>
+      #10; // descriptor_index : ()QSuperIsZero;
+      [1] { // Attributes
+        Attr(#11, 45) { // Code at 0xB0
+          2; // max_stack
+          1; // max_locals
+          Bytes[13]{
+            0xCB00014B082A5FCC;
+            0x00034B2AB0;
+          }
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#12, 14) { // LineNumberTable at 0xCF
+              [3] { // line_number_table
+                0  4; //  at 0xDB
+                4  5; //  at 0xDF
+                11  6; //  at 0xE3
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    }
+  } // Methods
+
+  [1] { // Attributes
+    Attr(#13, 2) { // SourceFile at 0xE5
+      #14;
+    } // end SourceFile
+  } // Attributes
+} // end class SuperIsZero
+
+
+// This class file tests that a ClassFormatError exception is thrown for an old
+// class file (version 49) containing a Q signature.  This file is based on the
+// following Java code, except the signature for method callDot() was changed
+// to "(QDot;)V";.
+/*
+public class QInOldClass {
+
+    public static void callDot(Dot d) {
+        System.out.println("Hi Dot");
+    }
+
+}
+*/
+class QInOldClass {
+  0xCAFEBABE;
+  0; // minor version
+  49; // version
+  [32] { // Constant Pool
+    ; // first element is empty
+    Method #2 #3; // #1     at 0x0A
+    class #4; // #2     at 0x0F
+    NameAndType #5 #6; // #3     at 0x12
+    Utf8 "java/lang/Object"; // #4     at 0x17
+    Utf8 "<init>"; // #5     at 0x2A
+    Utf8 "()V"; // #6     at 0x33
+    Field #8 #9; // #7     at 0x39
+    class #10; // #8     at 0x3E
+    NameAndType #11 #12; // #9     at 0x41
+    Utf8 "java/lang/System"; // #10     at 0x46
+    Utf8 "out"; // #11     at 0x59
+    Utf8 "Ljava/io/PrintStream;"; // #12     at 0x5F
+    String #14; // #13     at 0x77
+    Utf8 "Hi Dot"; // #14     at 0x7A
+    Method #16 #17; // #15     at 0x83
+    class #18; // #16     at 0x88
+    NameAndType #19 #20; // #17     at 0x8B
+    Utf8 "java/io/PrintStream"; // #18     at 0x90
+    Utf8 "println"; // #19     at 0xA6
+    Utf8 "(Ljava/lang/String;)V"; // #20     at 0xB0
+    class #22; // #21     at 0xC8
+    Utf8 "QInOldClass"; // #22     at 0xCB
+    Utf8 "Code"; // #23     at 0xD6
+    Utf8 "LineNumberTable"; // #24     at 0xDD
+    Utf8 "callDot"; // #25     at 0xEF
+    Utf8 "(QDot;)V"; // #26     at 0xF9
+    Utf8 "SourceFile"; // #27     at 0x0104
+    Utf8 "QInOldClass.java"; // #28     at 0x0111
+    Utf8 "Preload"; // #29     at 0x0121
+    class #31; // #30     at 0x012B
+    Utf8 "Dot"; // #31     at 0x012E
+  } // Constant Pool
+
+  0x0021; // access [ ACC_PUBLIC ACC_SUPER ]
+  #21;// this_cpx
+  #2;// super_cpx
+
+  [0] { // Interfaces
+  } // Interfaces
+
+  [0] { // Fields
+  } // Fields
+
+  [2] { // Methods
+    {  // method at 0x0140
+      0x0001; // access
+      #5; // name_index       : <init>
+      #6; // descriptor_index : ()V
+      [1] { // Attributes
+        Attr(#23, 29) { // Code at 0x0148
+          1; // max_stack
+          1; // max_locals
+          Bytes[5]{
+            0x2AB70001B1;
+          }
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#24, 6) { // LineNumberTable at 0x015F
+              [1] { // line_number_table
+                0  2; //  at 0x016B
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    }
+    ;
+    {  // method at 0x016B
+      0x0009; // access
+      #25; // name_index       : callDot
+      #26; // descriptor_index : (LDot;)V
+      [1] { // Attributes
+        Attr(#23, 37) { // Code at 0x0173
+          2; // max_stack
+          1; // max_locals
+          Bytes[9]{
+            0xB20007120DB6000F;
+            0xB1;
+          }
+          [0] { // Traps
+          } // end Traps
+          [1] { // Attributes
+            Attr(#24, 10) { // LineNumberTable at 0x018E
+              [2] { // line_number_table
+                0  5; //  at 0x019A
+                8  6; //  at 0x019E
+              }
+            } // end LineNumberTable
+          } // Attributes
+        } // end Code
+      } // Attributes
+    }
+  } // Methods
+
+  [2] { // Attributes
+    Attr(#27, 2) { // SourceFile at 0x01A0
+      #28;
+    } // end SourceFile
+    ;
+    Attr(#29, 4) { // Preload at 0x01A8
+      0x0001001E;
+    } // end Preload
+  } // Attributes
+} // end class QInOldClass
