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 __ByValue 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 = __MakeDefault Value();
  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_ABSTRATCT set.
  47 //
  48 class ValueAbstract {
  49   0xCAFEBABE;
  50   0; // minor version
  51   55; // 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   55; // 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   55; // 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   55; // 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   55; // 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   55; // 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   55; // 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   55; // 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 __ByValue class Circ {
1283 //     static final Circ VT = makeCirc(0x01234567);
1284 //     final int int_v;
1285 //     __Flattenable final Circ2 v2;
1286 //     Circ() {
1287 //         int_v = 1;
1288 //         v2 = __MakeDefault Circ2();
1289 //     }
1290 //     static Circ makeCirc(int x) {
1291 //         Circ v = __MakeDefault Circ();
1292 //         v = __WithField(v.int_v, x);
1293 //         return v;
1294 //     }
1295 // }
1296 //----------------------------------------------------------------
1297 // final __ByValue class Circ2 {
1298 //     static final Circ2 VT = makeCirc2('\u0123');
1299 //     final char char_v;
1300 //     __Flattenable final Circ vv;
1301 //     Circ2() {
1302 //         char_v = 'z';
1303 //         vv = __MakeDefault Circ();
1304 //     }
1305 //     static Circ2 makeCirc2(char c) {
1306 //         Circ2 v = __MakeDefault Circ2();
1307 //         v = __WithField(v.char_v, c);
1308 //         return v;
1309 //     }
1310 // }
1311 
1312 class Circ {
1313   0xCAFEBABE;
1314   0; // minor version
1315   55; // version
1316   [34] { // Constant Pool
1317     ; // first element is empty
1318     Method #9 #28; // #1     at 0x0A
1319     Field #5 #29; // #2     at 0x0F
1320     class #17; // #3     at 0x14
1321     Field #5 #30; // #4     at 0x17
1322     class #11; // #5     at 0x1C
1323     int 0x01234567; // #6     at 0x1F
1324     Method #5 #31; // #7     at 0x24
1325     Field #5 #32; // #8     at 0x29
1326     class #33; // #9     at 0x2E
1327     Utf8 "VT"; // #10     at 0x31
1328     Utf8 "Circ"; // #11     at 0x36
1329     Utf8 "ValueTypes"; // #12     at 0x3D
1330     Utf8 "LCirc;"; // #13     at 0x4A
1331     Utf8 "int_v"; // #14     at 0x53
1332     Utf8 "I"; // #15     at 0x5B
1333     Utf8 "v2"; // #16     at 0x5F
1334     Utf8 "Circ2"; // #17     at 0x64
1335     Utf8 "LCirc2;"; // #18     at 0x6C
1336     Utf8 "<init>"; // #19     at 0x76
1337     Utf8 "()V"; // #20     at 0x7F
1338     Utf8 "Code"; // #21     at 0x85
1339     Utf8 "LineNumberTable"; // #22     at 0x8C
1340     Utf8 "makeCirc"; // #23     at 0x9E
1341     Utf8 "(I)LCirc;"; // #24     at 0xA9
1342     Utf8 "<clinit>"; // #25     at 0xB5
1343     Utf8 "SourceFile"; // #26     at 0xC0
1344     Utf8 "Circ.java"; // #27     at 0xCD
1345     NameAndType #19 #20; // #28     at 0xD9
1346     NameAndType #14 #15; // #29     at 0xDE
1347     NameAndType #16 #18; // #30     at 0xE3
1348     NameAndType #23 #24; // #31     at 0xE8
1349     NameAndType #10 #13; // #32     at 0xED
1350     Utf8 "java/lang/Object"; // #33     at 0xF2
1351   } // Constant Pool
1352 
1353   0x0130; // access [ ACC_SUPER ACC_FINAL ]
1354   #5;// this_cpx
1355   #9;// super_cpx
1356 
1357   [0] { // Interfaces
1358   } // Interfaces
1359 
1360   [3] { // fields
1361     { // Member at 0x010F
1362       0x0118; // access
1363       #10; // name_cpx
1364       #13; // sig_cpx
1365       [0] { // Attributes
1366       } // Attributes
1367     } // Member
1368     ;
1369     { // Member at 0x0117
1370       0x0010; // access
1371       #14; // name_cpx
1372       #15; // sig_cpx
1373       [0] { // Attributes
1374       } // Attributes
1375     } // Member
1376     ;
1377     { // Member at 0x011F
1378       0x0110; // access
1379       #16; // name_cpx
1380       #18; // sig_cpx
1381       [0] { // Attributes
1382       } // Attributes
1383     } // Member
1384   } // fields
1385 
1386   [3] { // methods
1387     { // Member at 0x0129
1388       0x0000; // access
1389       #19; // name_cpx
1390       #20; // sig_cpx
1391       [1] { // Attributes
1392         Attr(#21, 53) { // Code at 0x0131
1393           2; // max_stack
1394           1; // max_locals
1395           Bytes[17]{
1396             0x2AB700012A04B500;
1397             0x022ACB0003B50004;
1398             0xB1;
1399           };
1400           [0] { // Traps
1401           } // end Traps
1402           [1] { // Attributes
1403             Attr(#22, 18) { // LineNumberTable at 0x0154
1404               [4] { // LineNumberTable
1405                 0  5; //  at 0x0160
1406                 4  6; //  at 0x0164
1407                 9  7; //  at 0x0168
1408                 16  8; //  at 0x016C
1409               }
1410             } // end LineNumberTable
1411           } // Attributes
1412         } // end Code
1413       } // Attributes
1414     } // Member
1415     ;
1416     { // Member at 0x016C
1417       0x0008; // access
1418       #23; // name_cpx
1419       #24; // sig_cpx
1420       [1] { // Attributes
1421         Attr(#21, 44) { // Code at 0x0174
1422           2; // max_stack
1423           2; // max_locals
1424           Bytes[12]{
1425             0xCB00054C2B1ACC00;
1426             0x024C2BB0;
1427           };
1428           [0] { // Traps
1429           } // end Traps
1430           [1] { // Attributes
1431             Attr(#22, 14) { // LineNumberTable at 0x0192
1432               [3] { // LineNumberTable
1433                 0  10; //  at 0x019E
1434                 4  11; //  at 0x01A2
1435                 10  12; //  at 0x01A6
1436               }
1437             } // end LineNumberTable
1438           } // Attributes
1439         } // end Code
1440       } // Attributes
1441     } // Member
1442     ;
1443     { // Member at 0x01A6
1444       0x0008; // access
1445       #25; // name_cpx
1446       #20; // sig_cpx
1447       [1] { // Attributes
1448         Attr(#21, 33) { // Code at 0x01AE
1449           1; // max_stack
1450           0; // max_locals
1451           Bytes[9]{
1452             0x1206B80007B30008;
1453             0xB1;
1454           };
1455           [0] { // Traps
1456           } // end Traps
1457           [1] { // Attributes
1458             Attr(#22, 6) { // LineNumberTable at 0x01C9
1459               [1] { // LineNumberTable
1460                 0  2; //  at 0x01D5
1461               }
1462             } // end LineNumberTable
1463           } // Attributes
1464         } // end Code
1465       } // Attributes
1466     } // Member
1467   } // methods
1468 
1469   [2] { // Attributes
1470     Attr(#26, 2) { // SourceFile at 0x01D7
1471       #27;
1472     } // end SourceFile
1473     ;
1474     Attr(#12, 6) { // ValueTypes at 0x01DF
1475       0x000200050003;
1476     } // end ValueTypes
1477   } // Attributes
1478 } // end class Circ
1479 
1480 class Circ2 {
1481   0xCAFEBABE;
1482   0; // minor version
1483   55; // version
1484   [33] { // Constant Pool
1485     ; // first element is empty
1486     Method #8 #27; // #1     at 0x0A
1487     Field #5 #28; // #2     at 0x0F
1488     class #16; // #3     at 0x14
1489     Field #5 #29; // #4     at 0x17
1490     class #10; // #5     at 0x1C
1491     Method #5 #30; // #6     at 0x1F
1492     Field #5 #31; // #7     at 0x24
1493     class #32; // #8     at 0x29
1494     Utf8 "VT"; // #9     at 0x2C
1495     Utf8 "Circ2"; // #10     at 0x31
1496     Utf8 "ValueTypes"; // #11     at 0x39
1497     Utf8 "LCirc2;"; // #12     at 0x46
1498     Utf8 "char_v"; // #13     at 0x50
1499     Utf8 "C"; // #14     at 0x59
1500     Utf8 "vv"; // #15     at 0x5D
1501     Utf8 "Circ"; // #16     at 0x62
1502     Utf8 "LCirc;"; // #17     at 0x69
1503     Utf8 "<init>"; // #18     at 0x72
1504     Utf8 "()V"; // #19     at 0x7B
1505     Utf8 "Code"; // #20     at 0x81
1506     Utf8 "LineNumberTable"; // #21     at 0x88
1507     Utf8 "makeCirc2"; // #22     at 0x9A
1508     Utf8 "(C)LCirc2;"; // #23     at 0xA6
1509     Utf8 "<clinit>"; // #24     at 0xB3
1510     Utf8 "SourceFile"; // #25     at 0xBE
1511     Utf8 "Circ2.java"; // #26     at 0xCB
1512     NameAndType #18 #19; // #27     at 0xD8
1513     NameAndType #13 #14; // #28     at 0xDD
1514     NameAndType #15 #17; // #29     at 0xE2
1515     NameAndType #22 #23; // #30     at 0xE7
1516     NameAndType #9 #12; // #31     at 0xEC
1517     Utf8 "java/lang/Object"; // #32     at 0xF1
1518   } // Constant Pool
1519 
1520   0x0130; // access [ ACC_SUPER ACC_FINAL ]
1521   #5;// this_cpx
1522   #8;// super_cpx
1523 
1524   [0] { // Interfaces
1525   } // Interfaces
1526 
1527   [3] { // fields
1528     { // Member at 0x010E
1529       0x0118; // access
1530       #9; // name_cpx
1531       #12; // sig_cpx
1532       [0] { // Attributes
1533       } // Attributes
1534     } // Member
1535     ;
1536     { // Member at 0x0116
1537       0x0010; // access
1538       #13; // name_cpx
1539       #14; // sig_cpx
1540       [0] { // Attributes
1541       } // Attributes
1542     } // Member
1543     ;
1544     { // Member at 0x011E
1545       0x0110; // access
1546       #15; // name_cpx
1547       #17; // sig_cpx
1548       [0] { // Attributes
1549       } // Attributes
1550     } // Member
1551   } // fields
1552 
1553   [3] { // methods
1554     { // Member at 0x0128
1555       0x0000; // access
1556       #18; // name_cpx
1557       #19; // sig_cpx
1558       [1] { // Attributes
1559         Attr(#20, 54) { // Code at 0x0130
1560           2; // max_stack
1561           1; // max_locals
1562           Bytes[18]{
1563             0x2AB700012A107AB5;
1564             0x00022ACB0003B500;
1565             0x04B1;
1566           };
1567           [0] { // Traps
1568           } // end Traps
1569           [1] { // Attributes
1570             Attr(#21, 18) { // LineNumberTable at 0x0154
1571               [4] { // LineNumberTable
1572                 0  5; //  at 0x0160
1573                 4  6; //  at 0x0164
1574                 10  7; //  at 0x0168
1575                 17  8; //  at 0x016C
1576               }
1577             } // end LineNumberTable
1578           } // Attributes
1579         } // end Code
1580       } // Attributes
1581     } // Member
1582     ;
1583     { // Member at 0x016C
1584       0x0008; // access
1585       #22; // name_cpx
1586       #23; // sig_cpx
1587       [1] { // Attributes
1588         Attr(#20, 44) { // Code at 0x0174
1589           2; // max_stack
1590           2; // max_locals
1591           Bytes[12]{
1592             0xCB00054C2B1ACC00;
1593             0x024C2BB0;
1594           };
1595           [0] { // Traps
1596           } // end Traps
1597           [1] { // Attributes
1598             Attr(#21, 14) { // LineNumberTable at 0x0192
1599               [3] { // LineNumberTable
1600                 0  10; //  at 0x019E
1601                 4  11; //  at 0x01A2
1602                 10  12; //  at 0x01A6
1603               }
1604             } // end LineNumberTable
1605           } // Attributes
1606         } // end Code
1607       } // Attributes
1608     } // Member
1609     ;
1610     { // Member at 0x01A6
1611       0x0008; // access
1612       #24; // name_cpx
1613       #19; // sig_cpx
1614       [1] { // Attributes
1615         Attr(#20, 34) { // Code at 0x01AE
1616           1; // max_stack
1617           0; // max_locals
1618           Bytes[10]{
1619             0x110123B80006B300;
1620             0x07B1;
1621           };
1622           [0] { // Traps
1623           } // end Traps
1624           [1] { // Attributes
1625             Attr(#21, 6) { // LineNumberTable at 0x01CA
1626               [1] { // LineNumberTable
1627                 0  2; //  at 0x01D6
1628               }
1629             } // end LineNumberTable
1630           } // Attributes
1631         } // end Code
1632       } // Attributes
1633     } // Member
1634   } // methods
1635 
1636   [2] { // Attributes
1637     Attr(#25, 2) { // SourceFile at 0x01D8
1638       #26;
1639     } // end SourceFile
1640     ;
1641     Attr(#11, 6) { // ValueTypes at 0x01E0
1642       0x000200030005;
1643     } // end ValueTypes
1644   } // Attributes
1645 } // end class Circ2
1646 
1647 //////////////////////////////////////////////////////////////////////
1648 
1649 // Value types CircStaticA and CircStaticB have static fields of each other's
1650 // type.  This should cause a ClassCircularityError exception when one of them
1651 // is being loaded.
1652 //
1653 // The value types are based on these two Java classes:
1654 //
1655 // final __ByValue class CircStaticA {
1656 //     static final CircStaticA VT = makeCircStaticA(0x01234567);
1657 //     final int int_v;
1658 //     __Flattenable static final CircStaticB v2 = __MakeDefault CircStaticB();
1659 //     CircStaticA() {
1660 //         int_v = 1;
1661 //     }
1662 //     static CircStaticA makeCircStaticA(int x) {
1663 //         CircStaticA v = __MakeDefault CircStaticA();
1664 //         v = __WithField(v.int_v, x);
1665 //         return v;
1666 //     }
1667 // }
1668 //----------------------------------------------------------------
1669 // final __ByValue class CircStaticB {
1670 //     static final CircStaticB VT = makeCircStaticB(0x01234567);
1671 //     final int int_v;
1672 //     __Flattenable static final CircStaticA v2 = __MakeDefault CircStaticA();
1673 //     CircStaticB() {
1674 //         int_v = 1;
1675 //     }
1676 //     static CircStaticB makeCircStaticB(int x) {
1677 //         CircStaticB v = __MakeDefault CircStaticB();
1678 //         v = __WithField(v.int_v, x);
1679 //         return v;
1680 //     }
1681 // }
1682 
1683 class CircStaticA {
1684   0xCAFEBABE;
1685   0; // minor version
1686   55; // version
1687   [34] { // Constant Pool
1688     ; // first element is empty
1689     Method #9 #28; // #1     at 0x0A
1690     Field #3 #29; // #2     at 0x0F
1691     class #11; // #3     at 0x14
1692     int 0x01234567; // #4     at 0x17
1693     Method #3 #30; // #5     at 0x1C
1694     Field #3 #31; // #6     at 0x21
1695     class #17; // #7     at 0x26
1696     Field #3 #32; // #8     at 0x29
1697     class #33; // #9     at 0x2E
1698     Utf8 "VT"; // #10     at 0x31
1699     Utf8 "CircStaticA"; // #11     at 0x36
1700     Utf8 "ValueTypes"; // #12     at 0x44
1701     Utf8 "LCircStaticA;"; // #13     at 0x51
1702     Utf8 "int_v"; // #14     at 0x61
1703     Utf8 "I"; // #15     at 0x69
1704     Utf8 "v2"; // #16     at 0x6D
1705     Utf8 "CircStaticB"; // #17     at 0x72
1706     Utf8 "LCircStaticB;"; // #18     at 0x80
1707     Utf8 "<init>"; // #19     at 0x90
1708     Utf8 "()V"; // #20     at 0x99
1709     Utf8 "Code"; // #21     at 0x9F
1710     Utf8 "LineNumberTable"; // #22     at 0xA6
1711     Utf8 "makeCircStaticA"; // #23     at 0xB8
1712     Utf8 "(I)LCircStaticA;"; // #24     at 0xCA
1713     Utf8 "<clinit>"; // #25     at 0xDD
1714     Utf8 "SourceFile"; // #26     at 0xE8
1715     Utf8 "CircStaticA.java"; // #27     at 0xF5
1716     NameAndType #19 #20; // #28     at 0x0108
1717     NameAndType #14 #15; // #29     at 0x010D
1718     NameAndType #23 #24; // #30     at 0x0112
1719     NameAndType #10 #13; // #31     at 0x0117
1720     NameAndType #16 #18; // #32     at 0x011C
1721     Utf8 "java/lang/Object"; // #33     at 0x0121
1722   } // Constant Pool
1723 
1724   0x0130; // access [ ACC_SUPER ACC_FINAL ]
1725   #3;// this_cpx
1726   #9;// super_cpx
1727 
1728   [0] { // Interfaces
1729   } // Interfaces
1730 
1731   [3] { // fields
1732     { // Member at 0x013E
1733       0x0118; // access
1734       #10; // name_cpx
1735       #13; // sig_cpx
1736       [0] { // Attributes
1737       } // Attributes
1738     } // Member
1739     ;
1740     { // Member at 0x0146
1741       0x0010; // access
1742       #14; // name_cpx
1743       #15; // sig_cpx
1744       [0] { // Attributes
1745       } // Attributes
1746     } // Member
1747     ;
1748     { // Member at 0x014E
1749       0x0118; // access
1750       #16; // name_cpx
1751       #18; // sig_cpx
1752       [0] { // Attributes
1753       } // Attributes
1754     } // Member
1755   } // fields
1756 
1757   [3] { // methods
1758     { // Member at 0x0158
1759       0x0000; // access
1760       #19; // name_cpx
1761       #20; // sig_cpx
1762       [1] { // Attributes
1763         Attr(#21, 42) { // Code at 0x0160
1764           2; // max_stack
1765           1; // max_locals
1766           Bytes[10]{
1767             0x2AB700012A04B500;
1768             0x02B1;
1769           };
1770           [0] { // Traps
1771           } // end Traps
1772           [1] { // Attributes
1773             Attr(#22, 14) { // LineNumberTable at 0x017C
1774               [3] { // LineNumberTable
1775                 0  5; //  at 0x0188
1776                 4  6; //  at 0x018C
1777                 9  7; //  at 0x0190
1778               }
1779             } // end LineNumberTable
1780           } // Attributes
1781         } // end Code
1782       } // Attributes
1783     } // Member
1784     ;
1785     { // Member at 0x0190
1786       0x0008; // access
1787       #23; // name_cpx
1788       #24; // sig_cpx
1789       [1] { // Attributes
1790         Attr(#21, 44) { // Code at 0x0198
1791           2; // max_stack
1792           2; // max_locals
1793           Bytes[12]{
1794             0xCB00034C2B1ACC00;
1795             0x024C2BB0;
1796           };
1797           [0] { // Traps
1798           } // end Traps
1799           [1] { // Attributes
1800             Attr(#22, 14) { // LineNumberTable at 0x01B6
1801               [3] { // LineNumberTable
1802                 0  9; //  at 0x01C2
1803                 4  10; //  at 0x01C6
1804                 10  11; //  at 0x01CA
1805               }
1806             } // end LineNumberTable
1807           } // Attributes
1808         } // end Code
1809       } // Attributes
1810     } // Member
1811     ;
1812     { // Member at 0x01CA
1813       0x0008; // access
1814       #25; // name_cpx
1815       #20; // sig_cpx
1816       [1] { // Attributes
1817         Attr(#21, 43) { // Code at 0x01D2
1818           1; // max_stack
1819           0; // max_locals
1820           Bytes[15]{
1821             0x1204B80005B30006;
1822             0xCB0007B30008B1;
1823           };
1824           [0] { // Traps
1825           } // end Traps
1826           [1] { // Attributes
1827             Attr(#22, 10) { // LineNumberTable at 0x01F3
1828               [2] { // LineNumberTable
1829                 0  2; //  at 0x01FF
1830                 8  4; //  at 0x0203
1831               }
1832             } // end LineNumberTable
1833           } // Attributes
1834         } // end Code
1835       } // Attributes
1836     } // Member
1837   } // methods
1838 
1839   [2] { // Attributes
1840     Attr(#26, 2) { // SourceFile at 0x0205
1841       #27;
1842     } // end SourceFile
1843     ;
1844     Attr(#12, 6) { // ValueTypes at 0x020D
1845       0x000200030007;
1846     } // end ValueTypes
1847   } // Attributes
1848 } // end class CircStaticA
1849 
1850 class CircStaticB {
1851   0xCAFEBABE;
1852   0; // minor version
1853   55; // version
1854   [34] { // Constant Pool
1855     ; // first element is empty
1856     Method #9 #28; // #1     at 0x0A
1857     Field #3 #29; // #2     at 0x0F
1858     class #11; // #3     at 0x14
1859     int 0x01234567; // #4     at 0x17
1860     Method #3 #30; // #5     at 0x1C
1861     Field #3 #31; // #6     at 0x21
1862     class #17; // #7     at 0x26
1863     Field #3 #32; // #8     at 0x29
1864     class #33; // #9     at 0x2E
1865     Utf8 "VT"; // #10     at 0x31
1866     Utf8 "CircStaticB"; // #11     at 0x36
1867     Utf8 "ValueTypes"; // #12     at 0x44
1868     Utf8 "LCircStaticB;"; // #13     at 0x51
1869     Utf8 "int_v"; // #14     at 0x61
1870     Utf8 "I"; // #15     at 0x69
1871     Utf8 "v2"; // #16     at 0x6D
1872     Utf8 "CircStaticA"; // #17     at 0x72
1873     Utf8 "LCircStaticA;"; // #18     at 0x80
1874     Utf8 "<init>"; // #19     at 0x90
1875     Utf8 "()V"; // #20     at 0x99
1876     Utf8 "Code"; // #21     at 0x9F
1877     Utf8 "LineNumberTable"; // #22     at 0xA6
1878     Utf8 "makeCircStaticB"; // #23     at 0xB8
1879     Utf8 "(I)LCircStaticB;"; // #24     at 0xCA
1880     Utf8 "<clinit>"; // #25     at 0xDD
1881     Utf8 "SourceFile"; // #26     at 0xE8
1882     Utf8 "CircStaticB.java"; // #27     at 0xF5
1883     NameAndType #19 #20; // #28     at 0x0108
1884     NameAndType #14 #15; // #29     at 0x010D
1885     NameAndType #23 #24; // #30     at 0x0112
1886     NameAndType #10 #13; // #31     at 0x0117
1887     NameAndType #16 #18; // #32     at 0x011C
1888     Utf8 "java/lang/Object"; // #33     at 0x0121
1889   } // Constant Pool
1890 
1891   0x0130; // access [ ACC_SUPER ACC_FINAL ]
1892   #3;// this_cpx
1893   #9;// super_cpx
1894 
1895   [0] { // Interfaces
1896   } // Interfaces
1897 
1898   [3] { // fields
1899     { // Member at 0x013E
1900       0x0118; // access
1901       #10; // name_cpx
1902       #13; // sig_cpx
1903       [0] { // Attributes
1904       } // Attributes
1905     } // Member
1906     ;
1907     { // Member at 0x0146
1908       0x0010; // access
1909       #14; // name_cpx
1910       #15; // sig_cpx
1911       [0] { // Attributes
1912       } // Attributes
1913     } // Member
1914     ;
1915     { // Member at 0x014E
1916       0x0118; // access
1917       #16; // name_cpx
1918       #18; // sig_cpx
1919       [0] { // Attributes
1920       } // Attributes
1921     } // Member
1922   } // fields
1923 
1924   [3] { // methods
1925     { // Member at 0x0158
1926       0x0000; // access
1927       #19; // name_cpx
1928       #20; // sig_cpx
1929       [1] { // Attributes
1930         Attr(#21, 42) { // Code at 0x0160
1931           2; // max_stack
1932           1; // max_locals
1933           Bytes[10]{
1934             0x2AB700012A04B500;
1935             0x02B1;
1936           };
1937           [0] { // Traps
1938           } // end Traps
1939           [1] { // Attributes
1940             Attr(#22, 14) { // LineNumberTable at 0x017C
1941               [3] { // LineNumberTable
1942                 0  5; //  at 0x0188
1943                 4  6; //  at 0x018C
1944                 9  7; //  at 0x0190
1945               }
1946             } // end LineNumberTable
1947           } // Attributes
1948         } // end Code
1949       } // Attributes
1950     } // Member
1951     ;
1952     { // Member at 0x0190
1953       0x0008; // access
1954       #23; // name_cpx
1955       #24; // sig_cpx
1956       [1] { // Attributes
1957         Attr(#21, 44) { // Code at 0x0198
1958           2; // max_stack
1959           2; // max_locals
1960           Bytes[12]{
1961             0xCB00034C2B1ACC00;
1962             0x024C2BB0;
1963           };
1964           [0] { // Traps
1965           } // end Traps
1966           [1] { // Attributes
1967             Attr(#22, 14) { // LineNumberTable at 0x01B6
1968               [3] { // LineNumberTable
1969                 0  9; //  at 0x01C2
1970                 4  10; //  at 0x01C6
1971                 10  11; //  at 0x01CA
1972               }
1973             } // end LineNumberTable
1974           } // Attributes
1975         } // end Code
1976       } // Attributes
1977     } // Member
1978     ;
1979     { // Member at 0x01CA
1980       0x0008; // access
1981       #25; // name_cpx
1982       #20; // sig_cpx
1983       [1] { // Attributes
1984         Attr(#21, 43) { // Code at 0x01D2
1985           1; // max_stack
1986           0; // max_locals
1987           Bytes[15]{
1988             0x1204B80005B30006;
1989             0xCB0007B30008B1;
1990           };
1991           [0] { // Traps
1992           } // end Traps
1993           [1] { // Attributes
1994             Attr(#22, 10) { // LineNumberTable at 0x01F3
1995               [2] { // LineNumberTable
1996                 0  2; //  at 0x01FF
1997                 8  4; //  at 0x0203
1998               }
1999             } // end LineNumberTable
2000           } // Attributes
2001         } // end Code
2002       } // Attributes
2003     } // Member
2004   } // methods
2005 
2006   [2] { // Attributes
2007     Attr(#26, 2) { // SourceFile at 0x0205
2008       #27;
2009     } // end SourceFile
2010     ;
2011     Attr(#12, 6) { // ValueTypes at 0x020D
2012       0x000200070003;
2013     } // end ValueTypes
2014   } // Attributes
2015 } // end class CircStaticB
2016 
2017 //////////////////////////////////////////////////////////////////////
2018 
2019 // Test that a value type cannot be Cloneable.
2020 //
2021 // final __ByValue class ValueCloneable implements Cloneable {
2022 //    final int field;
2023 //    private ValueCloneable() { field = 0; }
2024 //}
2025 
2026 class ValueCloneable {
2027   0xCAFEBABE;
2028   0; // minor version
2029   55; // version
2030   [20] { // Constant Pool
2031     ; // first element is empty
2032     Method #4 #14; // #1     at 0x0A
2033     Field #3 #15; // #2     at 0x0F
2034     class #16; // #3     at 0x14
2035     class #18; // #4     at 0x17
2036     class #19; // #5     at 0x1A
2037     Utf8 "field"; // #6     at 0x1D
2038     Utf8 "I"; // #7     at 0x25
2039     Utf8 "<init>"; // #8     at 0x29
2040     Utf8 "()V"; // #9     at 0x32
2041     Utf8 "Code"; // #10     at 0x38
2042     Utf8 "LineNumberTable"; // #11     at 0x3F
2043     Utf8 "SourceFile"; // #12     at 0x51
2044     Utf8 "ValueCloneable.java"; // #13     at 0x5E
2045     NameAndType #8 #9; // #14     at 0x74
2046     NameAndType #6 #7; // #15     at 0x79
2047     Utf8 "ValueCloneable"; // #16     at 0x7E
2048     Utf8 "ValueTypes"; // #17     at 0x8F
2049     Utf8 "java/lang/Object"; // #18     at 0x9C
2050     Utf8 "java/lang/Cloneable"; // #19     at 0xAF
2051   } // Constant Pool
2052 
2053   0x0130; // access [ ACC_SUPER ACC_FINAL ]
2054   #3;// this_cpx
2055   #4;// super_cpx
2056 
2057   [1] { // Interfaces
2058     #5;
2059   } // Interfaces
2060 
2061   [1] { // fields
2062     { // Member at 0xD1
2063       0x0010; // access
2064       #6; // name_cpx
2065       #7; // sig_cpx
2066       [0] { // Attributes
2067       } // Attributes
2068     } // Member
2069   } // fields
2070 
2071   [1] { // methods
2072     { // Member at 0xDB
2073       0x0002; // access
2074       #8; // name_cpx
2075       #9; // sig_cpx
2076       [1] { // Attributes
2077         Attr(#10, 34) { // Code at 0xE3
2078           2; // max_stack
2079           1; // max_locals
2080           Bytes[10]{
2081             0x2AB700012A03B500;
2082             0x02B1;
2083           };
2084           [0] { // Traps
2085           } // end Traps
2086           [1] { // Attributes
2087             Attr(#11, 6) { // LineNumberTable at 0xFF
2088               [1] { // LineNumberTable
2089                 0  3; //  at 0x010B
2090               }
2091             } // end LineNumberTable
2092           } // Attributes
2093         } // end Code
2094       } // Attributes
2095     } // Member
2096   } // methods
2097 
2098   [2] { // Attributes
2099     Attr(#12, 2) { // SourceFile at 0x010D
2100       #13;
2101     } // end SourceFile
2102     ;
2103     Attr(#17, 4) { // ValueTypes at 0x0115
2104       0x00010003;
2105     } // end ValueTypes
2106   } // Attributes
2107 } // end class ValueCloneable