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 /*
  26  * @test
  27  * @bug 8210351
  28  * @summary Check that IllegalAccessError exceptions get thrown if a class that
  29  *          is not a nestmate of a value type tries to write to the value type's
  30  *          final fields.
  31  * @compile -XDemitQtypes WithFieldNoAccessTest.jcod
  32  * @run main/othervm -XX:+EnableValhalla WithFieldNoAccessTest
  33  */
  34 
  35 // This test is based on the below Java program.  The only difference is that
  36 // the nestmate attributes have been removed.  So, value type WithFieldNoAccessTest
  37 // and WithFieldNoAccessTest$V are no longer nestmates.  This should cause
  38 // IllegalAccessError exceptions when WithFieldNoAccessTest tries to write, using
  39 // withfield, to value type WithFieldNoAccessTest$V's final fields.
  40 //
  41 // public class WithFieldNoAccessTest {
  42 //
  43 //  public static final value class V {
  44 //      public final char c;
  45 //      protected final long l;
  46 //      private final int i;
  47 //      V() {
  48 //          this.c = '0';
  49 //          this.l = 0;
  50 //          this.i = 0;
  51 //      }
  52 //
  53 //      public static V make(char c, long l, int i) {
  54 //          V v = V.default;
  55 //          v = __WithField(v.c, c);
  56 //          v = __WithField(v.l, l);
  57 //          v = __WithField(v.i, i);
  58 //          return v;
  59 //      }
  60 //  }
  61 //
  62 //  public static void main(String... args) throws Throwable {
  63 //      try {
  64 //          V v = __WithField(V.make('a', 5, 10).c, 'b');
  65 //          throw new RuntimeException("Failed to throw IllegalAccessError exception for final public field");
  66 //      } catch (java.lang.IllegalAccessError e) {
  67 //          if (!e.toString().contains("Update to non-static final field WithFieldNoAccessTest$V.c attempted")) {
  68 //              throw new RuntimeException("Unexpected IllegalAccessError: " + e.toString());
  69 //          }
  70 //      }
  71 //
  72 //      try {
  73 //          V v = __WithField(V.make('a', 5, 10).l, 25);
  74 //          throw new RuntimeException("Failed to throw IllegalAccessError exception for final protected field");
  75 //      } catch (java.lang.IllegalAccessError e) {
  76 //          if (!e.toString().contains("Update to non-static final field WithFieldNoAccessTest$V.l attempted")) {
  77 //              throw new RuntimeException("Unexpected IllegalAccessError: " +  e.toString());
  78 //          }
  79 //      }
  80 //
  81 //      try {
  82 //          V v = __WithField(V.make('a', 5, 10).i, 20);
  83 //          throw new RuntimeException("Failed to throw IllegalAccessError exception for final private field");
  84 //      } catch (java.lang.IllegalAccessError e) {
  85 //          if (!e.toString().contains("WithFieldNoAccessTest tried to access private field WithFieldNoAccessTest$V.i")) {
  86 //              throw new RuntimeException("Unexpected IllegalAccessError: " + e.toString());
  87 //          }
  88 //      }
  89 //  }
  90 // }
  91 //
  92 
  93 class WithFieldNoAccessTest$V {
  94   0xCAFEBABE;
  95   0; // minor version
  96   57; // version
  97   [68] { // Constant Pool
  98     ; // first element is empty
  99     Method #10 #40; // #1     at 0x0A
 100     class #41; // #2     at 0x0F
 101     Field #2 #42; // #3     at 0x12
 102     Field #2 #43; // #4     at 0x17
 103     Field #2 #44; // #5     at 0x1C
 104     InvokeDynamic 0s #47; // #6     at 0x21
 105     InvokeDynamic 0s #48; // #7     at 0x26
 106     InvokeDynamic 0s #49; // #8     at 0x2B
 107     InvokeDynamic 0s #50; // #9     at 0x30
 108     class #51; // #10     at 0x35
 109     Utf8 "c"; // #11     at 0x38
 110     Utf8 "C"; // #12     at 0x3C
 111     Utf8 "l"; // #13     at 0x40
 112     Utf8 "J"; // #14     at 0x44
 113     Utf8 "i"; // #15     at 0x48
 114     Utf8 "I"; // #16     at 0x4C
 115     Utf8 "<init>"; // #17     at 0x50
 116     Utf8 "()V"; // #18     at 0x59
 117     Utf8 "Code"; // #19     at 0x5F
 118     Utf8 "LineNumberTable"; // #20     at 0x66
 119     Utf8 "make"; // #21     at 0x78
 120     Utf8 "V"; // #22     at 0x7F
 121     Utf8 "InnerClasses"; // #23     at 0x83
 122     Utf8 "ValueTypes"; // #24     at 0x92
 123     Utf8 "(CJI)QWithFieldNoAccessTest$V;"; // #25     at 0x9F
 124     Utf8 "hashCode"; // #26     at 0xC0
 125     Utf8 "()I"; // #27     at 0xCB
 126     Utf8 "equals"; // #28     at 0xD1
 127     Utf8 "(Ljava/lang/Object;)Z"; // #29     at 0xDA
 128     Utf8 "toString"; // #30     at 0xF2
 129     Utf8 "()Ljava/lang/String;"; // #31     at 0xFD
 130     Utf8 "longHashCode"; // #32     at 0x0114
 131     Utf8 "()J"; // #33     at 0x0123
 132     Utf8 "$makeValue$"; // #34     at 0x0129
 133     Utf8 "()QWithFieldNoAccessTest$V;"; // #35     at 0x0137
 134     Utf8 "SourceFile"; // #36     at 0x0155
 135     Utf8 "WithFieldNoAccessTest.java"; // #37     at 0x0162
 136     Utf8 "NestHost"; // #38     at 0x017F
 137     class #52; // #39     at 0x018A
 138     NameAndType #17 #18; // #40     at 0x018D
 139     Utf8 "WithFieldNoAccessTest$V"; // #41     at 0x0192
 140     NameAndType #11 #12; // #42     at 0x01AC
 141     NameAndType #13 #14; // #43     at 0x01B1
 142     NameAndType #15 #16; // #44     at 0x01B6
 143     Utf8 "BootstrapMethods"; // #45     at 0x01BB
 144     MethodHandle 6b #53; // #46     at 0x01CE
 145     NameAndType #26 #54; // #47     at 0x01D2
 146     NameAndType #28 #55; // #48     at 0x01D7
 147     NameAndType #30 #56; // #49     at 0x01DC
 148     NameAndType #32 #57; // #50     at 0x01E1
 149     Utf8 "java/lang/Object"; // #51     at 0x01E6
 150     Utf8 "WithFieldNoAccessTest"; // #52     at 0x01F9
 151     Method #58 #59; // #53     at 0x0211
 152     Utf8 "(Ljava/lang/Object;)I"; // #54     at 0x0216
 153     Utf8 "(Ljava/lang/Object;Ljava/lang/Object;)Z"; // #55     at 0x022E
 154     Utf8 "(Ljava/lang/Object;)Ljava/lang/String;"; // #56     at 0x0258
 155     Utf8 "(Ljava/lang/Object;)J"; // #57     at 0x0281
 156     class #60; // #58     at 0x0299
 157     NameAndType #61 #64; // #59     at 0x029C
 158     Utf8 "java/lang/invoke/ValueBootstrapMethods"; // #60     at 0x02A1
 159     Utf8 "makeBootstrapMethod"; // #61     at 0x02CA
 160     class #66; // #62     at 0x02E0
 161     Utf8 "Lookup"; // #63     at 0x02E3
 162     Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;"; // #64     at 0x02EC
 163     class #67; // #65     at 0x0362
 164     Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #66     at 0x0365
 165     Utf8 "java/lang/invoke/MethodHandles"; // #67     at 0x038D
 166   } // Constant Pool
 167 
 168   0x0131; // access [ ACC_PUBLIC ACC_SUPER ACC_FINAL ]
 169   #2;// this_cpx
 170   #10;// super_cpx
 171 
 172   [0] { // Interfaces
 173   } // Interfaces
 174 
 175   [3] { // fields
 176     { // Member at 0x03B8
 177       0x0011; // access
 178       #11; // name_cpx
 179       #12; // sig_cpx
 180       [0] { // Attributes
 181       } // Attributes
 182     } // Member
 183     ;
 184     { // Member at 0x03C0
 185       0x0014; // access
 186       #13; // name_cpx
 187       #14; // sig_cpx
 188       [0] { // Attributes
 189       } // Attributes
 190     } // Member
 191     ;
 192     { // Member at 0x03C8
 193       0x0012; // access
 194       #15; // name_cpx
 195       #16; // sig_cpx
 196       [0] { // Attributes
 197       } // Attributes
 198     } // Member
 199   } // fields
 200 
 201   [7] { // methods
 202     { // Member at 0x03D2
 203       0x0000; // access
 204       #17; // name_cpx
 205       #18; // sig_cpx
 206       [1] { // Attributes
 207         Attr(#19, 29) { // Code at 0x03DA
 208           1; // max_stack
 209           1; // max_locals
 210           Bytes[5]{
 211             0x2AB70001B1;
 212           };
 213           [0] { // Traps
 214           } // end Traps
 215           [1] { // Attributes
 216             Attr(#20, 6) { // LineNumberTable at 0x03F1
 217               [1] { // LineNumberTable
 218                 0  15; //  at 0x03FD
 219               }
 220             } // end LineNumberTable
 221           } // Attributes
 222         } // end Code
 223       } // Attributes
 224     } // Member
 225     ;
 226     { // Member at 0x03FD
 227       0x0009; // access
 228       #21; // name_cpx
 229       #25; // sig_cpx
 230       [1] { // Attributes
 231         Attr(#19, 76) { // Code at 0x0405
 232           4; // max_stack
 233           5; // max_locals
 234           Bytes[36]{
 235             0xCB00023A041A1904;
 236             0x5FCC00033A041F19;
 237             0x045B57CC00043A04;
 238             0x1D19045FCC00053A;
 239             0x041904B0;
 240           };
 241           [0] { // Traps
 242           } // end Traps
 243           [1] { // Attributes
 244             Attr(#20, 22) { // LineNumberTable at 0x043B
 245               [5] { // LineNumberTable
 246                 0  22; //  at 0x0447
 247                 5  23; //  at 0x044B
 248                 14  24; //  at 0x044F
 249                 24  25; //  at 0x0453
 250                 33  26; //  at 0x0457
 251               }
 252             } // end LineNumberTable
 253           } // Attributes
 254         } // end Code
 255       } // Attributes
 256     } // Member
 257     ;
 258     { // Member at 0x0457
 259       0x0011; // access
 260       #26; // name_cpx
 261       #27; // sig_cpx
 262       [1] { // Attributes
 263         Attr(#19, 31) { // Code at 0x045F
 264           1; // max_stack
 265           1; // max_locals
 266           Bytes[7]{
 267             0x2ABA00060000AC;
 268           };
 269           [0] { // Traps
 270           } // end Traps
 271           [1] { // Attributes
 272             Attr(#20, 6) { // LineNumberTable at 0x0478
 273               [1] { // LineNumberTable
 274                 0  11; //  at 0x0484
 275               }
 276             } // end LineNumberTable
 277           } // Attributes
 278         } // end Code
 279       } // Attributes
 280     } // Member
 281     ;
 282     { // Member at 0x0484
 283       0x0011; // access
 284       #28; // name_cpx
 285       #29; // sig_cpx
 286       [1] { // Attributes
 287         Attr(#19, 32) { // Code at 0x048C
 288           2; // max_stack
 289           2; // max_locals
 290           Bytes[8]{
 291             0x2A2BBA00070000AC;
 292           };
 293           [0] { // Traps
 294           } // end Traps
 295           [1] { // Attributes
 296             Attr(#20, 6) { // LineNumberTable at 0x04A6
 297               [1] { // LineNumberTable
 298                 0  11; //  at 0x04B2
 299               }
 300             } // end LineNumberTable
 301           } // Attributes
 302         } // end Code
 303       } // Attributes
 304     } // Member
 305     ;
 306     { // Member at 0x04B2
 307       0x0011; // access
 308       #30; // name_cpx
 309       #31; // sig_cpx
 310       [1] { // Attributes
 311         Attr(#19, 31) { // Code at 0x04BA
 312           1; // max_stack
 313           1; // max_locals
 314           Bytes[7]{
 315             0x2ABA00080000B0;
 316           };
 317           [0] { // Traps
 318           } // end Traps
 319           [1] { // Attributes
 320             Attr(#20, 6) { // LineNumberTable at 0x04D3
 321               [1] { // LineNumberTable
 322                 0  11; //  at 0x04DF
 323               }
 324             } // end LineNumberTable
 325           } // Attributes
 326         } // end Code
 327       } // Attributes
 328     } // Member
 329     ;
 330     { // Member at 0x04DF
 331       0x0011; // access
 332       #32; // name_cpx
 333       #33; // sig_cpx
 334       [1] { // Attributes
 335         Attr(#19, 31) { // Code at 0x04E7
 336           2; // max_stack
 337           1; // max_locals
 338           Bytes[7]{
 339             0x2ABA00090000AD;
 340           };
 341           [0] { // Traps
 342           } // end Traps
 343           [1] { // Attributes
 344             Attr(#20, 6) { // LineNumberTable at 0x0500
 345               [1] { // LineNumberTable
 346                 0  11; //  at 0x050C
 347               }
 348             } // end LineNumberTable
 349           } // Attributes
 350         } // end Code
 351       } // Attributes
 352     } // Member
 353     ;
 354     { // Member at 0x050C
 355       0x1008; // access
 356       #34; // name_cpx
 357       #35; // sig_cpx
 358       [1] { // Attributes
 359         Attr(#19, 69) { // Code at 0x0514
 360           4; // max_stack
 361           1; // max_locals
 362           Bytes[29]{
 363             0xCB00024B10302A5F;
 364             0xCC00034B092A5B57;
 365             0xCC00044B032A5FCC;
 366             0x00054B2AB0;
 367           };
 368           [0] { // Traps
 369           } // end Traps
 370           [1] { // Attributes
 371             Attr(#20, 22) { // LineNumberTable at 0x0543
 372               [5] { // LineNumberTable
 373                 0  15; //  at 0x054F
 374                 4  16; //  at 0x0553
 375                 12  17; //  at 0x0557
 376                 20  18; //  at 0x055B
 377                 27  19; //  at 0x055F
 378               }
 379             } // end LineNumberTable
 380           } // Attributes
 381         } // end Code
 382       } // Attributes
 383     } // Member
 384   } // methods
 385 
 386   [3] { // Attributes
 387     Attr(#36, 2) { // SourceFile at 0x0561
 388       #37;
 389     } // end SourceFile
 390     ;
 391     Attr(#23, 18) { // InnerClasses at 0x0571
 392       [2] { // InnerClasses
 393         #2 #39 #22 281; //  at 0x0581
 394         #62 #65 #63 25; //  at 0x0589
 395       }
 396     } // end InnerClasses
 397     ;
 398     Attr(#45, 6) { // BootstrapMethods at 0x0589
 399       [1] { // bootstrap_methods
 400         {  //  bootstrap_method
 401           #46; // bootstrap_method_ref
 402           [0] { // bootstrap_arguments
 403           }  //  bootstrap_arguments
 404         }  //  bootstrap_method
 405       }
 406     } // end BootstrapMethods
 407   } // Attributes
 408 } // end class WithFieldNoAccessTest$V
 409 
 410 
 411 class WithFieldNoAccessTest {
 412   0xCAFEBABE;
 413   0; // minor version
 414   57; // version
 415   [92] { // Constant Pool
 416     ; // first element is empty
 417     Method #23 #40; // #1     at 0x0A
 418     long 0x0000000000000005;; // #2     at 0x0F
 419     Method #24 #41; // #4     at 0x18
 420     Field #24 #42; // #5     at 0x1D
 421     class #43; // #6     at 0x22
 422     String #44; // #7     at 0x25
 423     Method #6 #45; // #8     at 0x28
 424     class #46; // #9     at 0x2D
 425     Method #9 #47; // #10     at 0x30
 426     String #48; // #11     at 0x35
 427     Method #49 #50; // #12     at 0x38
 428     InvokeDynamic 0s #54; // #13     at 0x3D
 429     long 0x0000000000000019;; // #14     at 0x42
 430     Field #24 #55; // #16     at 0x4B
 431     String #56; // #17     at 0x50
 432     String #57; // #18     at 0x53
 433     Field #24 #58; // #19     at 0x56
 434     String #59; // #20     at 0x5B
 435     String #60; // #21     at 0x5E
 436     class #61; // #22     at 0x61
 437     class #62; // #23     at 0x64
 438     class #63; // #24     at 0x67
 439     Utf8 "V"; // #25     at 0x6A
 440     Utf8 "InnerClasses"; // #26     at 0x6E
 441     Utf8 "ValueTypes"; // #27     at 0x7D
 442     Utf8 "<init>"; // #28     at 0x8A
 443     Utf8 "()V"; // #29     at 0x93
 444     Utf8 "Code"; // #30     at 0x99
 445     Utf8 "LineNumberTable"; // #31     at 0xA0
 446     Utf8 "main"; // #32     at 0xB2
 447     Utf8 "([Ljava/lang/String;)V"; // #33     at 0xB9
 448     Utf8 "StackMapTable"; // #34     at 0xD2
 449     Utf8 "Exceptions"; // #35     at 0xE2
 450     class #64; // #36     at 0xEF
 451     Utf8 "SourceFile"; // #37     at 0xF2
 452     Utf8 "WithFieldNoAccessTest.java"; // #38     at 0xFF
 453     Utf8 "NestMembers"; // #39     at 0x011C
 454     NameAndType #28 #29; // #40     at 0x012A
 455     NameAndType #65 #66; // #41     at 0x012F
 456     NameAndType #67 #68; // #42     at 0x0134
 457     Utf8 "java/lang/RuntimeException"; // #43     at 0x0139
 458     Utf8 "Failed to throw IllegalAccessError exception for final public field"; // #44     at 0x0156
 459     NameAndType #28 #69; // #45     at 0x019C
 460     Utf8 "java/lang/IllegalAccessError"; // #46     at 0x01A1
 461     NameAndType #70 #71; // #47     at 0x01C0
 462     Utf8 "Update to non-static final field WithFieldNoAccessTest$V.c attempted"; // #48     at 0x01C5
 463     class #72; // #49     at 0x020C
 464     NameAndType #73 #74; // #50     at 0x020F
 465     Utf8 "BootstrapMethods"; // #51     at 0x0214
 466     MethodHandle 6b #75; // #52     at 0x0227
 467     String #76; // #53     at 0x022B
 468     NameAndType #77 #78; // #54     at 0x022E
 469     NameAndType #79 #80; // #55     at 0x0233
 470     Utf8 "Failed to throw IllegalAccessError exception for final protected field"; // #56     at 0x0238
 471     Utf8 "Update to non-static final field WithFieldNoAccessTest$V.l attempted"; // #57     at 0x0281
 472     NameAndType #81 #82; // #58     at 0x02C8
 473     Utf8 "Failed to throw IllegalAccessError exception for final private field"; // #59     at 0x02CD
 474     Utf8 "WithFieldNoAccessTest tried to access private field WithFieldNoAccessTest$V.i"; // #60     at 0x0314
 475     Utf8 "WithFieldNoAccessTest"; // #61     at 0x0364
 476     Utf8 "java/lang/Object"; // #62     at 0x037C
 477     Utf8 "WithFieldNoAccessTest$V"; // #63     at 0x038F
 478     Utf8 "java/lang/Throwable"; // #64     at 0x03A9
 479     Utf8 "make"; // #65     at 0x03BF
 480     Utf8 "(CJI)QWithFieldNoAccessTest$V;"; // #66     at 0x03C6
 481     Utf8 "c"; // #67     at 0x03E7
 482     Utf8 "C"; // #68     at 0x03EB
 483     Utf8 "(Ljava/lang/String;)V"; // #69     at 0x03EF
 484     Utf8 "toString"; // #70     at 0x0407
 485     Utf8 "()Ljava/lang/String;"; // #71     at 0x0412
 486     Utf8 "java/lang/String"; // #72     at 0x0429
 487     Utf8 "contains"; // #73     at 0x043C
 488     Utf8 "(Ljava/lang/CharSequence;)Z"; // #74     at 0x0447
 489     Method #83 #84; // #75     at 0x0465
 490     Utf8 "Unexpected IllegalAccessError: "; // #76     at 0x046A
 491     Utf8 "makeConcatWithConstants"; // #77     at 0x048D
 492     Utf8 "(Ljava/lang/String;)Ljava/lang/String;"; // #78     at 0x04A7
 493     Utf8 "l"; // #79     at 0x04D0
 494     Utf8 "J"; // #80     at 0x04D4
 495     Utf8 "i"; // #81     at 0x04D8
 496     Utf8 "I"; // #82     at 0x04DC
 497     class #85; // #83     at 0x04E0
 498     NameAndType #77 #88; // #84     at 0x04E3
 499     Utf8 "java/lang/invoke/StringConcatFactory"; // #85     at 0x04E8
 500     class #90; // #86     at 0x050F
 501     Utf8 "Lookup"; // #87     at 0x0512
 502     Utf8 "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;"; // #88     at 0x051B
 503     class #91; // #89     at 0x05B6
 504     Utf8 "java/lang/invoke/MethodHandles$Lookup"; // #90     at 0x05B9
 505     Utf8 "java/lang/invoke/MethodHandles"; // #91     at 0x05E1
 506   } // Constant Pool
 507 
 508   0x0021; // access [ ACC_PUBLIC ACC_SUPER ]
 509   #22;// this_cpx
 510   #23;// super_cpx
 511 
 512   [0] { // Interfaces
 513   } // Interfaces
 514 
 515   [0] { // fields
 516   } // fields
 517 
 518   [2] { // methods
 519     { // Member at 0x060E
 520       0x0001; // access
 521       #28; // name_cpx
 522       #29; // sig_cpx
 523       [1] { // Attributes
 524         Attr(#30, 29) { // Code at 0x0616
 525           1; // max_stack
 526           1; // max_locals
 527           Bytes[5]{
 528             0x2AB70001B1;
 529           };
 530           [0] { // Traps
 531           } // end Traps
 532           [1] { // Attributes
 533             Attr(#31, 6) { // LineNumberTable at 0x062D
 534               [1] { // LineNumberTable
 535                 0  9; //  at 0x0639
 536               }
 537             } // end LineNumberTable
 538           } // Attributes
 539         } // end Code
 540       } // Attributes
 541     } // Member
 542     ;
 543     { // Member at 0x0639
 544       0x0089; // access
 545       #32; // name_cpx
 546       #33; // sig_cpx
 547       [2] { // Attributes
 548         Attr(#30, 305) { // Code at 0x0641
 549           6; // max_stack
 550           2; // max_locals
 551           Bytes[174]{
 552             0x1062106114000210;
 553             0x0AB800045FCC0005;
 554             0x4CBB0006591207B7;
 555             0x0008BF4C2BB6000A;
 556             0x120BB6000C9A0014;
 557             0xBB0006592BB6000A;
 558             0xBA000D0000B70008;
 559             0xBF14000E10611400;
 560             0x02100AB800045B57;
 561             0xCC00104CBB000659;
 562             0x1211B70008BF4C2B;
 563             0xB6000A1212B6000C;
 564             0x9A0014BB0006592B;
 565             0xB6000ABA000D0000;
 566             0xB70008BF10141061;
 567             0x140002100AB80004;
 568             0x5FCC00134CBB0006;
 569             0x591214B70008BF4C;
 570             0x2BB6000A1215B600;
 571             0x0C9A0014BB000659;
 572             0x2BB6000ABA000D00;
 573             0x00B70008BFB1;
 574           };
 575           [3] { // Traps
 576             0 27 27 9; //  at 0x0707
 577             57 86 86 9; //  at 0x070F
 578             116 143 143 9; //  at 0x0717
 579           } // end Traps
 580           [2] { // Attributes
 581             Attr(#31, 66) { // LineNumberTable at 0x0719
 582               [16] { // LineNumberTable
 583                 0  32; //  at 0x0725
 584                 17  33; //  at 0x0729
 585                 27  34; //  at 0x072D
 586                 28  35; //  at 0x0731
 587                 40  36; //  at 0x0735
 588                 57  41; //  at 0x0739
 589                 76  42; //  at 0x073D
 590                 86  43; //  at 0x0741
 591                 87  44; //  at 0x0745
 592                 99  45; //  at 0x0749
 593                 116  50; //  at 0x074D
 594                 133  51; //  at 0x0751
 595                 143  52; //  at 0x0755
 596                 144  53; //  at 0x0759
 597                 156  54; //  at 0x075D
 598                 173  57; //  at 0x0761
 599               }
 600             } // end LineNumberTable
 601             ;
 602             Attr(#34, 17) { // StackMapTable at 0x0761
 603               [6] { // 
 604                 91b, [1]z{7b,9}; // same_locals_1_stack_item_frame
 605                 29b; // same_frame
 606                 92b, [1]z{7b,9}; // same_locals_1_stack_item_frame
 607                 29b; // same_frame
 608                 90b, [1]z{7b,9}; // same_locals_1_stack_item_frame
 609                 29b; // same_frame
 610               }
 611             } // end StackMapTable
 612           } // Attributes
 613         } // end Code
 614         ;
 615         Attr(#35, 4) { // Exceptions at 0x0778
 616           [1] { // Exceptions
 617             #36; //  at 0x0782
 618           }
 619         } // end Exceptions
 620       } // Attributes
 621     } // Member
 622   } // methods
 623 
 624   [3] { // Attributes
 625     Attr(#37, 2) { // SourceFile at 0x0784
 626       #38;
 627     } // end SourceFile
 628     ;
 629     Attr(#26, 18) { // InnerClasses at 0x0796
 630       [2] { // InnerClasses
 631         #24 #22 #25 281; //  at 0x07A6
 632         #86 #89 #87 25; //  at 0x07AE
 633       }
 634     } // end InnerClasses
 635     ;
 636     Attr(#51, 8) { // BootstrapMethods at 0x07AE
 637       [1] { // bootstrap_methods
 638         {  //  bootstrap_method
 639           #52; // bootstrap_method_ref
 640           [1] { // bootstrap_arguments
 641             #53; //  at 0x07BC
 642           }  //  bootstrap_arguments
 643         }  //  bootstrap_method
 644       }
 645     } // end BootstrapMethods
 646   } // Attributes
 647 } // end class WithFieldNoAccessTest