1 /*
   2  * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *
  23  */
  24 
  25 // This file contains multiple illegal value type classes that should cause
  26 // ClassFormatError exceptions when attempted to be loaded.
  27 //
  28 // The .jcod classes were originally generated from this Java file and then
  29 // modified to cause ClassFormatError or ClassCircularityError exceptions.  The
  30 // '(bad)' comments in most of the tests show where the modifications were made.
  31 //
  32 // final value class Value {
  33 //     static final Value VT = makeValue(0x01234567);
  34 //     final int int_v;
  35 //     Value() {
  36 //         int_v = 1;
  37 //     }
  38 //     static Value makeValue(int x) {
  39 //         Value v = Value.default;
  40 //         v = __WithField(v.int_v, x);
  41 //         return v;
  42 //     }
  43 // }
  44 
  45 
  46 // Test that class modifiers cannot have both ACC_VALUE and ACC_ABSTRACT set.
  47 //
  48 class ValueAbstract {
  49   0xCAFEBABE;
  50   0; // minor version
  51   57; // version
  52   [28] { // Constant Pool
  53     ; // first element is empty
  54     Method #7 #23; // #1     at 0x0A
  55     Field #3 #24; // #2     at 0x0F
  56     class #9; // #3     at 0x14
  57     int 0x01234567; // #4     at 0x17
  58     Method #3 #25; // #5     at 0x1C
  59     Field #3 #26; // #6     at 0x21
  60     class #27; // #7     at 0x26
  61     Utf8 "VT"; // #8     at 0x29
  62     Utf8 "ValueAbstract"; // #9     at 0x2E
  63     Utf8 "ValueTypes"; // #10     at 0x36
  64     Utf8 "LValueAbstract;"; // #11     at 0x43
  65     Utf8 "int_v"; // #12     at 0x4D
  66     Utf8 "I"; // #13     at 0x55
  67     Utf8 "<init>"; // #14     at 0x59
  68     Utf8 "()V"; // #15     at 0x62
  69     Utf8 "Code"; // #16     at 0x68
  70     Utf8 "LineNumberTable"; // #17     at 0x6F
  71     Utf8 "makeValueAbstract"; // #18     at 0x81
  72     Utf8 "(I)LValueAbstract;"; // #19     at 0x8D
  73     Utf8 "<clinit>"; // #20     at 0x9A
  74     Utf8 "SourceFile"; // #21     at 0xA5
  75     Utf8 "ValueAbstract.java"; // #22     at 0xB2
  76     NameAndType #14 #15; // #23     at 0xBF
  77     NameAndType #12 #13; // #24     at 0xC4
  78     NameAndType #18 #19; // #25     at 0xC9
  79     NameAndType #8 #11; // #26     at 0xCE
  80     Utf8 "java/lang/Object"; // #27     at 0xD3
  81   } // Constant Pool
  82 
  83   0x0530; // access [  ACC_VALUE ACC_ABSTRACT(bad) ACC_SUPER ACC_FINAL ]
  84   #3;// this_cpx
  85   #7;// super_cpx
  86 
  87   [0] { // Interfaces
  88   } // Interfaces
  89 
  90   [2] { // fields
  91     { // Member at 0xF0
  92       0x0118; // access
  93       #8; // name_cpx
  94       #11; // sig_cpx
  95       [0] { // Attributes
  96       } // Attributes
  97     } // Member
  98     ;
  99     { // Member at 0xF8
 100       0x0010; // access
 101       #12; // name_cpx
 102       #13; // sig_cpx
 103       [0] { // Attributes
 104       } // Attributes
 105     } // Member
 106   } // fields
 107 
 108   [3] { // methods
 109     { // Member at 0x0102
 110       0x0000; // access
 111       #14; // name_cpx
 112       #15; // sig_cpx
 113       [1] { // Attributes
 114         Attr(#16, 42) { // Code at 0x010A
 115           2; // max_stack
 116           1; // max_locals
 117           Bytes[10]{
 118             0x2AB700012A04B500;
 119             0x02B1;
 120           };
 121           [0] { // Traps
 122           } // end Traps
 123           [1] { // Attributes
 124             Attr(#17, 14) { // LineNumberTable at 0x0126
 125               [3] { // LineNumberTable
 126                 0  4; //  at 0x0132
 127                 4  5; //  at 0x0136
 128                 9  6; //  at 0x013A
 129               }
 130             } // end LineNumberTable
 131           } // Attributes
 132         } // end Code
 133       } // Attributes
 134     } // Member
 135     ;
 136     { // Member at 0x013A
 137       0x0008; // access
 138       #18; // name_cpx
 139       #19; // sig_cpx
 140       [1] { // Attributes
 141         Attr(#16, 44) { // Code at 0x0142
 142           2; // max_stack
 143           2; // max_locals
 144           Bytes[12]{
 145             0xCB00034C2B1ACC00;
 146             0x024C2BB0;
 147           };
 148           [0] { // Traps
 149           } // end Traps
 150           [1] { // Attributes
 151             Attr(#17, 14) { // LineNumberTable at 0x0160
 152               [3] { // LineNumberTable
 153                 0  8; //  at 0x016C
 154                 4  9; //  at 0x0170
 155                 10  10; //  at 0x0174
 156               }
 157             } // end LineNumberTable
 158           } // Attributes
 159         } // end Code
 160       } // Attributes
 161     } // Member
 162     ;
 163     { // Member at 0x0174
 164       0x0008; // access
 165       #20; // name_cpx
 166       #15; // sig_cpx
 167       [1] { // Attributes
 168         Attr(#16, 33) { // Code at 0x017C
 169           1; // max_stack
 170           0; // max_locals
 171           Bytes[9]{
 172             0x1204B80005B30006;
 173             0xB1;
 174           };
 175           [0] { // Traps
 176           } // end Traps
 177           [1] { // Attributes
 178             Attr(#17, 6) { // LineNumberTable at 0x0197
 179               [1] { // LineNumberTable
 180                 0  2; //  at 0x01A3
 181               }
 182             } // end LineNumberTable
 183           } // Attributes
 184         } // end Code
 185       } // Attributes
 186     } // Member
 187   } // methods
 188 
 189   [2] { // Attributes
 190     Attr(#21, 2) { // SourceFile at 0x01A5
 191       #22;
 192     } // end SourceFile
 193     ;
 194     Attr(#10, 4) { // ValueTypes at 0x01AD
 195       0x00010003;
 196     } // end ValueTypes
 197   } // Attributes
 198 } // end class ValueAbstract
 199 
 200 //////////////////////////////////////////////////////////////////////
 201 
 202 // Test that class modifiers cannot have both ACC_VALUE and ACC_ENUM set.
 203 //
 204 class ValueEnum {
 205   0xCAFEBABE;
 206   0; // minor version
 207   57; // version
 208   [28] { // Constant Pool
 209     ; // first element is empty
 210     Method #7 #23; // #1     at 0x0A
 211     Field #3 #24; // #2     at 0x0F
 212     class #9; // #3     at 0x14
 213     int 0x01234567; // #4     at 0x17
 214     Method #3 #25; // #5     at 0x1C
 215     Field #3 #26; // #6     at 0x21
 216     class #27; // #7     at 0x26
 217     Utf8 "VT"; // #8     at 0x29
 218     Utf8 "ValueEnum"; // #9     at 0x2E
 219     Utf8 "ValueTypes"; // #10     at 0x36
 220     Utf8 "LValueEnum;"; // #11     at 0x43
 221     Utf8 "int_v"; // #12     at 0x4D
 222     Utf8 "I"; // #13     at 0x55
 223     Utf8 "<init>"; // #14     at 0x59
 224     Utf8 "()V"; // #15     at 0x62
 225     Utf8 "Code"; // #16     at 0x68
 226     Utf8 "LineNumberTable"; // #17     at 0x6F
 227     Utf8 "makeValueEnum"; // #18     at 0x81
 228     Utf8 "(I)LValueEnum;"; // #19     at 0x8D
 229     Utf8 "<clinit>"; // #20     at 0x9A
 230     Utf8 "SourceFile"; // #21     at 0xA5
 231     Utf8 "ValueEnum.java"; // #22     at 0xB2
 232     NameAndType #14 #15; // #23     at 0xBF
 233     NameAndType #12 #13; // #24     at 0xC4
 234     NameAndType #18 #19; // #25     at 0xC9
 235     NameAndType #8 #11; // #26     at 0xCE
 236     Utf8 "java/lang/Object"; // #27     at 0xD3
 237   } // Constant Pool
 238 
 239   0x04130; // access [  ACC_VALUE ACC_ENUM(bad) ACC_SUPER ACC_FINAL ]
 240   #3;// this_cpx
 241   #7;// super_cpx
 242 
 243   [0] { // Interfaces
 244   } // Interfaces
 245 
 246   [2] { // fields
 247     { // Member at 0xF0
 248       0x0118; // access
 249       #8; // name_cpx
 250       #11; // sig_cpx
 251       [0] { // Attributes
 252       } // Attributes
 253     } // Member
 254     ;
 255     { // Member at 0xF8
 256       0x0010; // access
 257       #12; // name_cpx
 258       #13; // sig_cpx
 259       [0] { // Attributes
 260       } // Attributes
 261     } // Member
 262   } // fields
 263 
 264   [3] { // methods
 265     { // Member at 0x0102
 266       0x0000; // access
 267       #14; // name_cpx
 268       #15; // sig_cpx
 269       [1] { // Attributes
 270         Attr(#16, 42) { // Code at 0x010A
 271           2; // max_stack
 272           1; // max_locals
 273           Bytes[10]{
 274             0x2AB700012A04B500;
 275             0x02B1;
 276           };
 277           [0] { // Traps
 278           } // end Traps
 279           [1] { // Attributes
 280             Attr(#17, 14) { // LineNumberTable at 0x0126
 281               [3] { // LineNumberTable
 282                 0  4; //  at 0x0132
 283                 4  5; //  at 0x0136
 284                 9  6; //  at 0x013A
 285               }
 286             } // end LineNumberTable
 287           } // Attributes
 288         } // end Code
 289       } // Attributes
 290     } // Member
 291     ;
 292     { // Member at 0x013A
 293       0x0008; // access
 294       #18; // name_cpx
 295       #19; // sig_cpx
 296       [1] { // Attributes
 297         Attr(#16, 44) { // Code at 0x0142
 298           2; // max_stack
 299           2; // max_locals
 300           Bytes[12]{
 301             0xCB00034C2B1ACC00;
 302             0x024C2BB0;
 303           };
 304           [0] { // Traps
 305           } // end Traps
 306           [1] { // Attributes
 307             Attr(#17, 14) { // LineNumberTable at 0x0160
 308               [3] { // LineNumberTable
 309                 0  8; //  at 0x016C
 310                 4  9; //  at 0x0170
 311                 10  10; //  at 0x0174
 312               }
 313             } // end LineNumberTable
 314           } // Attributes
 315         } // end Code
 316       } // Attributes
 317     } // Member
 318     ;
 319     { // Member at 0x0174
 320       0x0008; // access
 321       #20; // name_cpx
 322       #15; // sig_cpx
 323       [1] { // Attributes
 324         Attr(#16, 33) { // Code at 0x017C
 325           1; // max_stack
 326           0; // max_locals
 327           Bytes[9]{
 328             0x1204B80005B30006;
 329             0xB1;
 330           };
 331           [0] { // Traps
 332           } // end Traps
 333           [1] { // Attributes
 334             Attr(#17, 6) { // LineNumberTable at 0x0197
 335               [1] { // LineNumberTable
 336                 0  2; //  at 0x01A3
 337               }
 338             } // end LineNumberTable
 339           } // Attributes
 340         } // end Code
 341       } // Attributes
 342     } // Member
 343   } // methods
 344 
 345   [2] { // Attributes
 346     Attr(#21, 2) { // SourceFile at 0x01A5
 347       #22;
 348     } // end SourceFile
 349     ;
 350     Attr(#10, 4) { // ValueTypes at 0x01AD
 351       0x00010003;
 352     } // end ValueTypes
 353   } // Attributes
 354 } // end class ValueEnum
 355 
 356 //////////////////////////////////////////////////////////////////////
 357 
 358 // Test that value type fields must be final.
 359 //
 360 class ValueFieldNotFinal {
 361   0xCAFEBABE;
 362   0; // minor version
 363   57; // version
 364   [28] { // Constant Pool
 365     ; // first element is empty
 366     Method #7 #23; // #1     at 0x0A
 367     Field #3 #24; // #2     at 0x0F
 368     class #9; // #3     at 0x14
 369     int 0x01234567; // #4     at 0x17
 370     Method #3 #25; // #5     at 0x1C
 371     Field #3 #26; // #6     at 0x21
 372     class #27; // #7     at 0x26
 373     Utf8 "VT"; // #8     at 0x29
 374     Utf8 "ValueFieldNotFinal"; // #9     at 0x2E
 375     Utf8 "ValueTypes"; // #10     at 0x36
 376     Utf8 "LValueFieldNotFinal;"; // #11     at 0x43
 377     Utf8 "int_v"; // #12     at 0x4D
 378     Utf8 "I"; // #13     at 0x55
 379     Utf8 "<init>"; // #14     at 0x59
 380     Utf8 "()V"; // #15     at 0x62
 381     Utf8 "Code"; // #16     at 0x68
 382     Utf8 "LineNumberTable"; // #17     at 0x6F
 383     Utf8 "makeValueFieldNotFinal"; // #18     at 0x81
 384     Utf8 "(I)LValueFieldNotFinal;"; // #19     at 0x8D
 385     Utf8 "<clinit>"; // #20     at 0x9A
 386     Utf8 "SourceFile"; // #21     at 0xA5
 387     Utf8 "ValueFieldNotFinal.java"; // #22     at 0xB2
 388     NameAndType #14 #15; // #23     at 0xBF
 389     NameAndType #12 #13; // #24     at 0xC4
 390     NameAndType #18 #19; // #25     at 0xC9
 391     NameAndType #8 #11; // #26     at 0xCE
 392     Utf8 "java/lang/Object"; // #27     at 0xD3
 393   } // Constant Pool
 394 
 395   0x0130; // access [ ACC_VALUE ACC_SUPER ACC_FINAL ]
 396   #3;// this_cpx
 397   #7;// super_cpx
 398 
 399   [0] { // Interfaces
 400   } // Interfaces
 401 
 402   [2] { // fields
 403     { // Member at 0xF0
 404       0x0118; // access
 405       #8; // name_cpx
 406       #11; // sig_cpx
 407       [0] { // Attributes
 408       } // Attributes
 409     } // Member
 410     ;
 411     { // Member at 0xF8
 412       0x0000; // access [ Field not ACC_FINAL(bad) ]
 413       #12; // name_cpx
 414       #13; // sig_cpx
 415       [0] { // Attributes
 416       } // Attributes
 417     } // Member
 418   } // fields
 419 
 420   [3] { // methods
 421     { // Member at 0x0102
 422       0x0000; // access
 423       #14; // name_cpx
 424       #15; // sig_cpx
 425       [1] { // Attributes
 426         Attr(#16, 42) { // Code at 0x010A
 427           2; // max_stack
 428           1; // max_locals
 429           Bytes[10]{
 430             0x2AB700012A04B500;
 431             0x02B1;
 432           };
 433           [0] { // Traps
 434           } // end Traps
 435           [1] { // Attributes
 436             Attr(#17, 14) { // LineNumberTable at 0x0126
 437               [3] { // LineNumberTable
 438                 0  4; //  at 0x0132
 439                 4  5; //  at 0x0136
 440                 9  6; //  at 0x013A
 441               }
 442             } // end LineNumberTable
 443           } // Attributes
 444         } // end Code
 445       } // Attributes
 446     } // Member
 447     ;
 448     { // Member at 0x013A
 449       0x0008; // access
 450       #18; // name_cpx
 451       #19; // sig_cpx
 452       [1] { // Attributes
 453         Attr(#16, 44) { // Code at 0x0142
 454           2; // max_stack
 455           2; // max_locals
 456           Bytes[12]{
 457             0xCB00034C2B1ACC00;
 458             0x024C2BB0;
 459           };
 460           [0] { // Traps
 461           } // end Traps
 462           [1] { // Attributes
 463             Attr(#17, 14) { // LineNumberTable at 0x0160
 464               [3] { // LineNumberTable
 465                 0  8; //  at 0x016C
 466                 4  9; //  at 0x0170
 467                 10  10; //  at 0x0174
 468               }
 469             } // end LineNumberTable
 470           } // Attributes
 471         } // end Code
 472       } // Attributes
 473     } // Member
 474     ;
 475     { // Member at 0x0174
 476       0x0008; // access
 477       #20; // name_cpx
 478       #15; // sig_cpx
 479       [1] { // Attributes
 480         Attr(#16, 33) { // Code at 0x017C
 481           1; // max_stack
 482           0; // max_locals
 483           Bytes[9]{
 484             0x1204B80005B30006;
 485             0xB1;
 486           };
 487           [0] { // Traps
 488           } // end Traps
 489           [1] { // Attributes
 490             Attr(#17, 6) { // LineNumberTable at 0x0197
 491               [1] { // LineNumberTable
 492                 0  2; //  at 0x01A3
 493               }
 494             } // end LineNumberTable
 495           } // Attributes
 496         } // end Code
 497       } // Attributes
 498     } // Member
 499   } // methods
 500 
 501   [2] { // Attributes
 502     Attr(#21, 2) { // SourceFile at 0x01A5
 503       #22;
 504     } // end SourceFile
 505     ;
 506     Attr(#10, 4) { // ValueTypes at 0x01AD
 507       0x00010003;
 508     } // end ValueTypes
 509   } // Attributes
 510 } // end class ValueFieldNotFinal
 511 
 512 //////////////////////////////////////////////////////////////////////
 513 
 514 // Test that arrays cannot have ACC_FLATTENABLE set.
 515 //
 516 class ValueFlatArray {
 517   0xCAFEBABE;
 518   0; // minor version
 519   57; // version
 520   [32] { // Constant Pool
 521     ; // first element is empty
 522     Method #8 #26; // #1     at 0x0A
 523     Field #4 #27; // #2     at 0x0F
 524     Field #4 #28; // #3     at 0x14
 525     class #10; // #4     at 0x19
 526     int 0x01234567; // #5     at 0x1C
 527     Method #4 #29; // #6     at 0x21
 528     Field #4 #30; // #7     at 0x26
 529     class #31; // #8     at 0x2B
 530     Utf8 "VT"; // #9     at 0x2E
 531     Utf8 "ValueFlatArray"; // #10     at 0x33
 532     Utf8 "ValueTypes"; // #11     at 0x40
 533     Utf8 "LValueFlatArray;"; // #12     at 0x4D
 534     Utf8 "int_v"; // #13     at 0x5C
 535     Utf8 "I"; // #14     at 0x64
 536     Utf8 "int_a"; // #15     at 0x68
 537     Utf8 "[I"; // #16     at 0x70
 538     Utf8 "<init>"; // #17     at 0x75
 539     Utf8 "()V"; // #18     at 0x7E
 540     Utf8 "Code"; // #19     at 0x84
 541     Utf8 "LineNumberTable"; // #20     at 0x8B
 542     Utf8 "makeValueFlatArray"; // #21     at 0x9D
 543     Utf8 "(I)LValueFlatArray;"; // #22     at 0xAE
 544     Utf8 "<clinit>"; // #23     at 0xC0
 545     Utf8 "SourceFile"; // #24     at 0xCB
 546     Utf8 "ValueFlatArray.java"; // #25     at 0xD8
 547     NameAndType #17 #18; // #26     at 0xEA
 548     NameAndType #13 #14; // #27     at 0xEF
 549     NameAndType #15 #16; // #28     at 0xF4
 550     NameAndType #21 #22; // #29     at 0xF9
 551     NameAndType #9 #12; // #30     at 0xFE
 552     Utf8 "java/lang/Object"; // #31     at 0x0103
 553   } // Constant Pool
 554 
 555   0x0130; // access [ ACC_VALUE ACC_SUPER ACC_FINAL ]
 556   #4;// this_cpx
 557   #8;// super_cpx
 558 
 559   [0] { // Interfaces
 560   } // Interfaces
 561 
 562   [3] { // fields
 563     { // Member at 0x0120
 564       0x0118; // access
 565       #9; // name_cpx
 566       #12; // sig_cpx
 567       [0] { // Attributes
 568       } // Attributes
 569     } // Member
 570     ;
 571     { // Member at 0x0128
 572       0x0010; // access
 573       #13; // name_cpx
 574       #14; // sig_cpx
 575       [0] { // Attributes
 576       } // Attributes
 577     } // Member
 578     ;
 579     { // Member at 0x0130
 580       0x0110; // access // access [ ACC_FINAL ACC_FLATTENABLE(bad) ]
 581       #15; // name_cpx
 582       #16; // sig_cpx
 583       [0] { // Attributes
 584       } // Attributes
 585     } // Member
 586   } // fields
 587 
 588   [3] { // methods
 589     { // Member at 0x013A
 590       0x0000; // access
 591       #17; // name_cpx
 592       #18; // sig_cpx
 593       [1] { // Attributes
 594         Attr(#19, 51) { // Code at 0x0142
 595           2; // max_stack
 596           1; // max_locals
 597           Bytes[15]{
 598             0x2AB700012A04B500;
 599             0x022A01B50003B1;
 600           };
 601           [0] { // Traps
 602           } // end Traps
 603           [1] { // Attributes
 604             Attr(#20, 18) { // LineNumberTable at 0x0163
 605               [4] { // LineNumberTable
 606                 0  5; //  at 0x016F
 607                 4  6; //  at 0x0173
 608                 9  7; //  at 0x0177
 609                 14  8; //  at 0x017B
 610               }
 611             } // end LineNumberTable
 612           } // Attributes
 613         } // end Code
 614       } // Attributes
 615     } // Member
 616     ;
 617     { // Member at 0x017B
 618       0x0008; // access
 619       #21; // name_cpx
 620       #22; // sig_cpx
 621       [1] { // Attributes
 622         Attr(#19, 44) { // Code at 0x0183
 623           2; // max_stack
 624           2; // max_locals
 625           Bytes[12]{
 626             0xCB00044C2B1ACC00;
 627             0x024C2BB0;
 628           };
 629           [0] { // Traps
 630           } // end Traps
 631           [1] { // Attributes
 632             Attr(#20, 14) { // LineNumberTable at 0x01A1
 633               [3] { // LineNumberTable
 634                 0  10; //  at 0x01AD
 635                 4  11; //  at 0x01B1
 636                 10  12; //  at 0x01B5
 637               }
 638             } // end LineNumberTable
 639           } // Attributes
 640         } // end Code
 641       } // Attributes
 642     } // Member
 643     ;
 644     { // Member at 0x01B5
 645       0x0008; // access
 646       #23; // name_cpx
 647       #18; // sig_cpx
 648       [1] { // Attributes
 649         Attr(#19, 33) { // Code at 0x01BD
 650           1; // max_stack
 651           0; // max_locals
 652           Bytes[9]{
 653             0x1205B80006B30007;
 654             0xB1;
 655           };
 656           [0] { // Traps
 657           } // end Traps
 658           [1] { // Attributes
 659             Attr(#20, 6) { // LineNumberTable at 0x01D8
 660               [1] { // LineNumberTable
 661                 0  2; //  at 0x01E4
 662               }
 663             } // end LineNumberTable
 664           } // Attributes
 665         } // end Code
 666       } // Attributes
 667     } // Member
 668   } // methods
 669 
 670   [2] { // Attributes
 671     Attr(#24, 2) { // SourceFile at 0x01E6
 672       #25;
 673     } // end SourceFile
 674     ;
 675     Attr(#11, 4) { // ValueTypes at 0x01EE
 676       0x00010004;
 677     } // end ValueTypes
 678   } // Attributes
 679 } // end class ValueFlatArray
 680 
 681 //////////////////////////////////////////////////////////////////////
 682 
 683 // Test that a value type cannot have a method named <init>.
 684 //
 685 class ValueInitMethod {
 686   0xCAFEBABE;
 687   0; // minor version
 688   57; // version
 689   [28] { // Constant Pool
 690     ; // first element is empty
 691     Method #7 #23; // #1     at 0x0A
 692     Field #3 #24; // #2     at 0x0F
 693     class #9; // #3     at 0x14
 694     int 0x01234567; // #4     at 0x17
 695     Method #3 #25; // #5     at 0x1C
 696     Field #3 #26; // #6     at 0x21
 697     class #27; // #7     at 0x26
 698     Utf8 "VT"; // #8     at 0x29
 699     Utf8 "ValueInitMethod"; // #9     at 0x2E
 700     Utf8 "ValueTypes"; // #10     at 0x36
 701     Utf8 "LValueInitMethod;"; // #11     at 0x43
 702     Utf8 "int_v"; // #12     at 0x4D
 703     Utf8 "I"; // #13     at 0x55
 704     Utf8 "<init>"; // #14     at 0x59
 705     Utf8 "()V"; // #15     at 0x62
 706     Utf8 "Code"; // #16     at 0x68
 707     Utf8 "LineNumberTable"; // #17     at 0x6F
 708     Utf8 "makeValueInitMethod"; // #18     at 0x81
 709     Utf8 "(I)LValueInitMethod;"; // #19     at 0x8D
 710     Utf8 "<clinit>"; // #20     at 0x9A
 711     Utf8 "SourceFile"; // #21     at 0xA5
 712     Utf8 "ValueInitMethod.java"; // #22     at 0xB2
 713     NameAndType #14 #15; // #23     at 0xBF
 714     NameAndType #12 #13; // #24     at 0xC4
 715     NameAndType #18 #19; // #25     at 0xC9
 716     NameAndType #8 #11; // #26     at 0xCE
 717     Utf8 "java/lang/Object"; // #27     at 0xD3
 718   } // Constant Pool
 719 
 720   0x0130; // access [ ACC_VALUE ACC_SUPER ACC_FINAL ]
 721   #3;// this_cpx
 722   #7;// super_cpx
 723 
 724   [0] { // Interfaces
 725   } // Interfaces
 726 
 727   [2] { // fields
 728     { // Member at 0xF0
 729       0x0118; // access
 730       #8; // name_cpx
 731       #11; // sig_cpx
 732       [0] { // Attributes
 733       } // Attributes
 734     } // Member
 735     ;
 736     { // Member at 0xF8
 737       0x0010; // access
 738       #12; // name_cpx
 739       #13; // sig_cpx
 740       [0] { // Attributes
 741       } // Attributes
 742     } // Member
 743   } // fields
 744 
 745   [3] { // methods
 746     { // Member at 0x0102
 747       0x0000; // access
 748       #14; // name_cpx (bad) <init>
 749       #15; // sig_cpx
 750       [1] { // Attributes
 751         Attr(#16, 42) { // Code at 0x010A
 752           2; // max_stack
 753           1; // max_locals
 754           Bytes[10]{
 755             0x2AB700012A04B500;
 756             0x02B1;
 757           };
 758           [0] { // Traps
 759           } // end Traps
 760           [1] { // Attributes
 761             Attr(#17, 14) { // LineNumberTable at 0x0126
 762               [3] { // LineNumberTable
 763                 0  4; //  at 0x0132
 764                 4  5; //  at 0x0136
 765                 9  6; //  at 0x013A
 766               }
 767             } // end LineNumberTable
 768           } // Attributes
 769         } // end Code
 770       } // Attributes
 771     } // Member
 772     ;
 773     { // Member at 0x013A
 774       0x0008; // access
 775       #18; // name_cpx
 776       #19; // sig_cpx
 777       [1] { // Attributes
 778         Attr(#16, 44) { // Code at 0x0142
 779           2; // max_stack
 780           2; // max_locals
 781           Bytes[12]{
 782             0xCB00034C2B1ACC00;
 783             0x024C2BB0;
 784           };
 785           [0] { // Traps
 786           } // end Traps
 787           [1] { // Attributes
 788             Attr(#17, 14) { // LineNumberTable at 0x0160
 789               [3] { // LineNumberTable
 790                 0  8; //  at 0x016C
 791                 4  9; //  at 0x0170
 792                 10  10; //  at 0x0174
 793               }
 794             } // end LineNumberTable
 795           } // Attributes
 796         } // end Code
 797       } // Attributes
 798     } // Member
 799     ;
 800     { // Member at 0x0174
 801       0x0008; // access
 802       #20; // name_cpx
 803       #15; // sig_cpx
 804       [1] { // Attributes
 805         Attr(#16, 33) { // Code at 0x017C
 806           1; // max_stack
 807           0; // max_locals
 808           Bytes[9]{
 809             0x1204B80005B30006;
 810             0xB1;
 811           };
 812           [0] { // Traps
 813           } // end Traps
 814           [1] { // Attributes
 815             Attr(#17, 6) { // LineNumberTable at 0x0197
 816               [1] { // LineNumberTable
 817                 0  2; //  at 0x01A3
 818               }
 819             } // end LineNumberTable
 820           } // Attributes
 821         } // end Code
 822       } // Attributes
 823     } // Member
 824   } // methods
 825 
 826   [2] { // Attributes
 827     Attr(#21, 2) { // SourceFile at 0x01A5
 828       #22;
 829     } // end SourceFile
 830     ;
 831     Attr(#10, 4) { // ValueTypes at 0x01AD
 832       0x00010003;
 833     } // end ValueTypes
 834   } // Attributes
 835 } // end class ValueInitMethod
 836 
 837 //////////////////////////////////////////////////////////////////////
 838 
 839 // Test that class modifiers cannot have both ACC_VALUE and ACC_INTERFACE set.
 840 //
 841 class ValueInterface {
 842   0xCAFEBABE;
 843   0; // minor version
 844   57; // version
 845   [27] { // Constant Pool
 846     ; // first element is empty
 847     Method #7 #21; // #1     at 0x0A
 848     Field #3 #22; // #2     at 0x0F
 849     class #23; // #3     at 0x14
 850     int 0x01234567; // #4     at 0x17
 851     Method #3 #24; // #5     at 0x1C
 852     Field #3 #25; // #6     at 0x21
 853     class #26; // #7     at 0x26
 854     Utf8 "VT"; // #8     at 0x29
 855     Utf8 "LValueInterface;"; // #9     at 0x2E
 856     Utf8 "int_v"; // #10     at 0x3C
 857     Utf8 "I"; // #11     at 0x44
 858     Utf8 "<init>"; // #12     at 0x48
 859     Utf8 "()V"; // #13     at 0x51
 860     Utf8 "Code"; // #14     at 0x57
 861     Utf8 "LineNumberTable"; // #15     at 0x5E
 862     Utf8 "makeValueInterface"; // #16     at 0x70
 863     Utf8 "(I)LValueInterface;"; // #17     at 0x80
 864     Utf8 "<clinit>"; // #18     at 0x91
 865     Utf8 "SourceFile"; // #19     at 0x9C
 866     Utf8 "ValueInterface.java"; // #20     at 0xA9
 867     NameAndType #12 #13; // #21     at 0xBA
 868     NameAndType #10 #11; // #22     at 0xBF
 869     Utf8 "ValueInterface"; // #23     at 0xC4
 870     NameAndType #16 #17; // #24     at 0xD0
 871     NameAndType #8 #9; // #25     at 0xD5
 872     Utf8 "java/lang/Object"; // #26     at 0xDA
 873   } // Constant Pool
 874 
 875   0x0330; // access [ ACC_VALUE ACC_INTERFACE(bad) ACC_SUPER ACC_FINAL ]
 876   #3;// this_cpx
 877   #7;// super_cpx
 878 
 879   [0] { // Interfaces
 880   } // Interfaces
 881 
 882   [2] { // fields
 883     { // Member at 0xF7
 884       0x0018; // access
 885       #8; // name_cpx
 886       #9; // sig_cpx
 887       [0] { // Attributes
 888       } // Attributes
 889     } // Member
 890     ;
 891     { // Member at 0xFF
 892       0x0010; // access
 893       #10; // name_cpx
 894       #11; // sig_cpx
 895       [0] { // Attributes
 896       } // Attributes
 897     } // Member
 898   } // fields
 899 
 900   [1] { // methods
 901     { // Member at 0x0141
 902       0x0008; // access
 903       #16; // name_cpx
 904       #17; // sig_cpx
 905       [1] { // Attributes
 906         Attr(#14, 44) { // Code at 0x0149
 907           2; // max_stack
 908           2; // max_locals
 909           Bytes[12]{
 910             0xCB00034C2B1ACC00;
 911             0x024C2BB0;
 912           };
 913           [0] { // Traps
 914           } // end Traps
 915           [1] { // Attributes
 916             Attr(#15, 14) { // LineNumberTable at 0x0167
 917               [3] { // LineNumberTable
 918                 0  8; //  at 0x0173
 919                 4  9; //  at 0x0177
 920                 10  10; //  at 0x017B
 921               }
 922             } // end LineNumberTable
 923           } // Attributes
 924         } // end Code
 925       } // Attributes
 926     } // Member
 927   } // methods
 928 
 929   [1] { // Attributes
 930     Attr(#19, 2) { // SourceFile at 0x01AC
 931       #20;
 932     } // end SourceFile
 933   } // Attributes
 934 } // end class ValueInterface
 935 
 936 //////////////////////////////////////////////////////////////////////
 937 
 938 // Test that value type instance methods cannot be synchronized.
 939 //
 940 class ValueMethodSynch {
 941   0xCAFEBABE;
 942   0; // minor version
 943   57; // version
 944   [29] { // Constant Pool
 945     ; // first element is empty
 946     Method #7 #24; // #1     at 0x0A
 947     Field #3 #25; // #2     at 0x0F
 948     class #9; // #3     at 0x14
 949     int 0x01234567; // #4     at 0x17
 950     Method #3 #26; // #5     at 0x1C
 951     Field #3 #27; // #6     at 0x21
 952     class #28; // #7     at 0x26
 953     Utf8 "VT"; // #8     at 0x29
 954     Utf8 "ValueMethodSynch"; // #9     at 0x2E
 955     Utf8 "ValueTypes"; // #10     at 0x41
 956     Utf8 "LValueMethodSynch;"; // #11     at 0x4E
 957     Utf8 "int_v"; // #12     at 0x63
 958     Utf8 "I"; // #13     at 0x6B
 959     Utf8 "<init>"; // #14     at 0x6F
 960     Utf8 "()V"; // #15     at 0x78
 961     Utf8 "Code"; // #16     at 0x7E
 962     Utf8 "LineNumberTable"; // #17     at 0x85
 963     Utf8 "instanceMethod"; // #18     at 0x97
 964     Utf8 "makeValueMethodSynch"; // #19     at 0xA8
 965     Utf8 "(I)LValueMethodSynch;"; // #20     at 0xBF
 966     Utf8 "<clinit>"; // #21     at 0xD7
 967     Utf8 "SourceFile"; // #22     at 0xE2
 968     Utf8 "ValueMethodSynch.java"; // #23     at 0xEF
 969     NameAndType #14 #15; // #24     at 0x0107
 970     NameAndType #12 #13; // #25     at 0x010C
 971     NameAndType #19 #20; // #26     at 0x0111
 972     NameAndType #8 #11; // #27     at 0x0116
 973     Utf8 "java/lang/Object"; // #28     at 0x011B
 974   } // Constant Pool
 975 
 976   0x0130; // access [ ACC_VALUE ACC_SUPER ACC_FINAL ]
 977   #3;// this_cpx
 978   #7;// super_cpx
 979 
 980   [0] { // Interfaces
 981   } // Interfaces
 982 
 983   [2] { // fields
 984     { // Member at 0x0138
 985       0x0118; // access
 986       #8; // name_cpx
 987       #11; // sig_cpx
 988       [0] { // Attributes
 989       } // Attributes
 990     } // Member
 991     ;
 992     { // Member at 0x0140
 993       0x0010; // access
 994       #12; // name_cpx
 995       #13; // sig_cpx
 996       [0] { // Attributes
 997       } // Attributes
 998     } // Member
 999   } // fields
1000 
1001   [4] { // methods
1002     { // Member at 0x014A
1003       0x0000; // access
1004       #14; // name_cpx
1005       #15; // sig_cpx
1006       [1] { // Attributes
1007         Attr(#16, 42) { // Code at 0x0152
1008           2; // max_stack
1009           1; // max_locals
1010           Bytes[10]{
1011             0x2AB700012A04B500;
1012             0x02B1;
1013           };
1014           [0] { // Traps
1015           } // end Traps
1016           [1] { // Attributes
1017             Attr(#17, 14) { // LineNumberTable at 0x016E
1018               [3] { // LineNumberTable
1019                 0  4; //  at 0x017A
1020                 4  5; //  at 0x017E
1021                 9  6; //  at 0x0182
1022               }
1023             } // end LineNumberTable
1024           } // Attributes
1025         } // end Code
1026       } // Attributes
1027     } // Member
1028     ;
1029     { // Member at 0x0182
1030       0x0020; // access [ ACC_SYNCHRONIZED(bad) ]
1031       #18; // name_cpx
1032       #15; // sig_cpx
1033       [1] { // Attributes
1034         Attr(#16, 25) { // Code at 0x018A
1035           0; // max_stack
1036           1; // max_locals
1037           Bytes[1]{
1038             0xB1;
1039           };
1040           [0] { // Traps
1041           } // end Traps
1042           [1] { // Attributes
1043             Attr(#17, 6) { // LineNumberTable at 0x019D
1044               [1] { // LineNumberTable
1045                 0  8; //  at 0x01A9
1046               }
1047             } // end LineNumberTable
1048           } // Attributes
1049         } // end Code
1050       } // Attributes
1051     } // Member
1052     ;
1053     { // Member at 0x01A9
1054       0x0008; // access
1055       #19; // name_cpx
1056       #20; // sig_cpx
1057       [1] { // Attributes
1058         Attr(#16, 44) { // Code at 0x01B1
1059           2; // max_stack
1060           2; // max_locals
1061           Bytes[12]{
1062             0xCB00034C2B1ACC00;
1063             0x024C2BB0;
1064           };
1065           [0] { // Traps
1066           } // end Traps
1067           [1] { // Attributes
1068             Attr(#17, 14) { // LineNumberTable at 0x01CF
1069               [3] { // LineNumberTable
1070                 0  11; //  at 0x01DB
1071                 4  12; //  at 0x01DF
1072                 10  13; //  at 0x01E3
1073               }
1074             } // end LineNumberTable
1075           } // Attributes
1076         } // end Code
1077       } // Attributes
1078     } // Member
1079     ;
1080     { // Member at 0x01E3
1081       0x0008; // access
1082       #21; // name_cpx
1083       #15; // sig_cpx
1084       [1] { // Attributes
1085         Attr(#16, 33) { // Code at 0x01EB
1086           1; // max_stack
1087           0; // max_locals
1088           Bytes[9]{
1089             0x1204B80005B30006;
1090             0xB1;
1091           };
1092           [0] { // Traps
1093           } // end Traps
1094           [1] { // Attributes
1095             Attr(#17, 6) { // LineNumberTable at 0x0206
1096               [1] { // LineNumberTable
1097                 0  2; //  at 0x0212
1098               }
1099             } // end LineNumberTable
1100           } // Attributes
1101         } // end Code
1102       } // Attributes
1103     } // Member
1104   } // methods
1105 
1106   [2] { // Attributes
1107     Attr(#22, 2) { // SourceFile at 0x0214
1108       #23;
1109     } // end SourceFile
1110     ;
1111     Attr(#10, 4) { // ValueTypes at 0x021C
1112       0x00010003;
1113     } // end ValueTypes
1114   } // Attributes
1115 } // end class ValueMethodSynch
1116 
1117 //////////////////////////////////////////////////////////////////////
1118 
1119 // Test that a value type's super class must be java.lang.Object.
1120 //
1121 class ValueSuperClass {
1122   0xCAFEBABE;
1123   0; // minor version
1124   57; // version
1125   [30] { // Constant Pool
1126     ; // first element is empty
1127     Method #7 #23; // #1     at 0x0A
1128     Field #3 #24; // #2     at 0x0F
1129     class #9; // #3     at 0x14
1130     int 0x01234567; // #4     at 0x17
1131     Method #3 #25; // #5     at 0x1C
1132     Field #3 #26; // #6     at 0x21
1133     class #27; // #7     at 0x26
1134     Utf8 "VT"; // #8     at 0x29
1135     Utf8 "ValueSuperClass"; // #9     at 0x2E
1136     Utf8 "ValueTypes"; // #10     at 0x36
1137     Utf8 "LValueSuperClass;"; // #11     at 0x43
1138     Utf8 "int_v"; // #12     at 0x4D
1139     Utf8 "I"; // #13     at 0x55
1140     Utf8 "<init>"; // #14     at 0x59
1141     Utf8 "()V"; // #15     at 0x62
1142     Utf8 "Code"; // #16     at 0x68
1143     Utf8 "LineNumberTable"; // #17     at 0x6F
1144     Utf8 "makeValueSuperClass"; // #18     at 0x81
1145     Utf8 "(I)LValueSuperClass;"; // #19     at 0x8D
1146     Utf8 "<clinit>"; // #20     at 0x9A
1147     Utf8 "SourceFile"; // #21     at 0xA5
1148     Utf8 "ValueSuperClass.java"; // #22     at 0xB2
1149     NameAndType #14 #15; // #23     at 0xBF
1150     NameAndType #12 #13; // #24     at 0xC4
1151     NameAndType #18 #19; // #25     at 0xC9
1152     NameAndType #8 #11; // #26     at 0xCE
1153     Utf8 "java/lang/Object"; // #27     at 0xD3
1154     class #29; // #28
1155     Utf8 "java/lang/Throwable"; // #29
1156   } // Constant Pool
1157 
1158   0x0130; // access [ ACC_SUPER ACC_FINAL ]
1159   #3;// this_cpx
1160   #28;// super_cpx
1161 
1162   [0] { // Interfaces
1163   } // Interfaces
1164 
1165   [2] { // fields
1166     { // Member at 0xF0
1167       0x0118; // access
1168       #8; // name_cpx
1169       #11; // sig_cpx
1170       [0] { // Attributes
1171       } // Attributes
1172     } // Member
1173     ;
1174     { // Member at 0xF8
1175       0x0010; // access
1176       #12; // name_cpx
1177       #13; // sig_cpx
1178       [0] { // Attributes
1179       } // Attributes
1180     } // Member
1181   } // fields
1182 
1183   [3] { // methods
1184     { // Member at 0x0102
1185       0x0000; // access
1186       #14; // name_cpx
1187       #15; // sig_cpx
1188       [1] { // Attributes
1189         Attr(#16, 42) { // Code at 0x010A
1190           2; // max_stack
1191           1; // max_locals
1192           Bytes[10]{
1193             0x2AB700012A04B500;
1194             0x02B1;
1195           };
1196           [0] { // Traps
1197           } // end Traps
1198           [1] { // Attributes
1199             Attr(#17, 14) { // LineNumberTable at 0x0126
1200               [3] { // LineNumberTable
1201                 0  4; //  at 0x0132
1202                 4  5; //  at 0x0136
1203                 9  6; //  at 0x013A
1204               }
1205             } // end LineNumberTable
1206           } // Attributes
1207         } // end Code
1208       } // Attributes
1209     } // Member
1210     ;
1211     { // Member at 0x013A
1212       0x0008; // access
1213       #18; // name_cpx
1214       #19; // sig_cpx
1215       [1] { // Attributes
1216         Attr(#16, 44) { // Code at 0x0142
1217           2; // max_stack
1218           2; // max_locals
1219           Bytes[12]{
1220             0xCB00034C2B1ACC00;
1221             0x024C2BB0;
1222           };
1223           [0] { // Traps
1224           } // end Traps
1225           [1] { // Attributes
1226             Attr(#17, 14) { // LineNumberTable at 0x0160
1227               [3] { // LineNumberTable
1228                 0  8; //  at 0x016C
1229                 4  9; //  at 0x0170
1230                 10  10; //  at 0x0174
1231               }
1232             } // end LineNumberTable
1233           } // Attributes
1234         } // end Code
1235       } // Attributes
1236     } // Member
1237     ;
1238     { // Member at 0x0174
1239       0x0008; // access
1240       #20; // name_cpx
1241       #15; // sig_cpx
1242       [1] { // Attributes
1243         Attr(#16, 33) { // Code at 0x017C
1244           1; // max_stack
1245           0; // max_locals
1246           Bytes[9]{
1247             0x1204B80005B30006;
1248             0xB1;
1249           };
1250           [0] { // Traps
1251           } // end Traps
1252           [1] { // Attributes
1253             Attr(#17, 6) { // LineNumberTable at 0x0197
1254               [1] { // LineNumberTable
1255                 0  2; //  at 0x01A3
1256               }
1257             } // end LineNumberTable
1258           } // Attributes
1259         } // end Code
1260       } // Attributes
1261     } // Member
1262   } // methods
1263 
1264   [2] { // Attributes
1265     Attr(#21, 2) { // SourceFile at 0x01A5
1266       #22;
1267     } // end SourceFile
1268     ;
1269     Attr(#10, 4) { // ValueTypes at 0x01AD
1270       0x00010003;
1271     } // end ValueTypes
1272   } // Attributes
1273 } // end class ValueSuperClass
1274 
1275 //////////////////////////////////////////////////////////////////////
1276 
1277 // Value types Circ and Circ2 have fields of each other's type.  This should
1278 // cause a ClassCircularityError exception when one of them is being loaded.
1279 //
1280 // The value types are based on these two Java classes:
1281 //
1282 // final value class Circ {
1283 //     static final Circ VT = makeCirc(0x01234567);
1284 //     final int int_v;
1285 //     final Circ2 v2;
1286 //     Circ() {
1287 //         int_v = 1;
1288 //         v2 = Circ2.default;
1289 //     }
1290 //     static Circ makeCirc(int x) {
1291 //         Circ v = Circ.default;
1292 //         v = __WithField(v.int_v, x);
1293 //         return v;
1294 //     }
1295 // }
1296 //----------------------------------------------------------------
1297 // final value class Circ2 {
1298 //     static final Circ2 VT = makeCirc2('\u0123');
1299 //     final char char_v;
1300 //     final Circ vv;
1301 //     Circ2() {
1302 //         char_v = 'z';
1303 //         vv = Circ.default;
1304 //     }
1305 //     static Circ2 makeCirc2(char c) {
1306 //         Circ2 v = Circ2.default;
1307 //         v = __WithField(v.char_v, c);
1308 //         return v;
1309 //     }
1310 // }
1311 
1312 class Circ {
1313   0xCAFEBABE;
1314   0; // minor version
1315   57; // version
1316   [69] { // Constant Pool
1317     ; // first element is empty
1318     Method #13 #39; // #1     at 0x0A
1319     class #40; // #2     at 0x0F
1320     Field #2 #41; // #3     at 0x12
1321     InvokeDynamic 0s #44; // #4     at 0x17
1322     InvokeDynamic 0s #45; // #5     at 0x1C
1323     InvokeDynamic 0s #46; // #6     at 0x21
1324     InvokeDynamic 0s #47; // #7     at 0x26
1325     int 0x01234567; // #8     at 0x2B
1326     Method #2 #48; // #9     at 0x30
1327     Field #2 #49; // #10     at 0x35
1328     class #50; // #11     at 0x3A
1329     Field #2 #51; // #12     at 0x3D
1330     class #52; // #13     at 0x42
1331     Utf8 "VT"; // #14     at 0x45
1332     Utf8 "QCirc;"; // #15     at 0x4A
1333     Utf8 "int_v"; // #16     at 0x53
1334     Utf8 "I"; // #17     at 0x5B
1335     Utf8 "v2"; // #18     at 0x5F
1336     Utf8 "QCirc2;"; // #19     at 0x64
1337     Utf8 "<init>"; // #20     at 0x6E
1338     Utf8 "()V"; // #21     at 0x77
1339     Utf8 "Code"; // #22     at 0x7D
1340     Utf8 "LineNumberTable"; // #23     at 0x84
1341     Utf8 "makeCirc"; // #24     at 0x96
1342     Utf8 "(I)QCirc;"; // #25     at 0xA1
1343     Utf8 "hashCode"; // #26     at 0xAD
1344     Utf8 "()I"; // #27     at 0xB8
1345     Utf8 "equals"; // #28     at 0xBE
1346     Utf8 "(Ljava/lang/Object;)Z"; // #29     at 0xC7
1347     Utf8 "toString"; // #30     at 0xDF
1348     Utf8 "()Ljava/lang/String;"; // #31     at 0xEA
1349     Utf8 "longHashCode"; // #32     at 0x0101
1350     Utf8 "()J"; // #33     at 0x0110
1351     Utf8 "<clinit>"; // #34     at 0x0116
1352     Utf8 "$makeValue$"; // #35     at 0x0121
1353     Utf8 "()QCirc;"; // #36     at 0x012F
1354     Utf8 "SourceFile"; // #37     at 0x013A
1355     Utf8 "Circ.java"; // #38     at 0x0147
1356     NameAndType #20 #21; // #39     at 0x0153
1357     Utf8 "Circ"; // #40     at 0x0158
1358     NameAndType #16 #17; // #41     at 0x015F
1359     Utf8 "BootstrapMethods"; // #42     at 0x0164
1360     MethodHandle 6b #53; // #43     at 0x0177
1361     NameAndType #26 #54; // #44     at 0x017B
1362     NameAndType #28 #55; // #45     at 0x0180
1363     NameAndType #30 #56; // #46     at 0x0185
1364     NameAndType #32 #57; // #47     at 0x018A
1365     NameAndType #24 #25; // #48     at 0x018F
1366     NameAndType #14 #15; // #49     at 0x0194
1367     Utf8 "Circ2"; // #50     at 0x0199
1368     NameAndType #18 #19; // #51     at 0x01A1
1369     Utf8 "java/lang/Object"; // #52     at 0x01A6
1370     Method #58 #59; // #53     at 0x01B9
1371     Utf8 "(Ljava/lang/Object;)I"; // #54     at 0x01BE
1372     Utf8 "(Ljava/lang/Object;Ljava/lang/Object;)Z"; // #55     at 0x01D6
1373     Utf8 "(Ljava/lang/Object;)Ljava/lang/String;"; // #56     at 0x0200
1374     Utf8 "(Ljava/lang/Object;)J"; // #57     at 0x0229
1375     class #60; // #58     at 0x0241
1376     NameAndType #61 #65; // #59     at 0x0244
1377     Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #60     at 0x0249
1378     Utf8 "makeBootstrapMethod"; // #61     at 0x0272
1379     class #67; // #62     at 0x0288
1380     Utf8 "Lookup"; // #63     at 0x028B
1381     Utf8 "InnerClasses"; // #64     at 0x0294
1382     Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #65     at 0x02A3
1383     class #68; // #66     at 0x0319
1384     Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #67     at 0x031C
1385     Utf8 "java/lang/invoke/MethodHandles"; // #68     at 0x0344
1386   } // Constant Pool
1387 
1388   0x0130; // access [ ACC_SUPER ACC_FINAL ]
1389   #2;// this_cpx
1390   #13;// super_cpx
1391 
1392   [0] { // Interfaces
1393   } // Interfaces
1394 
1395   [3] { // fields
1396     { // Member at 0x036F
1397       0x0018; // access
1398       #14; // name_cpx
1399       #15; // sig_cpx
1400       [0] { // Attributes
1401       } // Attributes
1402     } // Member
1403     ;
1404     { // Member at 0x0377
1405       0x0010; // access
1406       #16; // name_cpx
1407       #17; // sig_cpx
1408       [0] { // Attributes
1409       } // Attributes
1410     } // Member
1411     ;
1412     { // Member at 0x037F
1413       0x0010; // access
1414       #18; // name_cpx
1415       #19; // sig_cpx
1416       [0] { // Attributes
1417       } // Attributes
1418     } // Member
1419   } // fields
1420 
1421   [8] { // methods
1422     { // Member at 0x0389
1423       0x0000; // access
1424       #20; // name_cpx
1425       #21; // sig_cpx
1426       [1] { // Attributes
1427         Attr(#22, 29) { // Code at 0x0391
1428           1; // max_stack
1429           1; // max_locals
1430           Bytes[5]{
1431             0x2AB70001B1;
1432           };
1433           [0] { // Traps
1434           } // end Traps
1435           [1] { // Attributes
1436             Attr(#23, 6) { // LineNumberTable at 0x03A8
1437               [1] { // LineNumberTable
1438                 0  6; //  at 0x03B4
1439               }
1440             } // end LineNumberTable
1441           } // Attributes
1442         } // end Code
1443       } // Attributes
1444     } // Member
1445     ;
1446     { // Member at 0x03B4
1447       0x0008; // access
1448       #24; // name_cpx
1449       #25; // sig_cpx
1450       [1] { // Attributes
1451         Attr(#22, 45) { // Code at 0x03BC
1452           2; // max_stack
1453           2; // max_locals
1454           Bytes[13]{
1455             0xCB00024C1A2B5FCC;
1456             0x00034C2BB0;
1457           };
1458           [0] { // Traps
1459           } // end Traps
1460           [1] { // Attributes
1461             Attr(#23, 14) { // LineNumberTable at 0x03DB
1462               [3] { // LineNumberTable
1463                 0  12; //  at 0x03E7
1464                 4  13; //  at 0x03EB
1465                 11  14; //  at 0x03EF
1466               }
1467             } // end LineNumberTable
1468           } // Attributes
1469         } // end Code
1470       } // Attributes
1471     } // Member
1472     ;
1473     { // Member at 0x03EF
1474       0x0011; // access
1475       #26; // name_cpx
1476       #27; // sig_cpx
1477       [1] { // Attributes
1478         Attr(#22, 31) { // Code at 0x03F7
1479           1; // max_stack
1480           1; // max_locals
1481           Bytes[7]{
1482             0x2ABA00040000AC;
1483           };
1484           [0] { // Traps
1485           } // end Traps
1486           [1] { // Attributes
1487             Attr(#23, 6) { // LineNumberTable at 0x0410
1488               [1] { // LineNumberTable
1489                 0  1; //  at 0x041C
1490               }
1491             } // end LineNumberTable
1492           } // Attributes
1493         } // end Code
1494       } // Attributes
1495     } // Member
1496     ;
1497     { // Member at 0x041C
1498       0x0011; // access
1499       #28; // name_cpx
1500       #29; // sig_cpx
1501       [1] { // Attributes
1502         Attr(#22, 32) { // Code at 0x0424
1503           2; // max_stack
1504           2; // max_locals
1505           Bytes[8]{
1506             0x2A2BBA00050000AC;
1507           };
1508           [0] { // Traps
1509           } // end Traps
1510           [1] { // Attributes
1511             Attr(#23, 6) { // LineNumberTable at 0x043E
1512               [1] { // LineNumberTable
1513                 0  1; //  at 0x044A
1514               }
1515             } // end LineNumberTable
1516           } // Attributes
1517         } // end Code
1518       } // Attributes
1519     } // Member
1520     ;
1521     { // Member at 0x044A
1522       0x0011; // access
1523       #30; // name_cpx
1524       #31; // sig_cpx
1525       [1] { // Attributes
1526         Attr(#22, 31) { // Code at 0x0452
1527           1; // max_stack
1528           1; // max_locals
1529           Bytes[7]{
1530             0x2ABA00060000B0;
1531           };
1532           [0] { // Traps
1533           } // end Traps
1534           [1] { // Attributes
1535             Attr(#23, 6) { // LineNumberTable at 0x046B
1536               [1] { // LineNumberTable
1537                 0  1; //  at 0x0477
1538               }
1539             } // end LineNumberTable
1540           } // Attributes
1541         } // end Code
1542       } // Attributes
1543     } // Member
1544     ;
1545     { // Member at 0x0477
1546       0x0011; // access
1547       #32; // name_cpx
1548       #33; // sig_cpx
1549       [1] { // Attributes
1550         Attr(#22, 31) { // Code at 0x047F
1551           2; // max_stack
1552           1; // max_locals
1553           Bytes[7]{
1554             0x2ABA00070000AD;
1555           };
1556           [0] { // Traps
1557           } // end Traps
1558           [1] { // Attributes
1559             Attr(#23, 6) { // LineNumberTable at 0x0498
1560               [1] { // LineNumberTable
1561                 0  1; //  at 0x04A4
1562               }
1563             } // end LineNumberTable
1564           } // Attributes
1565         } // end Code
1566       } // Attributes
1567     } // Member
1568     ;
1569     { // Member at 0x04A4
1570       0x0008; // access
1571       #34; // name_cpx
1572       #21; // sig_cpx
1573       [1] { // Attributes
1574         Attr(#22, 33) { // Code at 0x04AC
1575           1; // max_stack
1576           0; // max_locals
1577           Bytes[9]{
1578             0x1208B80009B3000A;
1579             0xB1;
1580           };
1581           [0] { // Traps
1582           } // end Traps
1583           [1] { // Attributes
1584             Attr(#23, 6) { // LineNumberTable at 0x04C7
1585               [1] { // LineNumberTable
1586                 0  2; //  at 0x04D3
1587               }
1588             } // end LineNumberTable
1589           } // Attributes
1590         } // end Code
1591       } // Attributes
1592     } // Member
1593     ;
1594     { // Member at 0x04D3
1595       0x1008; // access
1596       #35; // name_cpx
1597       #36; // sig_cpx
1598       [1] { // Attributes
1599         Attr(#22, 58) { // Code at 0x04DB
1600           2; // max_stack
1601           1; // max_locals
1602           Bytes[22]{
1603             0xCB00024B042A5FCC;
1604             0x00034BCB000B2A5F;
1605             0xCC000C4B2AB0;
1606           };
1607           [0] { // Traps
1608           } // end Traps
1609           [1] { // Attributes
1610             Attr(#23, 18) { // LineNumberTable at 0x0503
1611               [4] { // LineNumberTable
1612                 0  6; //  at 0x050F
1613                 4  7; //  at 0x0513
1614                 11  8; //  at 0x0517
1615                 20  9; //  at 0x051B
1616               }
1617             } // end LineNumberTable
1618           } // Attributes
1619         } // end Code
1620       } // Attributes
1621     } // Member
1622   } // methods
1623 
1624   [3] { // Attributes
1625     Attr(#37, 2) { // SourceFile at 0x051D
1626       #38;
1627     } // end SourceFile
1628     ;
1629     Attr(#64, 10) { // InnerClasses at 0x0525
1630       [1] { // InnerClasses
1631         #62 #66 #63 25; //  at 0x0535
1632       }
1633     } // end InnerClasses
1634     ;
1635     Attr(#42, 6) { // BootstrapMethods at 0x0535
1636       [1] { // bootstrap_methods
1637         {  //  bootstrap_method
1638           #43; // bootstrap_method_ref
1639           [0] { // bootstrap_arguments
1640           }  //  bootstrap_arguments
1641         }  //  bootstrap_method
1642       }
1643     } // end BootstrapMethods
1644   } // Attributes
1645 } // end class Circ
1646 
1647 class Circ2 {
1648   0xCAFEBABE;
1649   0; // minor version
1650   57; // version
1651   [68] { // Constant Pool
1652     ; // first element is empty
1653     Method #12 #38; // #1     at 0x0A
1654     class #39; // #2     at 0x0F
1655     Field #2 #40; // #3     at 0x12
1656     InvokeDynamic 0s #43; // #4     at 0x17
1657     InvokeDynamic 0s #44; // #5     at 0x1C
1658     InvokeDynamic 0s #45; // #6     at 0x21
1659     InvokeDynamic 0s #46; // #7     at 0x26
1660     Method #2 #47; // #8     at 0x2B
1661     Field #2 #48; // #9     at 0x30
1662     class #49; // #10     at 0x35
1663     Field #2 #50; // #11     at 0x38
1664     class #51; // #12     at 0x3D
1665     Utf8 "VT"; // #13     at 0x40
1666     Utf8 "QCirc2;"; // #14     at 0x45
1667     Utf8 "char_v"; // #15     at 0x4F
1668     Utf8 "C"; // #16     at 0x58
1669     Utf8 "vv"; // #17     at 0x5C
1670     Utf8 "QCirc;"; // #18     at 0x61
1671     Utf8 "<init>"; // #19     at 0x6A
1672     Utf8 "()V"; // #20     at 0x73
1673     Utf8 "Code"; // #21     at 0x79
1674     Utf8 "LineNumberTable"; // #22     at 0x80
1675     Utf8 "makeCirc2"; // #23     at 0x92
1676     Utf8 "(C)QCirc2;"; // #24     at 0x9E
1677     Utf8 "hashCode"; // #25     at 0xAB
1678     Utf8 "()I"; // #26     at 0xB6
1679     Utf8 "equals"; // #27     at 0xBC
1680     Utf8 "(Ljava/lang/Object;)Z"; // #28     at 0xC5
1681     Utf8 "toString"; // #29     at 0xDD
1682     Utf8 "()Ljava/lang/String;"; // #30     at 0xE8
1683     Utf8 "longHashCode"; // #31     at 0xFF
1684     Utf8 "()J"; // #32     at 0x010E
1685     Utf8 "<clinit>"; // #33     at 0x0114
1686     Utf8 "$makeValue$"; // #34     at 0x011F
1687     Utf8 "()QCirc2;"; // #35     at 0x012D
1688     Utf8 "SourceFile"; // #36     at 0x0139
1689     Utf8 "Circ2.java"; // #37     at 0x0146
1690     NameAndType #19 #20; // #38     at 0x0153
1691     Utf8 "Circ2"; // #39     at 0x0158
1692     NameAndType #15 #16; // #40     at 0x0160
1693     Utf8 "BootstrapMethods"; // #41     at 0x0165
1694     MethodHandle 6b #52; // #42     at 0x0178
1695     NameAndType #25 #53; // #43     at 0x017C
1696     NameAndType #27 #54; // #44     at 0x0181
1697     NameAndType #29 #55; // #45     at 0x0186
1698     NameAndType #31 #56; // #46     at 0x018B
1699     NameAndType #23 #24; // #47     at 0x0190
1700     NameAndType #13 #14; // #48     at 0x0195
1701     Utf8 "Circ"; // #49     at 0x019A
1702     NameAndType #17 #18; // #50     at 0x01A1
1703     Utf8 "java/lang/Object"; // #51     at 0x01A6
1704     Method #57 #58; // #52     at 0x01B9
1705     Utf8 "(Ljava/lang/Object;)I"; // #53     at 0x01BE
1706     Utf8 "(Ljava/lang/Object;Ljava/lang/Object;)Z"; // #54     at 0x01D6
1707     Utf8 "(Ljava/lang/Object;)Ljava/lang/String;"; // #55     at 0x0200
1708     Utf8 "(Ljava/lang/Object;)J"; // #56     at 0x0229
1709     class #59; // #57     at 0x0241
1710     NameAndType #60 #64; // #58     at 0x0244
1711     Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #59     at 0x0249
1712     Utf8 "makeBootstrapMethod"; // #60     at 0x0272
1713     class #66; // #61     at 0x0288
1714     Utf8 "Lookup"; // #62     at 0x028B
1715     Utf8 "InnerClasses"; // #63     at 0x0294
1716     Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #64     at 0x02A3
1717     class #67; // #65     at 0x0319
1718     Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #66     at 0x031C
1719     Utf8 "java/lang/invoke/MethodHandles"; // #67     at 0x0344
1720   } // Constant Pool
1721 
1722   0x0130; // access [ ACC_SUPER ACC_FINAL ]
1723   #2;// this_cpx
1724   #12;// super_cpx
1725 
1726   [0] { // Interfaces
1727   } // Interfaces
1728 
1729   [3] { // fields
1730     { // Member at 0x036F
1731       0x0018; // access
1732       #13; // name_cpx
1733       #14; // sig_cpx
1734       [0] { // Attributes
1735       } // Attributes
1736     } // Member
1737     ;
1738     { // Member at 0x0377
1739       0x0010; // access
1740       #15; // name_cpx
1741       #16; // sig_cpx
1742       [0] { // Attributes
1743       } // Attributes
1744     } // Member
1745     ;
1746     { // Member at 0x037F
1747       0x0010; // access
1748       #17; // name_cpx
1749       #18; // sig_cpx
1750       [0] { // Attributes
1751       } // Attributes
1752     } // Member
1753   } // fields
1754 
1755   [8] { // methods
1756     { // Member at 0x0389
1757       0x0000; // access
1758       #19; // name_cpx
1759       #20; // sig_cpx
1760       [1] { // Attributes
1761         Attr(#21, 29) { // Code at 0x0391
1762           1; // max_stack
1763           1; // max_locals
1764           Bytes[5]{
1765             0x2AB70001B1;
1766           };
1767           [0] { // Traps
1768           } // end Traps
1769           [1] { // Attributes
1770             Attr(#22, 6) { // LineNumberTable at 0x03A8
1771               [1] { // LineNumberTable
1772                 0  6; //  at 0x03B4
1773               }
1774             } // end LineNumberTable
1775           } // Attributes
1776         } // end Code
1777       } // Attributes
1778     } // Member
1779     ;
1780     { // Member at 0x03B4
1781       0x0008; // access
1782       #23; // name_cpx
1783       #24; // sig_cpx
1784       [1] { // Attributes
1785         Attr(#21, 45) { // Code at 0x03BC
1786           2; // max_stack
1787           2; // max_locals
1788           Bytes[13]{
1789             0xCB00024C1A2B5FCC;
1790             0x00034C2BB0;
1791           };
1792           [0] { // Traps
1793           } // end Traps
1794           [1] { // Attributes
1795             Attr(#22, 14) { // LineNumberTable at 0x03DB
1796               [3] { // LineNumberTable
1797                 0  12; //  at 0x03E7
1798                 4  13; //  at 0x03EB
1799                 11  14; //  at 0x03EF
1800               }
1801             } // end LineNumberTable
1802           } // Attributes
1803         } // end Code
1804       } // Attributes
1805     } // Member
1806     ;
1807     { // Member at 0x03EF
1808       0x0011; // access
1809       #25; // name_cpx
1810       #26; // sig_cpx
1811       [1] { // Attributes
1812         Attr(#21, 31) { // Code at 0x03F7
1813           1; // max_stack
1814           1; // max_locals
1815           Bytes[7]{
1816             0x2ABA00040000AC;
1817           };
1818           [0] { // Traps
1819           } // end Traps
1820           [1] { // Attributes
1821             Attr(#22, 6) { // LineNumberTable at 0x0410
1822               [1] { // LineNumberTable
1823                 0  1; //  at 0x041C
1824               }
1825             } // end LineNumberTable
1826           } // Attributes
1827         } // end Code
1828       } // Attributes
1829     } // Member
1830     ;
1831     { // Member at 0x041C
1832       0x0011; // access
1833       #27; // name_cpx
1834       #28; // sig_cpx
1835       [1] { // Attributes
1836         Attr(#21, 32) { // Code at 0x0424
1837           2; // max_stack
1838           2; // max_locals
1839           Bytes[8]{
1840             0x2A2BBA00050000AC;
1841           };
1842           [0] { // Traps
1843           } // end Traps
1844           [1] { // Attributes
1845             Attr(#22, 6) { // LineNumberTable at 0x043E
1846               [1] { // LineNumberTable
1847                 0  1; //  at 0x044A
1848               }
1849             } // end LineNumberTable
1850           } // Attributes
1851         } // end Code
1852       } // Attributes
1853     } // Member
1854     ;
1855     { // Member at 0x044A
1856       0x0011; // access
1857       #29; // name_cpx
1858       #30; // sig_cpx
1859       [1] { // Attributes
1860         Attr(#21, 31) { // Code at 0x0452
1861           1; // max_stack
1862           1; // max_locals
1863           Bytes[7]{
1864             0x2ABA00060000B0;
1865           };
1866           [0] { // Traps
1867           } // end Traps
1868           [1] { // Attributes
1869             Attr(#22, 6) { // LineNumberTable at 0x046B
1870               [1] { // LineNumberTable
1871                 0  1; //  at 0x0477
1872               }
1873             } // end LineNumberTable
1874           } // Attributes
1875         } // end Code
1876       } // Attributes
1877     } // Member
1878     ;
1879     { // Member at 0x0477
1880       0x0011; // access
1881       #31; // name_cpx
1882       #32; // sig_cpx
1883       [1] { // Attributes
1884         Attr(#21, 31) { // Code at 0x047F
1885           2; // max_stack
1886           1; // max_locals
1887           Bytes[7]{
1888             0x2ABA00070000AD;
1889           };
1890           [0] { // Traps
1891           } // end Traps
1892           [1] { // Attributes
1893             Attr(#22, 6) { // LineNumberTable at 0x0498
1894               [1] { // LineNumberTable
1895                 0  1; //  at 0x04A4
1896               }
1897             } // end LineNumberTable
1898           } // Attributes
1899         } // end Code
1900       } // Attributes
1901     } // Member
1902     ;
1903     { // Member at 0x04A4
1904       0x0008; // access
1905       #33; // name_cpx
1906       #20; // sig_cpx
1907       [1] { // Attributes
1908         Attr(#21, 34) { // Code at 0x04AC
1909           1; // max_stack
1910           0; // max_locals
1911           Bytes[10]{
1912             0x110123B80008B300;
1913             0x09B1;
1914           };
1915           [0] { // Traps
1916           } // end Traps
1917           [1] { // Attributes
1918             Attr(#22, 6) { // LineNumberTable at 0x04C8
1919               [1] { // LineNumberTable
1920                 0  2; //  at 0x04D4
1921               }
1922             } // end LineNumberTable
1923           } // Attributes
1924         } // end Code
1925       } // Attributes
1926     } // Member
1927     ;
1928     { // Member at 0x04D4
1929       0x1008; // access
1930       #34; // name_cpx
1931       #35; // sig_cpx
1932       [1] { // Attributes
1933         Attr(#21, 59) { // Code at 0x04DC
1934           2; // max_stack
1935           1; // max_locals
1936           Bytes[23]{
1937             0xCB00024B107A2A5F;
1938             0xCC00034BCB000A2A;
1939             0x5FCC000B4B2AB0;
1940           };
1941           [0] { // Traps
1942           } // end Traps
1943           [1] { // Attributes
1944             Attr(#22, 18) { // LineNumberTable at 0x0505
1945               [4] { // LineNumberTable
1946                 0  6; //  at 0x0511
1947                 4  7; //  at 0x0515
1948                 12  8; //  at 0x0519
1949                 21  9; //  at 0x051D
1950               }
1951             } // end LineNumberTable
1952           } // Attributes
1953         } // end Code
1954       } // Attributes
1955     } // Member
1956   } // methods
1957 
1958   [3] { // Attributes
1959     Attr(#36, 2) { // SourceFile at 0x051F
1960       #37;
1961     } // end SourceFile
1962     ;
1963     Attr(#63, 10) { // InnerClasses at 0x0527
1964       [1] { // InnerClasses
1965         #61 #65 #62 25; //  at 0x0537
1966       }
1967     } // end InnerClasses
1968     ;
1969     Attr(#41, 6) { // BootstrapMethods at 0x0537
1970       [1] { // bootstrap_methods
1971         {  //  bootstrap_method
1972           #42; // bootstrap_method_ref
1973           [0] { // bootstrap_arguments
1974           }  //  bootstrap_arguments
1975         }  //  bootstrap_method
1976       }
1977     } // end BootstrapMethods
1978   } // Attributes
1979 } // end class Circ2
1980 
1981 
1982 //////////////////////////////////////////////////////////////////////
1983 
1984 // Value types CircStaticA and CircStaticB have static fields of each other's
1985 // type.  This should cause a ClassCircularityError exception when one of them
1986 // is being loaded.
1987 //
1988 // The value types are based on these two Java classes:
1989 //
1990 // final value class CircStaticA {
1991 //     static final CircStaticA VT = makeCircStaticA(0x01234567);
1992 //     final int int_v;
1993 //     static final CircStaticB v2 = CircStaticB.default;
1994 //     CircStaticA() {
1995 //         int_v = 1;
1996 //     }
1997 //     static CircStaticA makeCircStaticA(int x) {
1998 //         CircStaticA v = CircStaticA.default;
1999 //         v = __WithField(v.int_v, x);
2000 //         return v;
2001 //     }
2002 // }
2003 //----------------------------------------------------------------
2004 // final value class CircStaticB {
2005 //     static final CircStaticB VT = makeCircStaticB(0x01234567);
2006 //     final int int_v;
2007 //     static final CircStaticA v2 = CircStaticA.default;
2008 //     CircStaticB() {
2009 //         int_v = 1;
2010 //     }
2011 //     static CircStaticB makeCircStaticB(int x) {
2012 //         CircStaticB v = CircStaticB.default;
2013 //         v = __WithField(v.int_v, x);
2014 //         return v;
2015 //     }
2016 // }
2017 
2018 class CircStaticA {
2019   0xCAFEBABE;
2020   0; // minor version
2021   57; // version
2022   [69] { // Constant Pool
2023     ; // first element is empty
2024     Method #13 #39; // #1     at 0x0A
2025     class #40; // #2     at 0x0F
2026     Field #2 #41; // #3     at 0x12
2027     InvokeDynamic 0s #44; // #4     at 0x17
2028     InvokeDynamic 0s #45; // #5     at 0x1C
2029     InvokeDynamic 0s #46; // #6     at 0x21
2030     InvokeDynamic 0s #47; // #7     at 0x26
2031     int 0x01234567; // #8     at 0x2B
2032     Method #2 #48; // #9     at 0x30
2033     Field #2 #49; // #10     at 0x35
2034     class #50; // #11     at 0x3A
2035     Field #2 #51; // #12     at 0x3D
2036     class #52; // #13     at 0x42
2037     Utf8 "VT"; // #14     at 0x45
2038     Utf8 "QCircStaticA;"; // #15     at 0x4A
2039     Utf8 "int_v"; // #16     at 0x5A
2040     Utf8 "I"; // #17     at 0x62
2041     Utf8 "v2"; // #18     at 0x66
2042     Utf8 "QCircStaticB;"; // #19     at 0x6B
2043     Utf8 "<init>"; // #20     at 0x7B
2044     Utf8 "()V"; // #21     at 0x84
2045     Utf8 "Code"; // #22     at 0x8A
2046     Utf8 "LineNumberTable"; // #23     at 0x91
2047     Utf8 "makeCircStaticA"; // #24     at 0xA3
2048     Utf8 "(I)QCircStaticA;"; // #25     at 0xB5
2049     Utf8 "hashCode"; // #26     at 0xC8
2050     Utf8 "()I"; // #27     at 0xD3
2051     Utf8 "equals"; // #28     at 0xD9
2052     Utf8 "(Ljava/lang/Object;)Z"; // #29     at 0xE2
2053     Utf8 "toString"; // #30     at 0xFA
2054     Utf8 "()Ljava/lang/String;"; // #31     at 0x0105
2055     Utf8 "longHashCode"; // #32     at 0x011C
2056     Utf8 "()J"; // #33     at 0x012B
2057     Utf8 "<clinit>"; // #34     at 0x0131
2058     Utf8 "$makeValue$"; // #35     at 0x013C
2059     Utf8 "()QCircStaticA;"; // #36     at 0x014A
2060     Utf8 "SourceFile"; // #37     at 0x015C
2061     Utf8 "CircStaticA.java"; // #38     at 0x0169
2062     NameAndType #20 #21; // #39     at 0x017C
2063     Utf8 "CircStaticA"; // #40     at 0x0181
2064     NameAndType #16 #17; // #41     at 0x018F
2065     Utf8 "BootstrapMethods"; // #42     at 0x0194
2066     MethodHandle 6b #53; // #43     at 0x01A7
2067     NameAndType #26 #54; // #44     at 0x01AB
2068     NameAndType #28 #55; // #45     at 0x01B0
2069     NameAndType #30 #56; // #46     at 0x01B5
2070     NameAndType #32 #57; // #47     at 0x01BA
2071     NameAndType #24 #25; // #48     at 0x01BF
2072     NameAndType #14 #15; // #49     at 0x01C4
2073     Utf8 "CircStaticB"; // #50     at 0x01C9
2074     NameAndType #18 #19; // #51     at 0x01D7
2075     Utf8 "java/lang/Object"; // #52     at 0x01DC
2076     Method #58 #59; // #53     at 0x01EF
2077     Utf8 "(Ljava/lang/Object;)I"; // #54     at 0x01F4
2078     Utf8 "(Ljava/lang/Object;Ljava/lang/Object;)Z"; // #55     at 0x020C
2079     Utf8 "(Ljava/lang/Object;)Ljava/lang/String;"; // #56     at 0x0236
2080     Utf8 "(Ljava/lang/Object;)J"; // #57     at 0x025F
2081     class #60; // #58     at 0x0277
2082     NameAndType #61 #65; // #59     at 0x027A
2083     Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #60     at 0x027F
2084     Utf8 "makeBootstrapMethod"; // #61     at 0x02A8
2085     class #67; // #62     at 0x02BE
2086     Utf8 "Lookup"; // #63     at 0x02C1
2087     Utf8 "InnerClasses"; // #64     at 0x02CA
2088     Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #65     at 0x02D9
2089     class #68; // #66     at 0x034F
2090     Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #67     at 0x0352
2091     Utf8 "java/lang/invoke/MethodHandles"; // #68     at 0x037A
2092   } // Constant Pool
2093 
2094   0x0130; // access [ ACC_SUPER ACC_FINAL ]
2095   #2;// this_cpx
2096   #13;// super_cpx
2097 
2098   [0] { // Interfaces
2099   } // Interfaces
2100 
2101   [3] { // fields
2102     { // Member at 0x03A5
2103       0x0018; // access
2104       #14; // name_cpx
2105       #15; // sig_cpx
2106       [0] { // Attributes
2107       } // Attributes
2108     } // Member
2109     ;
2110     { // Member at 0x03AD
2111       0x0010; // access
2112       #16; // name_cpx
2113       #17; // sig_cpx
2114       [0] { // Attributes
2115       } // Attributes
2116     } // Member
2117     ;
2118     { // Member at 0x03B5
2119       0x0018; // access
2120       #18; // name_cpx
2121       #19; // sig_cpx
2122       [0] { // Attributes
2123       } // Attributes
2124     } // Member
2125   } // fields
2126 
2127   [8] { // methods
2128     { // Member at 0x03BF
2129       0x0000; // access
2130       #20; // name_cpx
2131       #21; // sig_cpx
2132       [1] { // Attributes
2133         Attr(#22, 29) { // Code at 0x03C7
2134           1; // max_stack
2135           1; // max_locals
2136           Bytes[5]{
2137             0x2AB70001B1;
2138           };
2139           [0] { // Traps
2140           } // end Traps
2141           [1] { // Attributes
2142             Attr(#23, 6) { // LineNumberTable at 0x03DE
2143               [1] { // LineNumberTable
2144                 0  6; //  at 0x03EA
2145               }
2146             } // end LineNumberTable
2147           } // Attributes
2148         } // end Code
2149       } // Attributes
2150     } // Member
2151     ;
2152     { // Member at 0x03EA
2153       0x0008; // access
2154       #24; // name_cpx
2155       #25; // sig_cpx
2156       [1] { // Attributes
2157         Attr(#22, 45) { // Code at 0x03F2
2158           2; // max_stack
2159           2; // max_locals
2160           Bytes[13]{
2161             0xCB00024C1A2B5FCC;
2162             0x00034C2BB0;
2163           };
2164           [0] { // Traps
2165           } // end Traps
2166           [1] { // Attributes
2167             Attr(#23, 14) { // LineNumberTable at 0x0411
2168               [3] { // LineNumberTable
2169                 0  11; //  at 0x041D
2170                 4  12; //  at 0x0421
2171                 11  13; //  at 0x0425
2172               }
2173             } // end LineNumberTable
2174           } // Attributes
2175         } // end Code
2176       } // Attributes
2177     } // Member
2178     ;
2179     { // Member at 0x0425
2180       0x0011; // access
2181       #26; // name_cpx
2182       #27; // sig_cpx
2183       [1] { // Attributes
2184         Attr(#22, 31) { // Code at 0x042D
2185           1; // max_stack
2186           1; // max_locals
2187           Bytes[7]{
2188             0x2ABA00040000AC;
2189           };
2190           [0] { // Traps
2191           } // end Traps
2192           [1] { // Attributes
2193             Attr(#23, 6) { // LineNumberTable at 0x0446
2194               [1] { // LineNumberTable
2195                 0  1; //  at 0x0452
2196               }
2197             } // end LineNumberTable
2198           } // Attributes
2199         } // end Code
2200       } // Attributes
2201     } // Member
2202     ;
2203     { // Member at 0x0452
2204       0x0011; // access
2205       #28; // name_cpx
2206       #29; // sig_cpx
2207       [1] { // Attributes
2208         Attr(#22, 32) { // Code at 0x045A
2209           2; // max_stack
2210           2; // max_locals
2211           Bytes[8]{
2212             0x2A2BBA00050000AC;
2213           };
2214           [0] { // Traps
2215           } // end Traps
2216           [1] { // Attributes
2217             Attr(#23, 6) { // LineNumberTable at 0x0474
2218               [1] { // LineNumberTable
2219                 0  1; //  at 0x0480
2220               }
2221             } // end LineNumberTable
2222           } // Attributes
2223         } // end Code
2224       } // Attributes
2225     } // Member
2226     ;
2227     { // Member at 0x0480
2228       0x0011; // access
2229       #30; // name_cpx
2230       #31; // sig_cpx
2231       [1] { // Attributes
2232         Attr(#22, 31) { // Code at 0x0488
2233           1; // max_stack
2234           1; // max_locals
2235           Bytes[7]{
2236             0x2ABA00060000B0;
2237           };
2238           [0] { // Traps
2239           } // end Traps
2240           [1] { // Attributes
2241             Attr(#23, 6) { // LineNumberTable at 0x04A1
2242               [1] { // LineNumberTable
2243                 0  1; //  at 0x04AD
2244               }
2245             } // end LineNumberTable
2246           } // Attributes
2247         } // end Code
2248       } // Attributes
2249     } // Member
2250     ;
2251     { // Member at 0x04AD
2252       0x0011; // access
2253       #32; // name_cpx
2254       #33; // sig_cpx
2255       [1] { // Attributes
2256         Attr(#22, 31) { // Code at 0x04B5
2257           2; // max_stack
2258           1; // max_locals
2259           Bytes[7]{
2260             0x2ABA00070000AD;
2261           };
2262           [0] { // Traps
2263           } // end Traps
2264           [1] { // Attributes
2265             Attr(#23, 6) { // LineNumberTable at 0x04CE
2266               [1] { // LineNumberTable
2267                 0  1; //  at 0x04DA
2268               }
2269             } // end LineNumberTable
2270           } // Attributes
2271         } // end Code
2272       } // Attributes
2273     } // Member
2274     ;
2275     { // Member at 0x04DA
2276       0x0008; // access
2277       #34; // name_cpx
2278       #21; // sig_cpx
2279       [1] { // Attributes
2280         Attr(#22, 43) { // Code at 0x04E2
2281           1; // max_stack
2282           0; // max_locals
2283           Bytes[15]{
2284             0x1208B80009B3000A;
2285             0xCB000BB3000CB1;
2286           };
2287           [0] { // Traps
2288           } // end Traps
2289           [1] { // Attributes
2290             Attr(#23, 10) { // LineNumberTable at 0x0503
2291               [2] { // LineNumberTable
2292                 0  2; //  at 0x050F
2293                 8  4; //  at 0x0513
2294               }
2295             } // end LineNumberTable
2296           } // Attributes
2297         } // end Code
2298       } // Attributes
2299     } // Member
2300     ;
2301     { // Member at 0x0513
2302       0x1008; // access
2303       #35; // name_cpx
2304       #36; // sig_cpx
2305       [1] { // Attributes
2306         Attr(#22, 45) { // Code at 0x051B
2307           2; // max_stack
2308           1; // max_locals
2309           Bytes[13]{
2310             0xCB00024B042A5FCC;
2311             0x00034B2AB0;
2312           };
2313           [0] { // Traps
2314           } // end Traps
2315           [1] { // Attributes
2316             Attr(#23, 14) { // LineNumberTable at 0x053A
2317               [3] { // LineNumberTable
2318                 0  6; //  at 0x0546
2319                 4  7; //  at 0x054A
2320                 11  8; //  at 0x054E
2321               }
2322             } // end LineNumberTable
2323           } // Attributes
2324         } // end Code
2325       } // Attributes
2326     } // Member
2327   } // methods
2328 
2329   [3] { // Attributes
2330     Attr(#37, 2) { // SourceFile at 0x0550
2331       #38;
2332     } // end SourceFile
2333     ;
2334     Attr(#64, 10) { // InnerClasses at 0x0558
2335       [1] { // InnerClasses
2336         #62 #66 #63 25; //  at 0x0568
2337       }
2338     } // end InnerClasses
2339     ;
2340     Attr(#42, 6) { // BootstrapMethods at 0x0568
2341       [1] { // bootstrap_methods
2342         {  //  bootstrap_method
2343           #43; // bootstrap_method_ref
2344           [0] { // bootstrap_arguments
2345           }  //  bootstrap_arguments
2346         }  //  bootstrap_method
2347       }
2348     } // end BootstrapMethods
2349   } // Attributes
2350 } // end class CircStaticA
2351 
2352 
2353 class CircStaticB {
2354   0xCAFEBABE;
2355   0; // minor version
2356   57; // version
2357   [69] { // Constant Pool
2358     ; // first element is empty
2359     Method #13 #39; // #1     at 0x0A
2360     class #40; // #2     at 0x0F
2361     Field #2 #41; // #3     at 0x12
2362     InvokeDynamic 0s #44; // #4     at 0x17
2363     InvokeDynamic 0s #45; // #5     at 0x1C
2364     InvokeDynamic 0s #46; // #6     at 0x21
2365     InvokeDynamic 0s #47; // #7     at 0x26
2366     int 0x01234567; // #8     at 0x2B
2367     Method #2 #48; // #9     at 0x30
2368     Field #2 #49; // #10     at 0x35
2369     class #50; // #11     at 0x3A
2370     Field #2 #51; // #12     at 0x3D
2371     class #52; // #13     at 0x42
2372     Utf8 "VT"; // #14     at 0x45
2373     Utf8 "QCircStaticB;"; // #15     at 0x4A
2374     Utf8 "int_v"; // #16     at 0x5A
2375     Utf8 "I"; // #17     at 0x62
2376     Utf8 "v2"; // #18     at 0x66
2377     Utf8 "QCircStaticA;"; // #19     at 0x6B
2378     Utf8 "<init>"; // #20     at 0x7B
2379     Utf8 "()V"; // #21     at 0x84
2380     Utf8 "Code"; // #22     at 0x8A
2381     Utf8 "LineNumberTable"; // #23     at 0x91
2382     Utf8 "makeCircStaticB"; // #24     at 0xA3
2383     Utf8 "(I)QCircStaticB;"; // #25     at 0xB5
2384     Utf8 "hashCode"; // #26     at 0xC8
2385     Utf8 "()I"; // #27     at 0xD3
2386     Utf8 "equals"; // #28     at 0xD9
2387     Utf8 "(Ljava/lang/Object;)Z"; // #29     at 0xE2
2388     Utf8 "toString"; // #30     at 0xFA
2389     Utf8 "()Ljava/lang/String;"; // #31     at 0x0105
2390     Utf8 "longHashCode"; // #32     at 0x011C
2391     Utf8 "()J"; // #33     at 0x012B
2392     Utf8 "<clinit>"; // #34     at 0x0131
2393     Utf8 "$makeValue$"; // #35     at 0x013C
2394     Utf8 "()QCircStaticB;"; // #36     at 0x014A
2395     Utf8 "SourceFile"; // #37     at 0x015C
2396     Utf8 "CircStaticB.java"; // #38     at 0x0169
2397     NameAndType #20 #21; // #39     at 0x017C
2398     Utf8 "CircStaticB"; // #40     at 0x0181
2399     NameAndType #16 #17; // #41     at 0x018F
2400     Utf8 "BootstrapMethods"; // #42     at 0x0194
2401     MethodHandle 6b #53; // #43     at 0x01A7
2402     NameAndType #26 #54; // #44     at 0x01AB
2403     NameAndType #28 #55; // #45     at 0x01B0
2404     NameAndType #30 #56; // #46     at 0x01B5
2405     NameAndType #32 #57; // #47     at 0x01BA
2406     NameAndType #24 #25; // #48     at 0x01BF
2407     NameAndType #14 #15; // #49     at 0x01C4
2408     Utf8 "CircStaticA"; // #50     at 0x01C9
2409     NameAndType #18 #19; // #51     at 0x01D7
2410     Utf8 "java/lang/Object"; // #52     at 0x01DC
2411     Method #58 #59; // #53     at 0x01EF
2412     Utf8 "(Ljava/lang/Object;)I"; // #54     at 0x01F4
2413     Utf8 "(Ljava/lang/Object;Ljava/lang/Object;)Z"; // #55     at 0x020C
2414     Utf8 "(Ljava/lang/Object;)Ljava/lang/String;"; // #56     at 0x0236
2415     Utf8 "(Ljava/lang/Object;)J"; // #57     at 0x025F
2416     class #60; // #58     at 0x0277
2417     NameAndType #61 #65; // #59     at 0x027A
2418     Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #60     at 0x027F
2419     Utf8 "makeBootstrapMethod"; // #61     at 0x02A8
2420     class #67; // #62     at 0x02BE
2421     Utf8 "Lookup"; // #63     at 0x02C1
2422     Utf8 "InnerClasses"; // #64     at 0x02CA
2423     Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #65     at 0x02D9
2424     class #68; // #66     at 0x034F
2425     Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #67     at 0x0352
2426     Utf8 "java/lang/invoke/MethodHandles"; // #68     at 0x037A
2427   } // Constant Pool
2428 
2429   0x0130; // access [ ACC_SUPER ACC_FINAL ]
2430   #2;// this_cpx
2431   #13;// super_cpx
2432 
2433   [0] { // Interfaces
2434   } // Interfaces
2435 
2436   [3] { // fields
2437     { // Member at 0x03A5
2438       0x0018; // access
2439       #14; // name_cpx
2440       #15; // sig_cpx
2441       [0] { // Attributes
2442       } // Attributes
2443     } // Member
2444     ;
2445     { // Member at 0x03AD
2446       0x0010; // access
2447       #16; // name_cpx
2448       #17; // sig_cpx
2449       [0] { // Attributes
2450       } // Attributes
2451     } // Member
2452     ;
2453     { // Member at 0x03B5
2454       0x0018; // access
2455       #18; // name_cpx
2456       #19; // sig_cpx
2457       [0] { // Attributes
2458       } // Attributes
2459     } // Member
2460   } // fields
2461 
2462   [8] { // methods
2463     { // Member at 0x03BF
2464       0x0000; // access
2465       #20; // name_cpx
2466       #21; // sig_cpx
2467       [1] { // Attributes
2468         Attr(#22, 29) { // Code at 0x03C7
2469           1; // max_stack
2470           1; // max_locals
2471           Bytes[5]{
2472             0x2AB70001B1;
2473           };
2474           [0] { // Traps
2475           } // end Traps
2476           [1] { // Attributes
2477             Attr(#23, 6) { // LineNumberTable at 0x03DE
2478               [1] { // LineNumberTable
2479                 0  6; //  at 0x03EA
2480               }
2481             } // end LineNumberTable
2482           } // Attributes
2483         } // end Code
2484       } // Attributes
2485     } // Member
2486     ;
2487     { // Member at 0x03EA
2488       0x0008; // access
2489       #24; // name_cpx
2490       #25; // sig_cpx
2491       [1] { // Attributes
2492         Attr(#22, 45) { // Code at 0x03F2
2493           2; // max_stack
2494           2; // max_locals
2495           Bytes[13]{
2496             0xCB00024C1A2B5FCC;
2497             0x00034C2BB0;
2498           };
2499           [0] { // Traps
2500           } // end Traps
2501           [1] { // Attributes
2502             Attr(#23, 14) { // LineNumberTable at 0x0411
2503               [3] { // LineNumberTable
2504                 0  11; //  at 0x041D
2505                 4  12; //  at 0x0421
2506                 11  13; //  at 0x0425
2507               }
2508             } // end LineNumberTable
2509           } // Attributes
2510         } // end Code
2511       } // Attributes
2512     } // Member
2513     ;
2514     { // Member at 0x0425
2515       0x0011; // access
2516       #26; // name_cpx
2517       #27; // sig_cpx
2518       [1] { // Attributes
2519         Attr(#22, 31) { // Code at 0x042D
2520           1; // max_stack
2521           1; // max_locals
2522           Bytes[7]{
2523             0x2ABA00040000AC;
2524           };
2525           [0] { // Traps
2526           } // end Traps
2527           [1] { // Attributes
2528             Attr(#23, 6) { // LineNumberTable at 0x0446
2529               [1] { // LineNumberTable
2530                 0  1; //  at 0x0452
2531               }
2532             } // end LineNumberTable
2533           } // Attributes
2534         } // end Code
2535       } // Attributes
2536     } // Member
2537     ;
2538     { // Member at 0x0452
2539       0x0011; // access
2540       #28; // name_cpx
2541       #29; // sig_cpx
2542       [1] { // Attributes
2543         Attr(#22, 32) { // Code at 0x045A
2544           2; // max_stack
2545           2; // max_locals
2546           Bytes[8]{
2547             0x2A2BBA00050000AC;
2548           };
2549           [0] { // Traps
2550           } // end Traps
2551           [1] { // Attributes
2552             Attr(#23, 6) { // LineNumberTable at 0x0474
2553               [1] { // LineNumberTable
2554                 0  1; //  at 0x0480
2555               }
2556             } // end LineNumberTable
2557           } // Attributes
2558         } // end Code
2559       } // Attributes
2560     } // Member
2561     ;
2562     { // Member at 0x0480
2563       0x0011; // access
2564       #30; // name_cpx
2565       #31; // sig_cpx
2566       [1] { // Attributes
2567         Attr(#22, 31) { // Code at 0x0488
2568           1; // max_stack
2569           1; // max_locals
2570           Bytes[7]{
2571             0x2ABA00060000B0;
2572           };
2573           [0] { // Traps
2574           } // end Traps
2575           [1] { // Attributes
2576             Attr(#23, 6) { // LineNumberTable at 0x04A1
2577               [1] { // LineNumberTable
2578                 0  1; //  at 0x04AD
2579               }
2580             } // end LineNumberTable
2581           } // Attributes
2582         } // end Code
2583       } // Attributes
2584     } // Member
2585     ;
2586     { // Member at 0x04AD
2587       0x0011; // access
2588       #32; // name_cpx
2589       #33; // sig_cpx
2590       [1] { // Attributes
2591         Attr(#22, 31) { // Code at 0x04B5
2592           2; // max_stack
2593           1; // max_locals
2594           Bytes[7]{
2595             0x2ABA00070000AD;
2596           };
2597           [0] { // Traps
2598           } // end Traps
2599           [1] { // Attributes
2600             Attr(#23, 6) { // LineNumberTable at 0x04CE
2601               [1] { // LineNumberTable
2602                 0  1; //  at 0x04DA
2603               }
2604             } // end LineNumberTable
2605           } // Attributes
2606         } // end Code
2607       } // Attributes
2608     } // Member
2609     ;
2610     { // Member at 0x04DA
2611       0x0008; // access
2612       #34; // name_cpx
2613       #21; // sig_cpx
2614       [1] { // Attributes
2615         Attr(#22, 43) { // Code at 0x04E2
2616           1; // max_stack
2617           0; // max_locals
2618           Bytes[15]{
2619             0x1208B80009B3000A;
2620             0xCB000BB3000CB1;
2621           };
2622           [0] { // Traps
2623           } // end Traps
2624           [1] { // Attributes
2625             Attr(#23, 10) { // LineNumberTable at 0x0503
2626               [2] { // LineNumberTable
2627                 0  2; //  at 0x050F
2628                 8  4; //  at 0x0513
2629               }
2630             } // end LineNumberTable
2631           } // Attributes
2632         } // end Code
2633       } // Attributes
2634     } // Member
2635     ;
2636     { // Member at 0x0513
2637       0x1008; // access
2638       #35; // name_cpx
2639       #36; // sig_cpx
2640       [1] { // Attributes
2641         Attr(#22, 45) { // Code at 0x051B
2642           2; // max_stack
2643           1; // max_locals
2644           Bytes[13]{
2645             0xCB00024B042A5FCC;
2646             0x00034B2AB0;
2647           };
2648           [0] { // Traps
2649           } // end Traps
2650           [1] { // Attributes
2651             Attr(#23, 14) { // LineNumberTable at 0x053A
2652               [3] { // LineNumberTable
2653                 0  6; //  at 0x0546
2654                 4  7; //  at 0x054A
2655                 11  8; //  at 0x054E
2656               }
2657             } // end LineNumberTable
2658           } // Attributes
2659         } // end Code
2660       } // Attributes
2661     } // Member
2662   } // methods
2663 
2664   [3] { // Attributes
2665     Attr(#37, 2) { // SourceFile at 0x0550
2666       #38;
2667     } // end SourceFile
2668     ;
2669     Attr(#64, 10) { // InnerClasses at 0x0558
2670       [1] { // InnerClasses
2671         #62 #66 #63 25; //  at 0x0568
2672       }
2673     } // end InnerClasses
2674     ;
2675     Attr(#42, 6) { // BootstrapMethods at 0x0568
2676       [1] { // bootstrap_methods
2677         {  //  bootstrap_method
2678           #43; // bootstrap_method_ref
2679           [0] { // bootstrap_arguments
2680           }  //  bootstrap_arguments
2681         }  //  bootstrap_method
2682       }
2683     } // end BootstrapMethods
2684   } // Attributes
2685 } // end class CircStaticB
2686 
2687 
2688 //////////////////////////////////////////////////////////////////////
2689 
2690 // Test that a value type cannot be Cloneable.
2691 //
2692 // final value class ValueCloneable implements Cloneable {
2693 //    final int field;
2694 //    private ValueCloneable() { field = 0; }
2695 //}
2696 
2697 class ValueCloneable {
2698   0xCAFEBABE;
2699   0; // minor version
2700   57; // version
2701   [20] { // Constant Pool
2702     ; // first element is empty
2703     Method #4 #14; // #1     at 0x0A
2704     Field #3 #15; // #2     at 0x0F
2705     class #16; // #3     at 0x14
2706     class #18; // #4     at 0x17
2707     class #19; // #5     at 0x1A
2708     Utf8 "field"; // #6     at 0x1D
2709     Utf8 "I"; // #7     at 0x25
2710     Utf8 "<init>"; // #8     at 0x29
2711     Utf8 "()V"; // #9     at 0x32
2712     Utf8 "Code"; // #10     at 0x38
2713     Utf8 "LineNumberTable"; // #11     at 0x3F
2714     Utf8 "SourceFile"; // #12     at 0x51
2715     Utf8 "ValueCloneable.java"; // #13     at 0x5E
2716     NameAndType #8 #9; // #14     at 0x74
2717     NameAndType #6 #7; // #15     at 0x79
2718     Utf8 "ValueCloneable"; // #16     at 0x7E
2719     Utf8 "ValueTypes"; // #17     at 0x8F
2720     Utf8 "java/lang/Object"; // #18     at 0x9C
2721     Utf8 "java/lang/Cloneable"; // #19     at 0xAF
2722   } // Constant Pool
2723 
2724   0x0130; // access [ ACC_SUPER ACC_FINAL ]
2725   #3;// this_cpx
2726   #4;// super_cpx
2727 
2728   [1] { // Interfaces
2729     #5;
2730   } // Interfaces
2731 
2732   [1] { // fields
2733     { // Member at 0xD1
2734       0x0010; // access
2735       #6; // name_cpx
2736       #7; // sig_cpx
2737       [0] { // Attributes
2738       } // Attributes
2739     } // Member
2740   } // fields
2741 
2742   [1] { // methods
2743     { // Member at 0xDB
2744       0x0002; // access
2745       #8; // name_cpx
2746       #9; // sig_cpx
2747       [1] { // Attributes
2748         Attr(#10, 34) { // Code at 0xE3
2749           2; // max_stack
2750           1; // max_locals
2751           Bytes[10]{
2752             0x2AB700012A03B500;
2753             0x02B1;
2754           };
2755           [0] { // Traps
2756           } // end Traps
2757           [1] { // Attributes
2758             Attr(#11, 6) { // LineNumberTable at 0xFF
2759               [1] { // LineNumberTable
2760                 0  3; //  at 0x010B
2761               }
2762             } // end LineNumberTable
2763           } // Attributes
2764         } // end Code
2765       } // Attributes
2766     } // Member
2767   } // methods
2768 
2769   [2] { // Attributes
2770     Attr(#12, 2) { // SourceFile at 0x010D
2771       #13;
2772     } // end SourceFile
2773     ;
2774     Attr(#17, 4) { // ValueTypes at 0x0115
2775       0x00010003;
2776     } // end ValueTypes
2777   } // Attributes
2778 } // end class ValueCloneable