Open eklaDFF opened 1 month ago
BTW, when we wrap the Tests
with verifyNoPropertyViolation()
, like below :
package java17;
import gov.nasa.jpf.util.test.TestJPF;
import org.junit.Test;
public class RecordFeatureTest extends TestJPF {
record Point(int x, int y){}
// Official documents suggest that fields of "record" are "private" and "final".
// So we are testing by direct access. It should fail here at compile time, but do not know why it works.
@Test
public void testRecordFieldsDirectly(){
if (verifyNoPropertyViolation()){
Point point = new Point(4, 5);
assertEquals("",4,point.x);
assertEquals("",5,point.y);
}
}
@Test
public void testRecordFields(){
if (verifyNoPropertyViolation()){
Point point = new Point(4, 5);
assertEquals("",4,point.x());
assertEquals("",5,point.y());
}
}
@Test
public void testRecordEquality(){
if (verifyNoPropertyViolation()){
Point point1 = new Point(4,5);
Point point2 = new Point(4,5);
Point point3 = new Point(3,5);
assertEquals("",point1, point2);
assertNotEquals("",point1, point3);
}
}
@Test
public void testRecordHashCode() {
if (verifyNoPropertyViolation()){
Point point1 = new Point(4, 5);
Point point2 = new Point(4, 5);
Point point3 = new Point(3,5);
assertEquals("", point1.hashCode(), point2.hashCode());
assertNotEquals("",point1.hashCode(),point3.hashCode());
}
}
@Test
public void testRecordToString() {
if (verifyNoPropertyViolation()){
Point point = new Point(4, 5);
assertEquals("Point[x=4, y=5]", point.toString());
}
}
}
All the above Tests
failed with output :
java.lang.ArrayIndexOutOfBoundsException: Index 14081 out of bounds for length 65
at gov.nasa.jpf.jvm.ClassFile.methodClassNameAt(ClassFile.java:313)
at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setBootstrapMethod(JVMClassInfo.java:131)
at gov.nasa.jpf.jvm.ClassFile.setBootstrapMethod(ClassFile.java:694)
at gov.nasa.jpf.jvm.ClassFile.parseBootstrapMethodAttr(ClassFile.java:1528)
at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setClassAttribute(JVMClassInfo.java:112)
at gov.nasa.jpf.jvm.ClassFile.setClassAttribute(ClassFile.java:671)
at gov.nasa.jpf.jvm.ClassFile.parseClassAttributes(ClassFile.java:1411)
at gov.nasa.jpf.jvm.ClassFile.parse(ClassFile.java:980)
at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.<init>(JVMClassInfo.java:80)
at gov.nasa.jpf.jvm.JVMClassInfo.<init>(JVMClassInfo.java:770)
at gov.nasa.jpf.jvm.JVMClassFileContainer$JVMClassFileMatch.createClassInfo(JVMClassFileContainer.java:59)
at gov.nasa.jpf.jvm.JVMClassFileContainer$JVMClassFileMatch.createClassInfo(JVMClassFileContainer.java:34)
at gov.nasa.jpf.vm.ClassLoaderInfo.getResolvedClassInfo(ClassLoaderInfo.java:356)
at gov.nasa.jpf.vm.SystemClassLoaderInfo.getResolvedClassInfo(SystemClassLoaderInfo.java:148)
at gov.nasa.jpf.vm.SystemClassLoaderInfo.loadClass(SystemClassLoaderInfo.java:183)
at gov.nasa.jpf.vm.ClassInfo.resolveReferencedClass(ClassInfo.java:2485)
at gov.nasa.jpf.vm.ThreadInfo.resolveReferencedClass(ThreadInfo.java:1243)
at gov.nasa.jpf.jvm.bytecode.NEW.execute(NEW.java:55)
at gov.nasa.jpf.vm.ThreadInfo.executeInstruction(ThreadInfo.java:1910)
at gov.nasa.jpf.vm.ThreadInfo.executeTransition(ThreadInfo.java:1861)
at gov.nasa.jpf.vm.SystemState.executeNextTransition(SystemState.java:765)
at gov.nasa.jpf.vm.VM.forward(VM.java:1721)
at gov.nasa.jpf.search.Search.forward(Search.java:937)
at gov.nasa.jpf.search.DFSearch.search(DFSearch.java:79)
at gov.nasa.jpf.JPF.run(JPF.java:613)
at gov.nasa.jpf.util.test.TestJPF.createAndRunJPF(TestJPF.java:675)
at gov.nasa.jpf.util.test.TestJPF.noPropertyViolation(TestJPF.java:806)
at gov.nasa.jpf.util.test.TestJPF.verifyNoPropertyViolation(TestJPF.java:830)
at java17.RecordFeatureTest.testRecordFields(RecordFeatureTest.java:27)
......
......
......
Please look into the compiled bytecode to see what may have caused this behavior in JPF. It is possible that JPF completely misinterprets new bytecode attributes that were introduced in Java 17, as its class loader has been written for older versions of Java. Also, share your WIP on a branch so Pavel and I can take a look.
"Please look into the compiled bytecode to see what may have caused this behavior in JPF. It is possible that JPF completely misinterprets new bytecode attributes that were introduced in Java 17, as its class loader has been written for older versions of Java." -----> How can I access the compiled bytecode in case of JPF ?
I created a regular class equivalent to record functionality and tested them. Everything was fine as all Tests passed.
package java17;
import gov.nasa.jpf.util.test.TestJPF;
import org.junit.Test;
public class RegulaNonRecordClassTest extends TestJPF {
class Point {
private final int x;
private final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int x() {
return x;
}
public int y() {
return y;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Point point = (Point) o;
return x == point.x && y == point.y;
}
@Override
public String toString() {
return "Point[x=" + x + ", y=" + y + "]";
}
}
@Test
public void testFields() {
Point point = new Point(3, 4);
assertEquals(3, point.x());
assertEquals(4, point.y());
}
@Test
public void testEquality() {
Point point1 = new Point(3, 4);
Point point2 = new Point(3, 4);
assertEquals(point1, point2);
}
@Test
public void testToString() {
Point point = new Point(3, 4);
assertEquals("Point[x=3, y=4]", point.toString());
}
}
Got this idea from different source (like ChatGPT) to try, things will be more clear.
"Also, share your WIP on a branch so Pavel and I can take a look." -----> https://github.com/eklaDFF/jpf-core/tree/NewFeatureRecordRoughBranch
Use javap -v
to look at the bytecode.
javap -v src/tests/java17/RecordFeatureTest.class
Error: class not found: src/tests/java17/RecordFeatureTest.class
I need to compile them first. But do not know how in this case.
ekla@Eklas-MacBook-Air jpf-core % javac /Users/ekla/GSOC/JPFjava17/jpf-core
error: invalid flag: /Users/ekla/GSOC/JPFjava17/jpf-core
Usage: javac <options> <source files>
use --help for a list of possible options
ekla@Eklas-MacBook-Air jpf-core %
You indicate the fully qualified class name, not the file name. Use -cp
or -classpath
for the location of the class file and javap -h
for more help on options.
Thankyou @cyrille-artho
This one worked :
javap -v -cp build/tests/java17 RecordFeatureTest
. Compiled codes are in build
actually.
Here is the output for above command (I will take some time to study about Byte Codes. This is a great opportunity to learn about Byte Codes.) :
ekla@Eklas-MacBook-Air jpf-core % javap -v -cp build/tests/java17 RecordFeatureTest
Warning: File build/tests/java17/RecordFeatureTest.class does not contain class RecordFeatureTest
Classfile /Users/ekla/GSOC/JPFjava17/jpf-core/build/tests/java17/RecordFeatureTest.class
Last modified 30-Jul-2024; size 1917 bytes
SHA-256 checksum 235e1883c602b2d1db7b20d106dbd850c69ae262bffc553fb768dd2650017d3d
Compiled from "RecordFeatureTest.java"
public class java17.RecordFeatureTest extends gov.nasa.jpf.util.test.TestJPF
minor version: 0
major version: 61
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #10 // java17/RecordFeatureTest
super_class: #2 // gov/nasa/jpf/util/test/TestJPF
interfaces: 0, fields: 0, methods: 6, attributes: 3
Constant pool:
#1 = Methodref #2.#3 // gov/nasa/jpf/util/test/TestJPF."<init>":()V
#2 = Class #4 // gov/nasa/jpf/util/test/TestJPF
#3 = NameAndType #5:#6 // "<init>":()V
#4 = Utf8 gov/nasa/jpf/util/test/TestJPF
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Class #8 // java/lang/String
#8 = Utf8 java/lang/String
#9 = Methodref #10.#11 // java17/RecordFeatureTest.verifyNoPropertyViolation:([Ljava/lang/String;)Z
#10 = Class #12 // java17/RecordFeatureTest
#11 = NameAndType #13:#14 // verifyNoPropertyViolation:([Ljava/lang/String;)Z
#12 = Utf8 java17/RecordFeatureTest
#13 = Utf8 verifyNoPropertyViolation
#14 = Utf8 ([Ljava/lang/String;)Z
#15 = Class #16 // java17/RecordFeatureTest$Point
#16 = Utf8 java17/RecordFeatureTest$Point
#17 = Methodref #15.#18 // java17/RecordFeatureTest$Point."<init>":(II)V
#18 = NameAndType #5:#19 // "<init>":(II)V
#19 = Utf8 (II)V
#20 = String #21 //
#21 = Utf8
#22 = Fieldref #15.#23 // java17/RecordFeatureTest$Point.x:I
#23 = NameAndType #24:#25 // x:I
#24 = Utf8 x
#25 = Utf8 I
#26 = Methodref #10.#27 // java17/RecordFeatureTest.assertEquals:(Ljava/lang/String;II)V
#27 = NameAndType #28:#29 // assertEquals:(Ljava/lang/String;II)V
#28 = Utf8 assertEquals
#29 = Utf8 (Ljava/lang/String;II)V
#30 = Fieldref #15.#31 // java17/RecordFeatureTest$Point.y:I
#31 = NameAndType #32:#25 // y:I
#32 = Utf8 y
#33 = Methodref #15.#34 // java17/RecordFeatureTest$Point.x:()I
#34 = NameAndType #24:#35 // x:()I
#35 = Utf8 ()I
#36 = Methodref #15.#37 // java17/RecordFeatureTest$Point.y:()I
#37 = NameAndType #32:#35 // y:()I
#38 = Methodref #10.#39 // java17/RecordFeatureTest.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#39 = NameAndType #28:#40 // assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#40 = Utf8 (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#41 = Methodref #10.#42 // java17/RecordFeatureTest.assertNotEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#42 = NameAndType #43:#40 // assertNotEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#43 = Utf8 assertNotEquals
#44 = Methodref #15.#45 // java17/RecordFeatureTest$Point.hashCode:()I
#45 = NameAndType #46:#35 // hashCode:()I
#46 = Utf8 hashCode
#47 = Methodref #10.#48 // java17/RecordFeatureTest.assertNotEquals:(Ljava/lang/String;II)V
#48 = NameAndType #43:#29 // assertNotEquals:(Ljava/lang/String;II)V
#49 = String #50 // Point[x=4, y=5]
#50 = Utf8 Point[x=4, y=5]
#51 = Methodref #15.#52 // java17/RecordFeatureTest$Point.toString:()Ljava/lang/String;
#52 = NameAndType #53:#54 // toString:()Ljava/lang/String;
#53 = Utf8 toString
#54 = Utf8 ()Ljava/lang/String;
#55 = Methodref #10.#56 // java17/RecordFeatureTest.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
#56 = NameAndType #28:#57 // assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
#57 = Utf8 (Ljava/lang/Object;Ljava/lang/Object;)V
#58 = Utf8 Code
#59 = Utf8 LineNumberTable
#60 = Utf8 LocalVariableTable
#61 = Utf8 this
#62 = Utf8 Ljava17/RecordFeatureTest;
#63 = Utf8 testRecordFieldsDirectly
#64 = Utf8 point
#65 = Utf8 Ljava17/RecordFeatureTest$Point;
#66 = Utf8 StackMapTable
#67 = Utf8 RuntimeVisibleAnnotations
#68 = Utf8 Lorg/junit/Test;
#69 = Utf8 testRecordFields
#70 = Utf8 testRecordEquality
#71 = Utf8 point1
#72 = Utf8 point2
#73 = Utf8 point3
#74 = Utf8 testRecordHashCode
#75 = Utf8 testRecordToString
#76 = Utf8 SourceFile
#77 = Utf8 RecordFeatureTest.java
#78 = Utf8 NestMembers
#79 = Utf8 InnerClasses
#80 = Utf8 Point
{
public java17.RecordFeatureTest();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method gov/nasa/jpf/util/test/TestJPF."<init>":()V
4: return
LineNumberTable:
line 6: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Ljava17/RecordFeatureTest;
public void testRecordFieldsDirectly();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
0: aload_0
1: iconst_0
2: anewarray #7 // class java/lang/String
5: invokevirtual #9 // Method verifyNoPropertyViolation:([Ljava/lang/String;)Z
8: ifeq 41
11: new #15 // class java17/RecordFeatureTest$Point
14: dup
15: iconst_4
16: iconst_5
17: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
20: astore_1
21: ldc #20 // String
23: iconst_4
24: aload_1
25: getfield #22 // Field java17/RecordFeatureTest$Point.x:I
28: invokestatic #26 // Method assertEquals:(Ljava/lang/String;II)V
31: ldc #20 // String
33: iconst_5
34: aload_1
35: getfield #30 // Field java17/RecordFeatureTest$Point.y:I
38: invokestatic #26 // Method assertEquals:(Ljava/lang/String;II)V
41: return
LineNumberTable:
line 15: 0
line 17: 11
line 19: 21
line 20: 31
line 23: 41
LocalVariableTable:
Start Length Slot Name Signature
21 20 1 point Ljava17/RecordFeatureTest$Point;
0 42 0 this Ljava17/RecordFeatureTest;
StackMapTable: number_of_entries = 1
frame_type = 41 /* same */
RuntimeVisibleAnnotations:
0: #68()
org.junit.Test
public void testRecordFields();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
0: aload_0
1: iconst_0
2: anewarray #7 // class java/lang/String
5: invokevirtual #9 // Method verifyNoPropertyViolation:([Ljava/lang/String;)Z
8: ifeq 41
11: new #15 // class java17/RecordFeatureTest$Point
14: dup
15: iconst_4
16: iconst_5
17: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
20: astore_1
21: ldc #20 // String
23: iconst_4
24: aload_1
25: invokevirtual #33 // Method java17/RecordFeatureTest$Point.x:()I
28: invokestatic #26 // Method assertEquals:(Ljava/lang/String;II)V
31: ldc #20 // String
33: iconst_5
34: aload_1
35: invokevirtual #36 // Method java17/RecordFeatureTest$Point.y:()I
38: invokestatic #26 // Method assertEquals:(Ljava/lang/String;II)V
41: return
LineNumberTable:
line 27: 0
line 29: 11
line 31: 21
line 32: 31
line 35: 41
LocalVariableTable:
Start Length Slot Name Signature
21 20 1 point Ljava17/RecordFeatureTest$Point;
0 42 0 this Ljava17/RecordFeatureTest;
StackMapTable: number_of_entries = 1
frame_type = 41 /* same */
RuntimeVisibleAnnotations:
0: #68()
org.junit.Test
public void testRecordEquality();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=1
0: aload_0
1: iconst_0
2: anewarray #7 // class java/lang/String
5: invokevirtual #9 // Method verifyNoPropertyViolation:([Ljava/lang/String;)Z
8: ifeq 55
11: new #15 // class java17/RecordFeatureTest$Point
14: dup
15: iconst_4
16: iconst_5
17: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
20: astore_1
21: new #15 // class java17/RecordFeatureTest$Point
24: dup
25: iconst_4
26: iconst_5
27: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
30: astore_2
31: new #15 // class java17/RecordFeatureTest$Point
34: dup
35: iconst_3
36: iconst_5
37: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
40: astore_3
41: ldc #20 // String
43: aload_1
44: aload_2
45: invokestatic #38 // Method assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
48: ldc #20 // String
50: aload_1
51: aload_3
52: invokestatic #41 // Method assertNotEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
55: return
LineNumberTable:
line 39: 0
line 41: 11
line 42: 21
line 43: 31
line 45: 41
line 46: 48
line 49: 55
LocalVariableTable:
Start Length Slot Name Signature
21 34 1 point1 Ljava17/RecordFeatureTest$Point;
31 24 2 point2 Ljava17/RecordFeatureTest$Point;
41 14 3 point3 Ljava17/RecordFeatureTest$Point;
0 56 0 this Ljava17/RecordFeatureTest;
StackMapTable: number_of_entries = 1
frame_type = 55 /* same */
RuntimeVisibleAnnotations:
0: #68()
org.junit.Test
public void testRecordHashCode();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=1
0: aload_0
1: iconst_0
2: anewarray #7 // class java/lang/String
5: invokevirtual #9 // Method verifyNoPropertyViolation:([Ljava/lang/String;)Z
8: ifeq 67
11: new #15 // class java17/RecordFeatureTest$Point
14: dup
15: iconst_4
16: iconst_5
17: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
20: astore_1
21: new #15 // class java17/RecordFeatureTest$Point
24: dup
25: iconst_4
26: iconst_5
27: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
30: astore_2
31: new #15 // class java17/RecordFeatureTest$Point
34: dup
35: iconst_3
36: iconst_5
37: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
40: astore_3
41: ldc #20 // String
43: aload_1
44: invokevirtual #44 // Method java17/RecordFeatureTest$Point.hashCode:()I
47: aload_2
48: invokevirtual #44 // Method java17/RecordFeatureTest$Point.hashCode:()I
51: invokestatic #26 // Method assertEquals:(Ljava/lang/String;II)V
54: ldc #20 // String
56: aload_1
57: invokevirtual #44 // Method java17/RecordFeatureTest$Point.hashCode:()I
60: aload_3
61: invokevirtual #44 // Method java17/RecordFeatureTest$Point.hashCode:()I
64: invokestatic #47 // Method assertNotEquals:(Ljava/lang/String;II)V
67: return
LineNumberTable:
line 53: 0
line 55: 11
line 56: 21
line 57: 31
line 59: 41
line 60: 54
line 63: 67
LocalVariableTable:
Start Length Slot Name Signature
21 46 1 point1 Ljava17/RecordFeatureTest$Point;
31 36 2 point2 Ljava17/RecordFeatureTest$Point;
41 26 3 point3 Ljava17/RecordFeatureTest$Point;
0 68 0 this Ljava17/RecordFeatureTest;
StackMapTable: number_of_entries = 1
frame_type = 251 /* same_frame_extended */
offset_delta = 67
RuntimeVisibleAnnotations:
0: #68()
org.junit.Test
public void testRecordToString();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
0: aload_0
1: iconst_0
2: anewarray #7 // class java/lang/String
5: invokevirtual #9 // Method verifyNoPropertyViolation:([Ljava/lang/String;)Z
8: ifeq 30
11: new #15 // class java17/RecordFeatureTest$Point
14: dup
15: iconst_4
16: iconst_5
17: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
20: astore_1
21: ldc #49 // String Point[x=4, y=5]
23: aload_1
24: invokevirtual #51 // Method java17/RecordFeatureTest$Point.toString:()Ljava/lang/String;
27: invokestatic #55 // Method assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
30: return
LineNumberTable:
line 67: 0
line 69: 11
line 71: 21
line 74: 30
LocalVariableTable:
Start Length Slot Name Signature
21 9 1 point Ljava17/RecordFeatureTest$Point;
0 31 0 this Ljava17/RecordFeatureTest;
StackMapTable: number_of_entries = 1
frame_type = 30 /* same */
RuntimeVisibleAnnotations:
0: #68()
org.junit.Test
}
SourceFile: "RecordFeatureTest.java"
NestMembers:
java17/RecordFeatureTest$Point
InnerClasses:
static final #80= #15 of #10; // Point=class java17/RecordFeatureTest$Point of class java17/RecordFeatureTest
ekla@Eklas-MacBook-Air jpf-core %
In the stack trace above, which is the method that cannot be loaded? What method is the one causing the index out of bounds at at gov.nasa.jpf.jvm.ClassFile.methodClassNameAt(ClassFile.java:313)
?
Also, please look at class RecordFeatureTest$Point
, which is the one holding the record. I think that's where JPF's class loader has problems.
Tried to understand the execution flow :
Start of Test
here jpf is not-null
.
jpf.run()
is called...
In DFSearch, no idea what's causing error...
Is this right direction to explore ?
I don't think the problem is in the state space exploration. I think it's the fact that JPF encounters an unfamiliar data element in the constant pool, which it does not parse correctly. Look at the stack trace in your earlier comment: https://github.com/javapathfinder/jpf-core/issues/484#issuecomment-2255094895
The constant pool of RecordFeatureTest$Point
has 64 elements (IIRC, slot 0 is not used), so an array representing it has 65 elements, which matches the array size of the exception. The stack trace also shows that the problem occurs while loading the class.
Well, now where should I look.
May be when we are instantiating Point Object creation, causes this error ?
Look at the stack trace and how the class file gets parsed. There is an element in the constant pool that does not get parsed correctly, which results in an array index that makes no sense (> 64).
The constant pool of RecordFeatureTest$Point
looks as follows:
final class java17.RecordFeatureTest$Point extends java.lang.Record
minor version: 0
major version: 61
flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: #8 // java17/RecordFeatureTest$Point
super_class: #2 // java/lang/Record
interfaces: 0, fields: 2, methods: 6, attributes: 5
Constant pool:
#1 = Methodref #2.#3 // java/lang/Record."<init>":()V
#2 = Class #4 // java/lang/Record
#3 = NameAndType #5:#6 // "<init>":()V
#4 = Utf8 java/lang/Record
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Fieldref #8.#9 // java17/RecordFeatureTest$Point.x:I
#8 = Class #10 // java17/RecordFeatureTest$Point
#9 = NameAndType #11:#12 // x:I
#10 = Utf8 java17/RecordFeatureTest$Point
#11 = Utf8 x
#12 = Utf8 I
#13 = Fieldref #8.#14 // java17/RecordFeatureTest$Point.y:I
#14 = NameAndType #15:#12 // y:I
#15 = Utf8 y
#16 = InvokeDynamic #0:#17 // #0:toString:(Ljava17/RecordFeatureTest$Point;)Ljava/lang/String;
#17 = NameAndType #18:#19 // toString:(Ljava17/RecordFeatureTest$Point;)Ljava/lang/String;
#18 = Utf8 toString
#19 = Utf8 (Ljava17/RecordFeatureTest$Point;)Ljava/lang/String;
#20 = InvokeDynamic #0:#21 // #0:hashCode:(Ljava17/RecordFeatureTest$Point;)I
#21 = NameAndType #22:#23 // hashCode:(Ljava17/RecordFeatureTest$Point;)I
#22 = Utf8 hashCode
#23 = Utf8 (Ljava17/RecordFeatureTest$Point;)I
#24 = InvokeDynamic #0:#25 // #0:equals:(Ljava17/RecordFeatureTest$Point;Ljava/lang/Object;)Z
#25 = NameAndType #26:#27 // equals:(Ljava17/RecordFeatureTest$Point;Ljava/lang/Object;)Z
#26 = Utf8 equals
#27 = Utf8 (Ljava17/RecordFeatureTest$Point;Ljava/lang/Object;)Z
#28 = Utf8 (II)V
#29 = Utf8 Code
#30 = Utf8 LineNumberTable
#31 = Utf8 LocalVariableTable
#32 = Utf8 this
#33 = Utf8 Ljava17/RecordFeatureTest$Point;
#34 = Utf8 MethodParameters
#35 = Utf8 ()Ljava/lang/String;
#36 = Utf8 ()I
#37 = Utf8 (Ljava/lang/Object;)Z
#38 = Utf8 o
#39 = Utf8 Ljava/lang/Object;
#40 = Utf8 SourceFile
#41 = Utf8 RecordFeatureTest.java
#42 = Utf8 NestHost
#43 = Class #44 // java17/RecordFeatureTest
#44 = Utf8 java17/RecordFeatureTest
#45 = Utf8 Record
#46 = Utf8 BootstrapMethods
#47 = MethodHandle 6:#48 // REF_invokeStatic java/lang/runtime/ObjectMethods.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#48 = Methodref #49.#50 // java/lang/runtime/ObjectMethods.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#49 = Class #51 // java/lang/runtime/ObjectMethods
#50 = NameAndType #52:#53 // bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#51 = Utf8 java/lang/runtime/ObjectMethods
#52 = Utf8 bootstrap
#53 = Utf8 (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#54 = String #55 // x;y
#55 = Utf8 x;y
#56 = MethodHandle 1:#7 // REF_getField java17/RecordFeatureTest$Point.x:I
#57 = MethodHandle 1:#13 // REF_getField java17/RecordFeatureTest$Point.y:I
#58 = Utf8 InnerClasses
#59 = Utf8 Point
#60 = Class #61 // java/lang/invoke/MethodHandles$Lookup
#61 = Utf8 java/lang/invoke/MethodHandles$Lookup
#62 = Class #63 // java/lang/invoke/MethodHandles
#63 = Utf8 java/lang/invoke/MethodHandles
#64 = Utf8 Lookup
Flow of Code :
Here is the method gov.nasa.jpf.jvm.ClassFile.methodClassNameAt(ClassFile.java:313)
public String methodClassNameAt(int methodRefInfoIdx){
return (String) cpValue[ u2(cpPos[methodRefInfoIdx]+1)];
}
And this method has been used in gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setBootstrapMethod(JVMClassInfo.java:131)
(Please notice the statement System.out.println("int mrefIdx = " + mrefIdx + ", cpArgs[1] = " + cpArgs[1]);
, as I have wrote them to debug things)
@Override
public void setBootstrapMethod (ClassFile cf, Object tag, int idx, int refKind, String cls, String mth,
String parameters, String descriptor, int[] cpArgs) {
String clsName = null;
ClassInfo enclosingLambdaCls;
if (cpArgs.length > 1) {
// For Lambdas
int mrefIdx = cf.mhMethodRefIndexAt(cpArgs[1]);
System.out.println("int mrefIdx = " + mrefIdx + ", cpArgs[1] = " + cpArgs[1]);
clsName = cf.methodClassNameAt(mrefIdx).replace('/', '.');
if(!clsName.equals(JVMClassInfo.this.getName())) {
if (JVMClassInfo.resolvedClasses.containsKey(clsName))
enclosingLambdaCls = (JVMClassInfo) JVMClassInfo.resolvedClasses.get(clsName);
else
enclosingLambdaCls = ClassLoaderInfo.getCurrentResolvedClassInfo(clsName);
} else {
enclosingLambdaCls = JVMClassInfo.this;
JVMClassInfo.resolvedClasses.put(clsName, enclosingLambdaCls);
}
// The following check should be up-to-date
// with OpenJDK 11' implementation of
// java.lang.invoke.LambdaMetafactory::altMetafactory()
//
// Check if it is serializable lambda expression. It is if:
// 1. bootstrap method is "altMetafactory"
// 2. 4-th cp arg value has FLAG_SERIALIZABLE (1 << 0) bit set
// The check order cannot be reversed since other BSM may not
// have forth argument in `cpArgs`
boolean isSerializable = false;
if (cls.equals("java/lang/invoke/LambdaMetafactory")
&& mth.equals("altMetafactory")) {
int flags = cf.intAt(cpArgs[3]);
int FLAG_SERIALIZABLE = 1 << 0;
if ((flags & FLAG_SERIALIZABLE) != 0) {
isSerializable = true;
}
}
assert (enclosingLambdaCls!=null);
int lambdaRefKind = cf.mhRefTypeAt(cpArgs[1]);
String mthName = cf.methodNameAt(mrefIdx);
String signature = cf.methodDescriptorAt(mrefIdx);
String samDescriptor = cf.methodTypeDescriptorAt(cpArgs[2]);
setBootstrapMethodInfo(enclosingLambdaCls, mthName, signature, idx, lambdaRefKind, samDescriptor, null,
isSerializable ? BootstrapMethodInfo.BMType.SERIALIZABLE_LAMBDA_EXPRESSION
: BootstrapMethodInfo.BMType.LAMBDA_EXPRESSION);
}
else {
// For String Concatenation
clsName = cls;
if(!clsName.equals(JVMClassInfo.this.getName())) {
enclosingLambdaCls = ClassLoaderInfo.getCurrentResolvedClassInfo(clsName);
} else {
enclosingLambdaCls = JVMClassInfo.this;
}
assert (enclosingLambdaCls!=null);
String bmArg = cf.getBmArgString(cpArgs[0]);
setBootstrapMethodInfo(enclosingLambdaCls, mth, parameters, idx, refKind, descriptor, bmArg,
BootstrapMethodInfo.BMType.STRING_CONCATENATION);
}
}
When we run at this level, the output is like below :
====================================================== search started: 04/08/24, 4:30 am
int mrefIdx = 259, cpArgs[1] = 258
int mrefIdx = 264, cpArgs[1] = 263
int mrefIdx = 267, cpArgs[1] = 266
int mrefIdx = 270, cpArgs[1] = 269
int mrefIdx = 273, cpArgs[1] = 272
int mrefIdx = 276, cpArgs[1] = 275
[WARNING] orphan NativePeer method: jdk.internal.misc.Unsafe.getUnsafe()Lsun/misc/Unsafe;
int mrefIdx = 148, cpArgs[1] = 147
int mrefIdx = 157, cpArgs[1] = 156
int mrefIdx = 163, cpArgs[1] = 162
int mrefIdx = 166, cpArgs[1] = 165
int mrefIdx = 169, cpArgs[1] = 168
int mrefIdx = 63, cpArgs[1] = 62
int mrefIdx = 66, cpArgs[1] = 65
int mrefIdx = 69, cpArgs[1] = 68
int mrefIdx = 57, cpArgs[1] = 56
int mrefIdx = 14081, cpArgs[1] = 54
java.lang.ArrayIndexOutOfBoundsException: Index 14081 out of bounds for length 65
at gov.nasa.jpf.jvm.ClassFile.methodClassNameAt(ClassFile.java:313)
at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setBootstrapMethod(JVMClassInfo.java:105)
at gov.nasa.jpf.jvm.ClassFile.setBootstrapMethod(ClassFile.java:694)
at gov.nasa.jpf.jvm.ClassFile.parseBootstrapMethodAttr(ClassFile.java:1528)
at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setClassAttribute(JVMClassInfo.java:85)
at gov.nasa.jpf.jvm.ClassFile.setClassAttribute(ClassFile.java:671)
at gov.nasa.jpf.jvm.ClassFile.parseClassAttributes(ClassFile.java:1411)
at gov.nasa.jpf.jvm.ClassFile.parse(ClassFile.java:980)
at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.<init>(JVMClassInfo.java:53)
at gov.nasa.jpf.jvm.JVMClassInfo.<init>(JVMClassInfo.java:744)
at gov.nasa.jpf.jvm.JVMClassFileContainer$JVMClassFileMatch.createClassInfo(JVMClassFileContainer.java:59)
at gov.nasa.jpf.jvm.JVMClassFileContainer$JVMClassFileMatch.createClassInfo(JVMClassFileContainer.java:34)
at gov.nasa.jpf.vm.ClassLoaderInfo.getResolvedClassInfo(ClassLoaderInfo.java:356)
at gov.nasa.jpf.vm.SystemClassLoaderInfo.getResolvedClassInfo(SystemClassLoaderInfo.java:148)
at gov.nasa.jpf.vm.SystemClassLoaderInfo.loadClass(SystemClassLoaderInfo.java:183)
at gov.nasa.jpf.vm.ClassInfo.resolveReferencedClass(ClassInfo.java:2485)
at gov.nasa.jpf.vm.ThreadInfo.resolveReferencedClass(ThreadInfo.java:1243)
at gov.nasa.jpf.jvm.bytecode.NEW.execute(NEW.java:55)
at gov.nasa.jpf.vm.ThreadInfo.executeInstruction(ThreadInfo.java:1910)
at gov.nasa.jpf.vm.ThreadInfo.executeTransition(ThreadInfo.java:1861)
at gov.nasa.jpf.vm.SystemState.executeNextTransition(SystemState.java:765)
at gov.nasa.jpf.vm.VM.forward(VM.java:1721)
at gov.nasa.jpf.search.Search.forward(Search.java:937)
at gov.nasa.jpf.search.DFSearch.search(DFSearch.java:79)
at gov.nasa.jpf.JPF.run(JPF.java:613)
at gov.nasa.jpf.util.test.TestJPF.createAndRunJPF(TestJPF.java:675)
at gov.nasa.jpf.util.test.TestJPF.noPropertyViolation(TestJPF.java:806)
at gov.nasa.jpf.util.test.TestJPF.verifyNoPropertyViolation(TestJPF.java:830)
at java17.RecordFeatureTest.testRecordFieldsDirectly(RecordFeatureTest.java:15)
This strange output (from our printing statement) show that our issue is routed from ClassFile.mhMethodRefIndexAt (int methodHandleInfoIdx)
and code for it is :
public int mhMethodRefIndexAt (int methodHandleInfoIdx){
return u2(cpPos[methodHandleInfoIdx]+2);
}
public final int u2(int dataIdx){
return ((data[dataIdx]&0xff) << 8) | (data[dataIdx+1]&0xff);
}
Am I in right direction ?
And also please see the similarity between mhMethodRefIndexAt(int methodHandleInfoIdx)
and methodClassNameAt(int methodRefInfoIdx)
in ClassFile.java
:
public String methodClassNameAt(int methodRefInfoIdx){
return (String) cpValue[ u2(cpPos[methodRefInfoIdx]+1)];
}
public int mhMethodRefIndexAt(int methodHandleInfoIdx){
return u2(cpPos[methodHandleInfoIdx]+2);
}
int[] cpPos; // cpPos[i] holds data start index for cp_entry i (0 is unused)
Object[] cpValue; // cpValue[i] hold the String/Integer/Float/Double associated with corresponding cp_entries
The method to parse the binary content is correct, but the index (54) is wrong.
In the debug output, please also add the name of the class that you are printing the data for. I think cf.clsName
is initialized at this point (as the class is loaded). We want to ensure that we are looking at the contents of the constant pool of the right class when trying to figure out why there is a wrong index.
@Override
public void setBootstrapMethod (ClassFile cf, Object tag, int idx, int refKind, String cls, String mth,
String parameters, String descriptor, int[] cpArgs) {
String clsName = null;
ClassInfo enclosingLambdaCls;
if (cpArgs.length > 1) {
// For Lambdas
int mrefIdx = cf.mhMethodRefIndexAt(cpArgs[1]);
System.out.println("int mrefIdx = " + mrefIdx + ", cpArgs[1] = " + cpArgs[1] + ", cf.className = " + cf.className);
clsName = cf.methodClassNameAt(mrefIdx).replace('/', '.');
System.out.println("clsName = " + clsName);
if(!clsName.equals(JVMClassInfo.this.getName())) {
if (JVMClassInfo.resolvedClasses.containsKey(clsName))
enclosingLambdaCls = (JVMClassInfo) JVMClassInfo.resolvedClasses.get(clsName);
else
enclosingLambdaCls = ClassLoaderInfo.getCurrentResolvedClassInfo(clsName);
} else {
enclosingLambdaCls = JVMClassInfo.this;
JVMClassInfo.resolvedClasses.put(clsName, enclosingLambdaCls);
}
// The following check should be up-to-date
// with OpenJDK 11' implementation of
// java.lang.invoke.LambdaMetafactory::altMetafactory()
//
// Check if it is serializable lambda expression. It is if:
// 1. bootstrap method is "altMetafactory"
// 2. 4-th cp arg value has FLAG_SERIALIZABLE (1 << 0) bit set
// The check order cannot be reversed since other BSM may not
// have forth argument in `cpArgs`
boolean isSerializable = false;
if (cls.equals("java/lang/invoke/LambdaMetafactory")
&& mth.equals("altMetafactory")) {
int flags = cf.intAt(cpArgs[3]);
int FLAG_SERIALIZABLE = 1 << 0;
if ((flags & FLAG_SERIALIZABLE) != 0) {
isSerializable = true;
}
}
assert (enclosingLambdaCls!=null);
int lambdaRefKind = cf.mhRefTypeAt(cpArgs[1]);
String mthName = cf.methodNameAt(mrefIdx);
String signature = cf.methodDescriptorAt(mrefIdx);
String samDescriptor = cf.methodTypeDescriptorAt(cpArgs[2]);
setBootstrapMethodInfo(enclosingLambdaCls, mthName, signature, idx, lambdaRefKind, samDescriptor, null,
isSerializable ? BootstrapMethodInfo.BMType.SERIALIZABLE_LAMBDA_EXPRESSION
: BootstrapMethodInfo.BMType.LAMBDA_EXPRESSION);
}
else {
// For String Concatenation
clsName = cls;
if(!clsName.equals(JVMClassInfo.this.getName())) {
enclosingLambdaCls = ClassLoaderInfo.getCurrentResolvedClassInfo(clsName);
} else {
enclosingLambdaCls = JVMClassInfo.this;
}
assert (enclosingLambdaCls!=null);
String bmArg = cf.getBmArgString(cpArgs[0]);
setBootstrapMethodInfo(enclosingLambdaCls, mth, parameters, idx, refKind, descriptor, bmArg,
BootstrapMethodInfo.BMType.STRING_CONCATENATION);
}
}
Output :
running jpf with args:
int mrefIdx = 40, cpArgs[1] = 138, cf.className = null
clsName = java.lang.annotation.Annotation
int mrefIdx = 144, cpArgs[1] = 143, cf.className = null
clsName = java.lang.reflect.AnnotatedElement
int mrefIdx = 150, cpArgs[1] = 149, cf.className = null
clsName = java.util.LinkedHashMap
int mrefIdx = 109, cpArgs[1] = 108, cf.className = null
clsName = java.lang.CharSequence
int mrefIdx = 113, cpArgs[1] = 112, cf.className = null
clsName = java.lang.CharSequence
int mrefIdx = 178, cpArgs[1] = 177, cf.className = null
clsName = java.lang.Enum
JavaPathfinder core system v8.0 (rev 1af3982c6608c081b63048d004dcd56eb0b43176) - (C) 2005-2014 United States Government. All rights reserved.
====================================================== system under test
java17.RecordFeatureTest.runTestMethod()
====================================================== search started: 04/08/24, 7:22 pm
int mrefIdx = 259, cpArgs[1] = 258, cf.className = null
clsName = java.util.Comparator
int mrefIdx = 264, cpArgs[1] = 263, cf.className = null
clsName = java.util.Comparator
int mrefIdx = 267, cpArgs[1] = 266, cf.className = null
clsName = java.util.Comparator
int mrefIdx = 270, cpArgs[1] = 269, cf.className = null
clsName = java.util.Comparator
int mrefIdx = 273, cpArgs[1] = 272, cf.className = null
clsName = java.util.Comparator
int mrefIdx = 276, cpArgs[1] = 275, cf.className = null
clsName = java.util.Comparator
[WARNING] orphan NativePeer method: jdk.internal.misc.Unsafe.getUnsafe()Lsun/misc/Unsafe;
int mrefIdx = 148, cpArgs[1] = 147, cf.className = null
clsName = java.util.concurrent.ConcurrentMap
int mrefIdx = 157, cpArgs[1] = 156, cf.className = null
clsName = java.util.Map$Entry
int mrefIdx = 163, cpArgs[1] = 162, cf.className = null
clsName = java.util.Map$Entry
int mrefIdx = 166, cpArgs[1] = 165, cf.className = null
clsName = java.util.Map$Entry
int mrefIdx = 169, cpArgs[1] = 168, cf.className = null
clsName = java.util.Map$Entry
int mrefIdx = 63, cpArgs[1] = 62, cf.className = null
clsName = java.util.function.Function
int mrefIdx = 66, cpArgs[1] = 65, cf.className = null
clsName = java.util.function.Function
int mrefIdx = 69, cpArgs[1] = 68, cf.className = null
clsName = java.util.function.Function
int mrefIdx = 57, cpArgs[1] = 56, cf.className = null
clsName = java.util.function.BiFunction
int mrefIdx = 14081, cpArgs[1] = 54, cf.className = null
java.lang.ArrayIndexOutOfBoundsException: Index 14081 out of bounds for length 65
at gov.nasa.jpf.jvm.ClassFile.methodClassNameAt(ClassFile.java:313)
cpArgs[]
is a parameter so if it cpArgs[1]
produce 54 then should we look from where it coming ?
Yes, and if you can find out where the function call was made, that will likely give us clues on the correct value. You can try the use the MethodTracker
listener, something like the additional option +listener=gov.nasa.jpf.listener.MethodTracker
Above method is called from this (below) method. Both are actually overloaded methods in ClassFile.java
private void setBootstrapMethod (ClassFileReader reader, Object tag, int idx,
int refKind, String cls, String mth, String parameters, String descriptor, int[] cpArgs){
int p = pos;
reader.setBootstrapMethod( this, tag, idx, refKind, cls, mth, parameters, descriptor, cpArgs);
pos = p;
}
And then above method is called from ClassFile.parseBootstrapMethodAttr (ClassFileReader reader, Object tag)
(Please notice System.out.println("bmArgs[" + j + "] = " + bmArgs[j]);
. I have wrote them to debug.)
public void parseBootstrapMethodAttr (ClassFileReader reader, Object tag){
int nBootstrapMethods = readU2();
setBootstrapMethodCount(reader, tag, nBootstrapMethods);
for (int i=0; i<nBootstrapMethods; i++){
int cpMhIdx = readU2();
int nArgs = readU2();
int[] bmArgs = new int[nArgs];
for (int j=0; j<nArgs; j++){
bmArgs[j] = readU2();
System.out.println("bmArgs[" + j + "] = " + bmArgs[j]);
}
// kind of this method handle
int refKind = mhRefTypeAt(cpMhIdx);
// CONSTANT_Methodref_info structure
int mrefIdx = mhMethodRefIndexAt(cpMhIdx);
String clsName = methodClassNameAt(mrefIdx);
String mthName = methodNameAt(mrefIdx);
String parameters = methodDescriptorAt(mrefIdx);
String descriptor= callSiteDescriptor(bsmIdxToIndyCpIdx.get(i));
setBootstrapMethod(reader, tag, i, refKind, clsName, mthName, parameters, descriptor, bmArgs);
}
setBootstrapMethodsDone( reader, tag);
}
Here is the output :
running jpf with args:
bmArgs[0] = 396
bmArgs[0] = 398
bmArgs[0] = 400
bmArgs[0] = 402
bmArgs[0] = 404
bmArgs[0] = 137
bmArgs[1] = 138
bmArgs[2] = 139
int mrefIdx = 40, cpArgs[1] = 138, cf.className = null
clsName = java.lang.annotation.Annotation
bmArgs[0] = 141
bmArgs[1] = 143
bmArgs[2] = 146
int mrefIdx = 144, cpArgs[1] = 143, cf.className = null
clsName = java.lang.reflect.AnnotatedElement
bmArgs[0] = 147
bmArgs[1] = 149
bmArgs[2] = 156
int mrefIdx = 150, cpArgs[1] = 149, cf.className = null
clsName = java.util.LinkedHashMap
bmArgs[0] = 240
bmArgs[0] = 793
bmArgs[0] = 795
bmArgs[0] = 797
bmArgs[0] = 799
bmArgs[0] = 106
bmArgs[1] = 108
bmArgs[2] = 111
int mrefIdx = 109, cpArgs[1] = 108, cf.className = null
clsName = java.lang.CharSequence
bmArgs[0] = 106
bmArgs[1] = 112
bmArgs[2] = 111
int mrefIdx = 113, cpArgs[1] = 112, cf.className = null
clsName = java.lang.CharSequence
bmArgs[0] = 303
bmArgs[0] = 305
bmArgs[0] = 267
bmArgs[0] = 269
bmArgs[0] = 176
bmArgs[1] = 177
bmArgs[2] = 180
int mrefIdx = 178, cpArgs[1] = 177, cf.className = null
clsName = java.lang.Enum
bmArgs[0] = 175
bmArgs[0] = 921
bmArgs[0] = 923
bmArgs[0] = 925
bmArgs[0] = 927
bmArgs[0] = 929
bmArgs[0] = 931
bmArgs[0] = 933
bmArgs[0] = 935
bmArgs[0] = 937
bmArgs[0] = 939
bmArgs[0] = 941
bmArgs[0] = 943
bmArgs[0] = 945
bmArgs[0] = 947
bmArgs[0] = 949
bmArgs[0] = 951
bmArgs[0] = 953
bmArgs[0] = 955
bmArgs[0] = 957
bmArgs[0] = 959
bmArgs[0] = 961
bmArgs[0] = 963
bmArgs[0] = 965
bmArgs[0] = 967
bmArgs[0] = 969
bmArgs[0] = 971
bmArgs[0] = 973
bmArgs[0] = 975
bmArgs[0] = 977
bmArgs[0] = 979
bmArgs[0] = 981
bmArgs[0] = 983
bmArgs[0] = 985
JavaPathfinder core system v8.0 (rev 1af3982c6608c081b63048d004dcd56eb0b43176) - (C) 2005-2014 United States Government. All rights reserved.
====================================================== system under test
java17.RecordFeatureTest.runTestMethod()
====================================================== search started: 05/08/24, 3:41 am
bmArgs[0] = 257
bmArgs[1] = 258
bmArgs[2] = 257
bmArgs[3] = 261
bmArgs[4] = 262
int mrefIdx = 259, cpArgs[1] = 258, cf.className = null
clsName = java.util.Comparator
bmArgs[0] = 257
bmArgs[1] = 263
bmArgs[2] = 257
bmArgs[3] = 261
bmArgs[4] = 262
int mrefIdx = 264, cpArgs[1] = 263, cf.className = null
clsName = java.util.Comparator
bmArgs[0] = 257
bmArgs[1] = 266
bmArgs[2] = 257
bmArgs[3] = 261
bmArgs[4] = 262
int mrefIdx = 267, cpArgs[1] = 266, cf.className = null
clsName = java.util.Comparator
bmArgs[0] = 257
bmArgs[1] = 269
bmArgs[2] = 257
bmArgs[3] = 261
bmArgs[4] = 262
int mrefIdx = 270, cpArgs[1] = 269, cf.className = null
clsName = java.util.Comparator
bmArgs[0] = 257
bmArgs[1] = 272
bmArgs[2] = 257
bmArgs[3] = 261
bmArgs[4] = 262
int mrefIdx = 273, cpArgs[1] = 272, cf.className = null
clsName = java.util.Comparator
bmArgs[0] = 257
bmArgs[1] = 275
bmArgs[2] = 257
bmArgs[3] = 261
bmArgs[4] = 262
int mrefIdx = 276, cpArgs[1] = 275, cf.className = null
clsName = java.util.Comparator
[WARNING] orphan NativePeer method: jdk.internal.misc.Unsafe.getUnsafe()Lsun/misc/Unsafe;
bmArgs[0] = 146
bmArgs[1] = 147
bmArgs[2] = 146
int mrefIdx = 148, cpArgs[1] = 147, cf.className = null
clsName = java.util.concurrent.ConcurrentMap
bmArgs[0] = 155
bmArgs[1] = 156
bmArgs[2] = 159
bmArgs[3] = 160
bmArgs[4] = 161
int mrefIdx = 157, cpArgs[1] = 156, cf.className = null
clsName = java.util.Map$Entry
bmArgs[0] = 155
bmArgs[1] = 162
bmArgs[2] = 159
bmArgs[3] = 160
bmArgs[4] = 161
int mrefIdx = 163, cpArgs[1] = 162, cf.className = null
clsName = java.util.Map$Entry
bmArgs[0] = 155
bmArgs[1] = 165
bmArgs[2] = 159
bmArgs[3] = 160
bmArgs[4] = 161
int mrefIdx = 166, cpArgs[1] = 165, cf.className = null
clsName = java.util.Map$Entry
bmArgs[0] = 155
bmArgs[1] = 168
bmArgs[2] = 159
bmArgs[3] = 160
bmArgs[4] = 161
int mrefIdx = 169, cpArgs[1] = 168, cf.className = null
clsName = java.util.Map$Entry
bmArgs[0] = 61
bmArgs[1] = 62
bmArgs[2] = 61
int mrefIdx = 63, cpArgs[1] = 62, cf.className = null
clsName = java.util.function.Function
bmArgs[0] = 61
bmArgs[1] = 65
bmArgs[2] = 61
int mrefIdx = 66, cpArgs[1] = 65, cf.className = null
clsName = java.util.function.Function
bmArgs[0] = 61
bmArgs[1] = 68
bmArgs[2] = 61
int mrefIdx = 69, cpArgs[1] = 68, cf.className = null
clsName = java.util.function.Function
bmArgs[0] = 55
bmArgs[1] = 56
bmArgs[2] = 55
int mrefIdx = 57, cpArgs[1] = 56, cf.className = null
clsName = java.util.function.BiFunction
bmArgs[0] = 8
bmArgs[1] = 54
bmArgs[2] = 56
bmArgs[3] = 57
int mrefIdx = 14081, cpArgs[1] = 54, cf.className = null
java.lang.ArrayIndexOutOfBoundsException: Index 14081 out of bounds for length 65
at gov.nasa.jpf.jvm.ClassFile.methodClassNameAt(ClassFile.java:315)
index 54 is generated from ClassFile.readU2()
:
public final int readU2(){
int idx = pos;
pos += 2;
return ((data[idx++]&0xff) << 8) | (data[idx]&0xff);
}
Please try to set up the MethodTracker
listener, so we can see which methods call these bootstrap methods (BMs). We can now see what type the BMs have, but not where the call comes from; this makes it very hard to guess what the correct mrefIdx
at the end should be, because we can't see yet where in the code that call is made.
Yes, and if you can find out where the function call was made, that will likely give us clues on the correct value. You can try the use the MethodTracker listener, something like the additional option +listener=gov.nasa.jpf.listener.MethodTracker
Where do I have to write the listener ? Not working in command.
The option is passed to the jpf
command on the command line. You can also add the option listener=...
to the .jpf config file instead.
But the new output is very large. How can I show the result to you ? Around 40 MB.
> Task :compileAnnotationsJava UP-TO-DATE
> Task :processAnnotationsResources NO-SOURCE
> Task :annotationsClasses UP-TO-DATE
> Task :copyLibs UP-TO-DATE
> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :generateBuildInfo
> Task :generateVersion
> Task :copyResources
> Task :compileExamplesJava UP-TO-DATE
> Task :compileClassesJava UP-TO-DATE
> Task :processClassesResources NO-SOURCE
> Task :classesClasses UP-TO-DATE
> Task :compilePeersJava UP-TO-DATE
> Task :processPeersResources NO-SOURCE
> Task :peersClasses UP-TO-DATE
> Task :compileTestJava UP-TO-DATE
> Task :compileModules UP-TO-DATE
> Task :compile UP-TO-DATE
> Task :createAnnotationsJar UP-TO-DATE
> Task :createClassloaderSpecificTestsJar UP-TO-DATE
> Task :createJpfClassesJar UP-TO-DATE
> Task :createJpfJar
> Task :createRunJpfJar UP-TO-DATE
> Task :createRunTestJar UP-TO-DATE
> Task :buildJars
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
running jpf with args:
----------------------------------- search started
JavaPathfinder core system v8.0 (rev 1af3982c6608c081b63048d004dcd56eb0b43176) - (C) 2005-2014 United States Government. All rights reserved.
====================================================== system under test
java17.RecordFeatureTest.runTestMethod()
====================================================== search started: 07/08/24, 3:10 am
0: java.lang.Boolean.[<clinit>]...
0: java.lang.Boolean.<clinit>()V
0: java.lang.Boolean.<init>(Z)V
0: java.lang.Object.<init>()V
0: java.lang.Boolean.<init>(Z)V
0: java.lang.Boolean.<clinit>()V
0: java.lang.Boolean.<init>(Z)V
0: java.lang.Object.<init>()V
0: java.lang.Boolean.<init>(Z)V
0: java.lang.Boolean.<clinit>()V
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: java.lang.Boolean.<clinit>()V
0: java.lang.Boolean.[<clinit>]
0: java.lang.Character.[<clinit>]
0: native java.lang.Character.<clinit>()V
0: java.lang.Character.[<clinit>]
0: java.lang.Short.[<clinit>]
0: java.lang.Short.<clinit>()V
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: java.lang.Short.<clinit>()V
0: java.lang.Short.[<clinit>]
0: java.lang.Integer.[<clinit>]
0: java.lang.Integer.<clinit>()V
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: java.lang.Integer.<clinit>()V
0: java.lang.Integer.[<clinit>]
0: java.lang.Long.[<clinit>]
0: java.lang.Long.<clinit>()V
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: java.lang.Long.<clinit>()V
0: java.lang.Long.[<clinit>]
0: java.lang.Float.[<clinit>]
0: java.lang.Float.<clinit>()V
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: java.lang.Float.<clinit>()V
0: java.lang.Float.[<clinit>]
0: java.lang.Double.[<clinit>]
0: java.lang.Double.<clinit>()V
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: java.lang.Double.<clinit>()V
0: java.lang.Double.[<clinit>]
0: java.lang.Byte.[<clinit>]
0: java.lang.Byte.<clinit>()V
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: native java.lang.Class.getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class;
0: java.lang.Byte.<clinit>()V
0: java.lang.Byte.[<clinit>]
0: java.lang.String.[<clinit>]
0: java.lang.String.<clinit>()V
0: native java.lang.Class.desiredAssertionStatus()Z
0: native java.lang.Class.desiredAssertionStatus()Z
0: java.lang.String.<clinit>()V
0: java.lang.String$CaseInsensitiveComparator.<init>()V
0: java.lang.Object.<init>()V
0: java.lang.String$CaseInsensitiveComparator.<init>()V
0: java.lang.String.<clinit>()V
0: java.lang.String.[<clinit>]
0: java.lang.Thread.[<clinit>]
0: java.lang.Thread.<clinit>()V
0: java.lang.Thread.[<clinit>]
0: java.lang.Thread$State.[<clinit>]
0: java.lang.Thread$State.<clinit>()V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Object.<init>()V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<clinit>()V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Object.<init>()V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<clinit>()V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Object.<init>()V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<clinit>()V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Object.<init>()V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<clinit>()V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Object.<init>()V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<clinit>()V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Object.<init>()V
0: java.lang.Enum.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<init>(Ljava/lang/String;I)V
0: java.lang.Thread$State.<clinit>()V
0: java.lang.Thread$State.$values()[Ljava/lang/Thread$State;
0: java.lang.Thread$State.<clinit>()V
0: java.lang.Thread$State.[<clinit>]
0: java.lang.System.[<clinit>]
0: java.lang.System.<clinit>()V
0: java.lang.System$1.<init>()V
0: java.io.InputStream.<init>()V
0: java.lang.Object.<init>()V
0: java.io.InputStream.<init>()V
0: java.lang.System$1.<init>()V
0: java.lang.System.<clinit>()V
0: native java.lang.System.createSystemOut()Ljava/io/PrintStream;
0: native java.lang.System.createSystemOut()Ljava/io/PrintStream;
0: java.lang.System.<clinit>()V
0: native java.lang.System.createSystemErr()Ljava/io/PrintStream;
0: native java.lang.System.createSystemErr()Ljava/io/PrintStream;
0: java.lang.System.<clinit>()V
0: java.util.Properties.[<clinit>]
0: java.util.Properties.<clinit>()V
[WARNING] orphan NativePeer method: jdk.internal.misc.Unsafe.getUnsafe()Lsun/misc/Unsafe;
0: jdk.internal.misc.Unsafe.[<clinit>]
0: jdk.internal.misc.Unsafe.<clinit>()V
0: jdk.internal.misc.Unsafe.<init>()V
0: java.lang.Object.<init>()V
0: jdk.internal.misc.Unsafe.<init>()V
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: jdk.internal.misc.Unsafe.<clinit>()V
0: jdk.internal.misc.Unsafe.[<clinit>]
0: java.util.Properties.<clinit>()V
0: jdk.internal.misc.Unsafe.getUnsafe()Ljdk/internal/misc/Unsafe;
0: java.util.Properties.<clinit>()V
0: java.util.Properties.[<clinit>]
0: java.lang.System.<clinit>()V
0: java.util.Properties.<init>()V
0: java.util.Properties.<init>(Ljava/util/Properties;I)V
0: java.util.Hashtable.<init>(Ljava/lang/Void;)V
0: java.util.Dictionary.<init>()V
0: java.lang.Object.<init>()V
0: java.util.Dictionary.<init>()V
0: java.util.Hashtable.<init>(Ljava/lang/Void;)V
0: java.util.Properties.<init>(Ljava/util/Properties;I)V
0: java.util.concurrent.ConcurrentHashMap.[<clinit>]
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: java.lang.Runtime.[<clinit>]
0: java.lang.Runtime.<clinit>()V
0: java.lang.Runtime.<init>()V
0: java.lang.Object.<init>()V
0: java.lang.Runtime.<init>()V
0: java.lang.Runtime.<clinit>()V
0: java.lang.Runtime.[<clinit>]
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: java.lang.Runtime.getRuntime()Ljava/lang/Runtime;
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: native java.lang.Runtime.availableProcessors()I
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;)V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;Z)V
0: java.lang.Object.<init>()V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;Z)V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;)V
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;)V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;Z)V
0: java.lang.Object.<init>()V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;Z)V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;)V
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;)V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;Z)V
0: java.lang.Object.<init>()V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;Z)V
0: java.io.ObjectStreamField.<init>(Ljava/lang/String;Ljava/lang/Class;)V
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: jdk.internal.misc.Unsafe.getUnsafe()Ljdk/internal/misc/Unsafe;
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayBaseOffset(Ljava/lang/Class;)I
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: native jdk.internal.misc.Unsafe.arrayIndexScale(Ljava/lang/Class;)I
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: java.lang.Integer.numberOfLeadingZeros(I)I
0: java.util.concurrent.ConcurrentHashMap.<clinit>()V
0: java.util.concurrent.ConcurrentHashMap.[<clinit>]
0: java.util.Properties.<init>(Ljava/util/Properties;I)V
0: java.util.concurrent.ConcurrentHashMap.<init>(I)V
0: java.util.concurrent.ConcurrentHashMap.<init>(IFI)V
0: java.util.AbstractMap.<init>()V
0: java.lang.Object.<init>()V
0: java.util.AbstractMap.<init>()V
0: java.util.concurrent.ConcurrentHashMap.<init>(IFI)V
0: java.util.concurrent.ConcurrentHashMap.tableSizeFor(I)I
0: java.lang.Integer.numberOfLeadingZeros(I)I
0: java.util.concurrent.ConcurrentHashMap.tableSizeFor(I)I
0: java.util.concurrent.ConcurrentHashMap.<init>(IFI)V
0: java.util.concurrent.ConcurrentHashMap.<init>(I)V
0: java.util.Properties.<init>(Ljava/util/Properties;I)V
0: native jdk.internal.misc.Unsafe.storeFence()V
0: native jdk.internal.misc.Unsafe.storeFence()V
0: java.util.Properties.<init>(Ljava/util/Properties;I)V
0: java.util.Properties.<init>()V
0: java.lang.System.<clinit>()V
0: native java.lang.System.getKeyValuePairs()[Ljava/lang/String;
0: native java.lang.System.getKeyValuePairs()[Ljava/lang/String;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.initTable()[Ljava/util/concurrent/ConcurrentHashMap$Node;
0: native jdk.internal.misc.Unsafe.compareAndSetInt(Ljava/lang/Object;JII)Z
0: native jdk.internal.misc.Unsafe.compareAndSetInt(Ljava/lang/Object;JII)Z
0: java.util.concurrent.ConcurrentHashMap.initTable()[Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.equals(Ljava/lang/Object;)Z
0: native java.lang.String.equals(Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.resizeStamp(I)I
0: java.lang.Integer.numberOfLeadingZeros(I)I
0: java.util.concurrent.ConcurrentHashMap.resizeStamp(I)I
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetInt(Ljava/lang/Object;JII)Z
0: native jdk.internal.misc.Unsafe.compareAndSetInt(Ljava/lang/Object;JII)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap$ForwardingNode.<init>([Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap$ForwardingNode.<init>([Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: native jdk.internal.misc.Unsafe.compareAndSetInt(Ljava/lang/Object;JII)Z
0: native jdk.internal.misc.Unsafe.compareAndSetInt(Ljava/lang/Object;JII)Z
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: native jdk.internal.misc.Unsafe.compareAndSetReference(Ljava/lang/Object;JLjava/lang/Object;Ljava/lang/Object;)Z
0: java.util.concurrent.ConcurrentHashMap.casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: native jdk.internal.misc.Unsafe.putReferenceVolatile(Ljava/lang/Object;JLjava/lang/Object;)V
0: jdk.internal.misc.Unsafe.putReferenceRelease(Ljava/lang/Object;JLjava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: native jdk.internal.misc.Unsafe.compareAndSetInt(Ljava/lang/Object;JII)Z
0: native jdk.internal.misc.Unsafe.compareAndSetInt(Ljava/lang/Object;JII)Z
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.resizeStamp(I)I
0: java.lang.Integer.numberOfLeadingZeros(I)I
0: java.util.concurrent.ConcurrentHashMap.resizeStamp(I)I
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.sumCount()J
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.lang.Object.<init>()V
0: java.util.concurrent.ConcurrentHashMap$Node.<init>(ILjava/lang/Object;Ljava/lang/Object;)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: native jdk.internal.misc.Unsafe.compareAndSetLong(Ljava/lang/Object;JJJ)Z
0: java.util.concurrent.ConcurrentHashMap.addCount(JI)V
0: java.util.concurrent.ConcurrentHashMap.putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
0: java.lang.System.<clinit>()V
0: java.lang.System.createJavaLangAccess()Ljdk/internal/access/JavaLangAccess;
0: java.lang.System$2.<init>()V
0: java.lang.Object.<init>()V
0: java.lang.System$2.<init>()V
0: java.lang.System.createJavaLangAccess()Ljdk/internal/access/JavaLangAccess;
0: java.lang.System.<clinit>()V
0: jdk.internal.access.SharedSecrets.[<clinit>]
0: jdk.internal.access.SharedSecrets.<clinit>()V
0: jdk.internal.misc.Unsafe.getUnsafe()Ljdk/internal/misc/Unsafe;
0: jdk.internal.access.SharedSecrets.<clinit>()V
0: jdk.internal.access.SharedSecrets.[<clinit>]
0: java.lang.System.<clinit>()V
0: jdk.internal.access.SharedSecrets.setJavaLangAccess(Ljdk/internal/access/JavaLangAccess;)V
0: java.lang.System.<clinit>()V
0: java.lang.System.[<clinit>]
0: java.lang.invoke.VarHandle.[<clinit>]
0: java.lang.invoke.VarHandle.<clinit>()V
0: native java.lang.Class.desiredAssertionStatus()Z
0: native java.lang.Class.desiredAssertionStatus()Z
0: java.lang.invoke.VarHandle.<clinit>()V
0: java.lang.invoke.VarHandle$1.<init>()V
0: java.lang.Object.<init>()V
0: java.lang.invoke.VarHandle$1.<init>()V
0: java.lang.invoke.VarHandle.<clinit>()V
0: jdk.internal.util.Preconditions.outOfBoundsExceptionFormatter(Ljava/util/function/Function;)Ljava/util/function/BiFunction;
0: jdk.internal.util.Preconditions$1.<init>(Ljava/util/function/Function;)V
0: java.lang.Object.<init>()V
0: jdk.internal.util.Preconditions$1.<init>(Ljava/util/function/Function;)V
0: jdk.internal.util.Preconditions.outOfBoundsExceptionFormatter(Ljava/util/function/Function;)Ljava/util/function/BiFunction;
0: java.lang.invoke.VarHandle.<clinit>()V
0: java.lang.invoke.MethodHandleStatics.[<clinit>]
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: jdk.internal.misc.Unsafe.getUnsafe()Ljdk/internal/misc/Unsafe;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: sun.security.action.GetPropertyAction.privilegedGetProperties()Ljava/util/Properties;
0: java.lang.System.getSecurityManager()Ljava/lang/SecurityManager;
0: sun.security.action.GetPropertyAction.privilegedGetProperties()Ljava/util/Properties;
0: java.lang.System.getProperties()Ljava/util/Properties;
0: sun.security.action.GetPropertyAction.privilegedGetProperties()Ljava/util/Properties;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: native java.lang.Integer.parseInt(Ljava/lang/String;)I
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: native java.lang.Integer.parseInt(Ljava/lang/String;)I
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: native java.lang.Integer.parseInt(Ljava/lang/String;)I
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: native java.lang.Integer.parseInt(Ljava/lang/String;)I
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: native java.lang.String.equalsIgnoreCase(Ljava/lang/String;)Z
0: java.lang.Boolean.parseBoolean(Ljava/lang/String;)Z
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.String.hashCode()I
0: native java.lang.String.hashCode()I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.spread(I)I
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: native jdk.internal.misc.Unsafe.getReferenceVolatile(Ljava/lang/Object;J)Ljava/lang/Object;
0: jdk.internal.misc.Unsafe.getReferenceAcquire(Ljava/lang/Object;J)Ljava/lang/Object;
0: java.util.concurrent.ConcurrentHashMap.tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
0: java.util.concurrent.ConcurrentHashMap.get(Ljava/lang/Object;)Ljava/lang/Object;
0: java.util.Properties.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: java.util.Properties.getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: native java.lang.Integer.parseInt(Ljava/lang/String;)I
0: java.lang.invoke.MethodHandleStatics.<clinit>()V
0: java.lang.invoke.MethodHandleStatics.[<clinit>]
0: java.lang.invoke.VarHandle.<clinit>()V
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: native jdk.internal.misc.Unsafe.objectFieldOffset(Ljava/lang/Class;Ljava/lang/String;)J
0: java.lang.invoke.VarHandle.<clinit>()V
0: native jdk.internal.misc.Unsafe.ensureClassInitialized(Ljava/lang/Class;)V
0: native jdk.internal.misc.Unsafe.ensureClassInitialized(Ljava/lang/Class;)V
0: java.lang.invoke.VarHandle.<clinit>()V
0: java.lang.invoke.VarHandle.[<clinit>]
0: gov.nasa.jpf.util.test.TestJPF.[<clinit>]
0: gov.nasa.jpf.util.test.TestJPF.<clinit>()V
0: native gov.nasa.jpf.util.test.TestJPF.isJPFRun()Z
0: native gov.nasa.jpf.util.test.TestJPF.isJPFRun()Z
0: gov.nasa.jpf.util.test.TestJPF.<clinit>()V
0: gov.nasa.jpf.util.test.TestJPF.[<clinit>]
0: gov.nasa.jpf.util.test.TestJPF.[runTestMethod]
0: gov.nasa.jpf.util.test.TestJPF.runTestMethod([Ljava/lang/String;)V
0: native gov.nasa.jpf.util.test.TestJPF.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: native gov.nasa.jpf.util.test.TestJPF.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: gov.nasa.jpf.util.test.TestJPF.runTestMethod([Ljava/lang/String;)V
0: native gov.nasa.jpf.util.test.TestJPF.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: native gov.nasa.jpf.util.test.TestJPF.getProperty(Ljava/lang/String;)Ljava/lang/String;
0: gov.nasa.jpf.util.test.TestJPF.runTestMethod([Ljava/lang/String;)V
0: native java.lang.Class.forName(Ljava/lang/String;)Ljava/lang/Class;
0: native java.lang.Class.forName(Ljava/lang/String;)Ljava/lang/Class;
0: gov.nasa.jpf.util.test.TestJPF.runTestMethod([Ljava/lang/String;)V
0: native java.lang.Class.getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
0: native java.lang.Class.getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
0: gov.nasa.jpf.util.test.TestJPF.runTestMethod([Ljava/lang/String;)V
0: native java.lang.reflect.Constructor.newInstance([Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.reflect.Constructor.newInstance([Ljava/lang/Object;)Ljava/lang/Object;
0: java17.RecordFeatureTest.[<init>]
0: java17.RecordFeatureTest.<init>()V
0: native gov.nasa.jpf.util.test.TestJPF.<init>()V
0: native gov.nasa.jpf.util.test.TestJPF.<init>()V
0: java17.RecordFeatureTest.<init>()V
0: java17.RecordFeatureTest.[<init>]
0: native java.lang.reflect.Constructor.newInstance([Ljava/lang/Object;)Ljava/lang/Object;
0: gov.nasa.jpf.util.test.TestJPF.runTestMethod([Ljava/lang/String;)V
0: native java.lang.Class.getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
0: native java.lang.Class.getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
0: gov.nasa.jpf.util.test.TestJPF.runTestMethod([Ljava/lang/String;)V
0: native java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
0: native java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
0: java17.RecordFeatureTest.[testRecordFieldsDirectly]
0: java17.RecordFeatureTest.testRecordFieldsDirectly()V
0: native gov.nasa.jpf.util.test.TestJPF.verifyNoPropertyViolation([Ljava/lang/String;)Z
0: native gov.nasa.jpf.util.test.TestJPF.verifyNoPropertyViolation([Ljava/lang/String;)Z
0: java17.RecordFeatureTest.testRecordFieldsDirectly()V
java.lang.ArrayIndexOutOfBoundsException: Index 14081 out of bounds for length 65
at gov.nasa.jpf.jvm.ClassFile.methodClassNameAt(ClassFile.java:313)
at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setBootstrapMethod(JVMClassInfo.java:131)
at gov.nasa.jpf.jvm.ClassFile.setBootstrapMethod(ClassFile.java:694)
at gov.nasa.jpf.jvm.ClassFile.parseBootstrapMethodAttr(ClassFile.java:1528)
at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setClassAttribute(JVMClassInfo.java:112)
at gov.nasa.jpf.jvm.ClassFile.setClassAttribute(ClassFile.java:671)
at gov.nasa.jpf.jvm.ClassFile.parseClassAttributes(ClassFile.java:1411)
at gov.nasa.jpf.jvm.ClassFile.parse(ClassFile.java:980)
at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.<init>(JVMClassInfo.java:80)
at gov.nasa.jpf.jvm.JVMClassInfo.<init>(JVMClassInfo.java:770)
at gov.nasa.jpf.jvm.JVMClassFileContainer$JVMClassFileMatch.createClassInfo(JVMClassFileContainer.java:59)
at gov.nasa.jpf.jvm.JVMClassFileContainer$JVMClassFileMatch.createClassInfo(JVMClassFileContainer.java:34)
at gov.nasa.jpf.vm.ClassLoaderInfo.getResolvedClassInfo(ClassLoaderInfo.java:356)
at gov.nasa.jpf.vm.SystemClassLoaderInfo.getResolvedClassInfo(SystemClassLoaderInfo.java:148)
at gov.nasa.jpf.vm.SystemClassLoaderInfo.loadClass(SystemClassLoaderInfo.java:183)
at gov.nasa.jpf.vm.ClassInfo.resolveReferencedClass(ClassInfo.java:2485)
at gov.nasa.jpf.vm.ThreadInfo.resolveReferencedClass(ThreadInfo.java:1243)
at gov.nasa.jpf.jvm.bytecode.NEW.execute(NEW.java:55)
at gov.nasa.jpf.vm.ThreadInfo.executeInstruction(ThreadInfo.java:1910)
at gov.nasa.jpf.vm.ThreadInfo.executeTransition(ThreadInfo.java:1861)
at gov.nasa.jpf.vm.SystemState.executeNextTransition(SystemState.java:765)
at gov.nasa.jpf.vm.VM.forward(VM.java:1721)
at gov.nasa.jpf.search.Search.forward(Search.java:937)
at gov.nasa.jpf.search.DFSearch.search(DFSearch.java:79)
at gov.nasa.jpf.JPF.run(JPF.java:613)
at gov.nasa.jpf.util.test.TestJPF.createAndRunJPF(TestJPF.java:675)
at gov.nasa.jpf.util.test.TestJPF.noPropertyViolation(TestJPF.java:806)
at gov.nasa.jpf.util.test.TestJPF.verifyNoPropertyViolation(TestJPF.java:830)
at java17.RecordFeatureTest.testRecordFieldsDirectly(RecordFeatureTest.java:15)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)
at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:60)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
java.lang.AssertionError: JPF internal exception executing: :java.lang.ArrayIndexOutOfBoundsException: Index 14081 out of bounds for length 65
at gov.nasa.jpf.util.test.TestJPF.fail(TestJPF.java:164)
at gov.nasa.jpf.util.test.TestJPF.fail(TestJPF.java:156)
at gov.nasa.jpf.util.test.TestJPF.noPropertyViolation(TestJPF.java:810)
at gov.nasa.jpf.util.test.TestJPF.verifyNoPropertyViolation(TestJPF.java:830)
at java17.RecordFeatureTest.testRecordFieldsDirectly(RecordFeatureTest.java:15)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:112)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:40)
at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:60)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:52)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:113)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:65)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
> Task :test FAILED
java17.RecordFeatureTest > testRecordFieldsDirectly FAILED
java.lang.AssertionError at RecordFeatureTest.java:15
Test Execution: FAILURE
Summary: 1 tests, 0 passed, 1 failed, 0 skipped
1 test completed, 1 failed
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> There were failing tests. See the report at: file:///Users/ekla/GSOC/JPFjava17/jpf-core/build/reports/tests/test/index.html
BUILD FAILED in 2s
18 actionable tasks: 5 executed, 13 up-to-date
They are to cluttered to understand. How do they mean something valuable ?
Only the last part is important. We see that the problem is triggered by java17.RecordFeatureTest.testRecordFieldsDirectly()V
. (There is also the ExecTracker
listener that would show at which instruction the problem occurs, but there are only two accesses in that small test, so it is clear enough in this case.)
Now, you can look into the bytecode of that test method to see what the instructions are, and which part of the record class is used. Then, we can deduce where the wrong index comes from.
I only executed java17.RecordFeatureTest.testRecordFieldsDirectly() Test
so only this thing showing in listener (may be), but of all the Tests
cause same error.
We can see the ByteCode
above (here is only related to this) :
public void testRecordFieldsDirectly();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=2, args_size=1
0: aload_0
1: iconst_0
2: anewarray #7 // class java/lang/String
5: invokevirtual #9 // Method verifyNoPropertyViolation:([Ljava/lang/String;)Z
8: ifeq 41
11: new #15 // class java17/RecordFeatureTest$Point
14: dup
15: iconst_4
16: iconst_5
17: invokespecial #17 // Method java17/RecordFeatureTest$Point."<init>":(II)V
20: astore_1
21: ldc #20 // String
23: iconst_4
24: aload_1
25: getfield #22 // Field java17/RecordFeatureTest$Point.x:I
28: invokestatic #26 // Method assertEquals:(Ljava/lang/String;II)V
31: ldc #20 // String
33: iconst_5
34: aload_1
35: getfield #30 // Field java17/RecordFeatureTest$Point.y:I
38: invokestatic #26 // Method assertEquals:(Ljava/lang/String;II)V
41: return
LineNumberTable:
line 15: 0
line 17: 11
line 19: 21
line 20: 31
line 23: 41
LocalVariableTable:
Start Length Slot Name Signature
21 20 1 point Ljava17/RecordFeatureTest$Point;
0 42 0 this Ljava17/RecordFeatureTest;
StackMapTable: number_of_entries = 1
frame_type = 41 /* same */
RuntimeVisibleAnnotations:
0: #68()
org.junit.Test
and constant pool
Constant pool:
#1 = Methodref #2.#3 // gov/nasa/jpf/util/test/TestJPF."<init>":()V
#2 = Class #4 // gov/nasa/jpf/util/test/TestJPF
#3 = NameAndType #5:#6 // "<init>":()V
#4 = Utf8 gov/nasa/jpf/util/test/TestJPF
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Class #8 // java/lang/String
#8 = Utf8 java/lang/String
#9 = Methodref #10.#11 // java17/RecordFeatureTest.verifyNoPropertyViolation:([Ljava/lang/String;)Z
#10 = Class #12 // java17/RecordFeatureTest
#11 = NameAndType #13:#14 // verifyNoPropertyViolation:([Ljava/lang/String;)Z
#12 = Utf8 java17/RecordFeatureTest
#13 = Utf8 verifyNoPropertyViolation
#14 = Utf8 ([Ljava/lang/String;)Z
#15 = Class #16 // java17/RecordFeatureTest$Point
#16 = Utf8 java17/RecordFeatureTest$Point
#17 = Methodref #15.#18 // java17/RecordFeatureTest$Point."<init>":(II)V
#18 = NameAndType #5:#19 // "<init>":(II)V
#19 = Utf8 (II)V
#20 = String #21 //
#21 = Utf8
#22 = Fieldref #15.#23 // java17/RecordFeatureTest$Point.x:I
#23 = NameAndType #24:#25 // x:I
#24 = Utf8 x
#25 = Utf8 I
#26 = Methodref #10.#27 // java17/RecordFeatureTest.assertEquals:(Ljava/lang/String;II)V
#27 = NameAndType #28:#29 // assertEquals:(Ljava/lang/String;II)V
#28 = Utf8 assertEquals
#29 = Utf8 (Ljava/lang/String;II)V
#30 = Fieldref #15.#31 // java17/RecordFeatureTest$Point.y:I
#31 = NameAndType #32:#25 // y:I
#32 = Utf8 y
#33 = Methodref #15.#34 // java17/RecordFeatureTest$Point.x:()I
#34 = NameAndType #24:#35 // x:()I
#35 = Utf8 ()I
#36 = Methodref #15.#37 // java17/RecordFeatureTest$Point.y:()I
#37 = NameAndType #32:#35 // y:()I
#38 = Methodref #10.#39 // java17/RecordFeatureTest.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#39 = NameAndType #28:#40 // assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#40 = Utf8 (Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#41 = Methodref #10.#42 // java17/RecordFeatureTest.assertNotEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#42 = NameAndType #43:#40 // assertNotEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
#43 = Utf8 assertNotEquals
#44 = Methodref #15.#45 // java17/RecordFeatureTest$Point.hashCode:()I
#45 = NameAndType #46:#35 // hashCode:()I
#46 = Utf8 hashCode
#47 = Methodref #10.#48 // java17/RecordFeatureTest.assertNotEquals:(Ljava/lang/String;II)V
#48 = NameAndType #43:#29 // assertNotEquals:(Ljava/lang/String;II)V
#49 = String #50 // Point[x=4, y=5]
#50 = Utf8 Point[x=4, y=5]
#51 = Methodref #15.#52 // java17/RecordFeatureTest$Point.toString:()Ljava/lang/String;
#52 = NameAndType #53:#54 // toString:()Ljava/lang/String;
#53 = Utf8 toString
#54 = Utf8 ()Ljava/lang/String;
#55 = Methodref #10.#56 // java17/RecordFeatureTest.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
#56 = NameAndType #28:#57 // assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
#57 = Utf8 (Ljava/lang/Object;Ljava/lang/Object;)V
#58 = Utf8 Code
#59 = Utf8 LineNumberTable
#60 = Utf8 LocalVariableTable
#61 = Utf8 this
#62 = Utf8 Ljava17/RecordFeatureTest;
#63 = Utf8 testRecordFieldsDirectly
#64 = Utf8 point
#65 = Utf8 Ljava17/RecordFeatureTest$Point;
#66 = Utf8 StackMapTable
#67 = Utf8 RuntimeVisibleAnnotations
#68 = Utf8 Lorg/junit/Test;
#69 = Utf8 testRecordFields
#70 = Utf8 testRecordEquality
#71 = Utf8 point1
#72 = Utf8 point2
#73 = Utf8 point3
#74 = Utf8 testRecordHashCode
#75 = Utf8 testRecordToString
#76 = Utf8 SourceFile
#77 = Utf8 RecordFeatureTest.java
#78 = Utf8 NestMembers
#79 = Utf8 InnerClasses
#80 = Utf8 Point
From Bytecode, it seems like it's been treated like a regular class ?
(Should I delete some comments to make this issue short)
We need the ExecTracker
here to see at which instruction the failure occurs. It is somewhere inside class RecordFeatureTest$Point
.
Let's keep all comments, as they are all on the same topic, unless there is something where we repeated ourselves.
As mentioned in our last meeting, index (in this case 54) is correct. Then we have look how 14081 (in this case) is produced. So here is last state from where we can move ...
Flow of Code :
Here is the method
gov.nasa.jpf.jvm.ClassFile.methodClassNameAt(ClassFile.java:313)
public String methodClassNameAt(int methodRefInfoIdx){ return (String) cpValue[ u2(cpPos[methodRefInfoIdx]+1)]; }
And this method has been used in
gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setBootstrapMethod(JVMClassInfo.java:131)
(Please notice the statementSystem.out.println("int mrefIdx = " + mrefIdx + ", cpArgs[1] = " + cpArgs[1]);
, as I have wrote them to debug things)@Override public void setBootstrapMethod (ClassFile cf, Object tag, int idx, int refKind, String cls, String mth, String parameters, String descriptor, int[] cpArgs) { String clsName = null; ClassInfo enclosingLambdaCls; if (cpArgs.length > 1) { // For Lambdas int mrefIdx = cf.mhMethodRefIndexAt(cpArgs[1]); System.out.println("int mrefIdx = " + mrefIdx + ", cpArgs[1] = " + cpArgs[1]); clsName = cf.methodClassNameAt(mrefIdx).replace('/', '.'); if(!clsName.equals(JVMClassInfo.this.getName())) { if (JVMClassInfo.resolvedClasses.containsKey(clsName)) enclosingLambdaCls = (JVMClassInfo) JVMClassInfo.resolvedClasses.get(clsName); else enclosingLambdaCls = ClassLoaderInfo.getCurrentResolvedClassInfo(clsName); } else { enclosingLambdaCls = JVMClassInfo.this; JVMClassInfo.resolvedClasses.put(clsName, enclosingLambdaCls); } // The following check should be up-to-date // with OpenJDK 11' implementation of // java.lang.invoke.LambdaMetafactory::altMetafactory() // // Check if it is serializable lambda expression. It is if: // 1. bootstrap method is "altMetafactory" // 2. 4-th cp arg value has FLAG_SERIALIZABLE (1 << 0) bit set // The check order cannot be reversed since other BSM may not // have forth argument in `cpArgs` boolean isSerializable = false; if (cls.equals("java/lang/invoke/LambdaMetafactory") && mth.equals("altMetafactory")) { int flags = cf.intAt(cpArgs[3]); int FLAG_SERIALIZABLE = 1 << 0; if ((flags & FLAG_SERIALIZABLE) != 0) { isSerializable = true; } } assert (enclosingLambdaCls!=null); int lambdaRefKind = cf.mhRefTypeAt(cpArgs[1]); String mthName = cf.methodNameAt(mrefIdx); String signature = cf.methodDescriptorAt(mrefIdx); String samDescriptor = cf.methodTypeDescriptorAt(cpArgs[2]); setBootstrapMethodInfo(enclosingLambdaCls, mthName, signature, idx, lambdaRefKind, samDescriptor, null, isSerializable ? BootstrapMethodInfo.BMType.SERIALIZABLE_LAMBDA_EXPRESSION : BootstrapMethodInfo.BMType.LAMBDA_EXPRESSION); } else { // For String Concatenation clsName = cls; if(!clsName.equals(JVMClassInfo.this.getName())) { enclosingLambdaCls = ClassLoaderInfo.getCurrentResolvedClassInfo(clsName); } else { enclosingLambdaCls = JVMClassInfo.this; } assert (enclosingLambdaCls!=null); String bmArg = cf.getBmArgString(cpArgs[0]); setBootstrapMethodInfo(enclosingLambdaCls, mth, parameters, idx, refKind, descriptor, bmArg, BootstrapMethodInfo.BMType.STRING_CONCATENATION); } }
When we run at this level, the output is like below :
====================================================== search started: 04/08/24, 4:30 am int mrefIdx = 259, cpArgs[1] = 258 int mrefIdx = 264, cpArgs[1] = 263 int mrefIdx = 267, cpArgs[1] = 266 int mrefIdx = 270, cpArgs[1] = 269 int mrefIdx = 273, cpArgs[1] = 272 int mrefIdx = 276, cpArgs[1] = 275 [WARNING] orphan NativePeer method: jdk.internal.misc.Unsafe.getUnsafe()Lsun/misc/Unsafe; int mrefIdx = 148, cpArgs[1] = 147 int mrefIdx = 157, cpArgs[1] = 156 int mrefIdx = 163, cpArgs[1] = 162 int mrefIdx = 166, cpArgs[1] = 165 int mrefIdx = 169, cpArgs[1] = 168 int mrefIdx = 63, cpArgs[1] = 62 int mrefIdx = 66, cpArgs[1] = 65 int mrefIdx = 69, cpArgs[1] = 68 int mrefIdx = 57, cpArgs[1] = 56 int mrefIdx = 14081, cpArgs[1] = 54 java.lang.ArrayIndexOutOfBoundsException: Index 14081 out of bounds for length 65 at gov.nasa.jpf.jvm.ClassFile.methodClassNameAt(ClassFile.java:313) at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setBootstrapMethod(JVMClassInfo.java:105) at gov.nasa.jpf.jvm.ClassFile.setBootstrapMethod(ClassFile.java:694) at gov.nasa.jpf.jvm.ClassFile.parseBootstrapMethodAttr(ClassFile.java:1528) at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.setClassAttribute(JVMClassInfo.java:85) at gov.nasa.jpf.jvm.ClassFile.setClassAttribute(ClassFile.java:671) at gov.nasa.jpf.jvm.ClassFile.parseClassAttributes(ClassFile.java:1411) at gov.nasa.jpf.jvm.ClassFile.parse(ClassFile.java:980) at gov.nasa.jpf.jvm.JVMClassInfo$Initializer.<init>(JVMClassInfo.java:53) at gov.nasa.jpf.jvm.JVMClassInfo.<init>(JVMClassInfo.java:744) at gov.nasa.jpf.jvm.JVMClassFileContainer$JVMClassFileMatch.createClassInfo(JVMClassFileContainer.java:59) at gov.nasa.jpf.jvm.JVMClassFileContainer$JVMClassFileMatch.createClassInfo(JVMClassFileContainer.java:34) at gov.nasa.jpf.vm.ClassLoaderInfo.getResolvedClassInfo(ClassLoaderInfo.java:356) at gov.nasa.jpf.vm.SystemClassLoaderInfo.getResolvedClassInfo(SystemClassLoaderInfo.java:148) at gov.nasa.jpf.vm.SystemClassLoaderInfo.loadClass(SystemClassLoaderInfo.java:183) at gov.nasa.jpf.vm.ClassInfo.resolveReferencedClass(ClassInfo.java:2485) at gov.nasa.jpf.vm.ThreadInfo.resolveReferencedClass(ThreadInfo.java:1243) at gov.nasa.jpf.jvm.bytecode.NEW.execute(NEW.java:55) at gov.nasa.jpf.vm.ThreadInfo.executeInstruction(ThreadInfo.java:1910) at gov.nasa.jpf.vm.ThreadInfo.executeTransition(ThreadInfo.java:1861) at gov.nasa.jpf.vm.SystemState.executeNextTransition(SystemState.java:765) at gov.nasa.jpf.vm.VM.forward(VM.java:1721) at gov.nasa.jpf.search.Search.forward(Search.java:937) at gov.nasa.jpf.search.DFSearch.search(DFSearch.java:79) at gov.nasa.jpf.JPF.run(JPF.java:613) at gov.nasa.jpf.util.test.TestJPF.createAndRunJPF(TestJPF.java:675) at gov.nasa.jpf.util.test.TestJPF.noPropertyViolation(TestJPF.java:806) at gov.nasa.jpf.util.test.TestJPF.verifyNoPropertyViolation(TestJPF.java:830) at java17.RecordFeatureTest.testRecordFieldsDirectly(RecordFeatureTest.java:15)
This strange output (from our printing statement) show that our issue is routed from
ClassFile.mhMethodRefIndexAt (int methodHandleInfoIdx)
and code for it is :public int mhMethodRefIndexAt (int methodHandleInfoIdx){ return u2(cpPos[methodHandleInfoIdx]+2); }
public final int u2(int dataIdx){ return ((data[dataIdx]&0xff) << 8) | (data[dataIdx+1]&0xff); }
Am I in right direction ?
And also please see the similarity between
mhMethodRefIndexAt(int methodHandleInfoIdx)
andmethodClassNameAt(int methodRefInfoIdx)
inClassFile.java
:public String methodClassNameAt(int methodRefInfoIdx){ return (String) cpValue[ u2(cpPos[methodRefInfoIdx]+1)]; }
public int mhMethodRefIndexAt(int methodHandleInfoIdx){ return u2(cpPos[methodHandleInfoIdx]+2); }
int[] cpPos; // cpPos[i] holds data start index for cp_entry i (0 is unused) Object[] cpValue; // cpValue[i] hold the String/Integer/Float/Double associated with corresponding cp_entries
From above, 14081 is returned from u2(cpPos[methodHandleInfoIdx]+2)
public int mhMethodRefIndexAt (int methodHandleInfoIdx){
return u2(cpPos[methodHandleInfoIdx]+2);
}
It seems like we should check what content cpPos[]
holds from where it is being initialized ?
One more thing, I printed some value which helped me a bit...
public int mhMethodRefIndexAt (int methodHandleInfoIdx){
System.out.println("MESSAGE : ClassFile.mhMethodRefIndexAt(methodHandleInfoIdx=" + methodHandleInfoIdx + ") called. returns (u2(cpPos[methodHandleInfoIdx]+2)) = " + u2(cpPos[methodHandleInfoIdx]+2));
return u2(cpPos[methodHandleInfoIdx]+2);
}
public String methodClassNameAt(int methodRefInfoIdx){
System.out.println("MESSAGE : ClassFile.methodClassNameAt(methodRefInfoIdx=" + methodRefInfoIdx + ") called. cpPos[].length=" + cpPos.length);
return (String) cpValue[ u2(cpPos[methodRefInfoIdx]+1)];
}
Outputs below result (here is relevant part) :
MESSAGE : ClassFile.mhMethodRefIndexAt(methodHandleInfoIdx=47) called. returns (u2(cpPos[methodHandleInfoIdx]+2)) = 48
MESSAGE : ClassFile.methodClassNameAt(methodRefInfoIdx=48) called. cpPos[].length=65
MESSAGE : ClassFile.mhMethodRefIndexAt(methodHandleInfoIdx=54) called. returns (u2(cpPos[methodHandleInfoIdx]+2)) = 14081
MESSAGE : ClassFile.methodClassNameAt(methodRefInfoIdx=14081) called. cpPos[].length=65
java.lang.ArrayIndexOutOfBoundsException: Index 14081 out of bounds for length 65
You are looking at the right data and code. JPF currently handles bootstrap methods for a couple of cases, in particular, when using altMetaFactory
. If you can find out how the encoding of the arguments differs for ObjectMethods.bootstrap
, then we can hopefully see where in the code the decoding goes wrong.
"If you can find out how the encoding of the arguments differs for ObjectMethods.bootstrap, then we can hopefully see where in the code the decoding goes wrong." ----->
From OpenJDK 17 Documentation, "Bootstrap method to generate the Object.equals(Object), Object.hashCode(), and Object.toString() methods, based on a description of the component names and accessor methods, for either invokedynamic call sites or dynamic constant pool entries. For more detail on the semantics of the generated methods see the specification of Record.equals(Object), Record.hashCode() and Record.toString()."
public static Object bootstrap(MethodHandles.Lookup lookup, String methodName, TypeDescriptor type,
Class<?> recordClass,
String names,
MethodHandle... getters) throws Throwable {
MethodType methodType;
if (type instanceof MethodType)
methodType = (MethodType) type;
else {
methodType = null;
if (!MethodHandle.class.equals(type))
throw new IllegalArgumentException(type.toString());
}
List<MethodHandle> getterList = List.of(getters);
MethodHandle handle = switch (methodName) {
case "equals" -> {
if (methodType != null && !methodType.equals(MethodType.methodType(boolean.class, recordClass, Object.class)))
throw new IllegalArgumentException("Bad method type: " + methodType);
yield makeEquals(recordClass, getterList);
}
case "hashCode" -> {
if (methodType != null && !methodType.equals(MethodType.methodType(int.class, recordClass)))
throw new IllegalArgumentException("Bad method type: " + methodType);
yield makeHashCode(recordClass, getterList);
}
case "toString" -> {
if (methodType != null && !methodType.equals(MethodType.methodType(String.class, recordClass)))
throw new IllegalArgumentException("Bad method type: " + methodType);
List<String> nameList = "".equals(names) ? List.of() : List.of(names.split(";"));
if (nameList.size() != getterList.size())
throw new IllegalArgumentException("Name list and accessor list do not match");
yield makeToString(recordClass, getterList, nameList);
}
default -> throw new IllegalArgumentException(methodName);
};
return methodType != null ? new ConstantCallSite(handle) : handle;
}
It is not somewhat you told like encoding of arguments ? Looks like it is generating some methods from predefined templates. For example, if I say "need a method to access a private variable", then this bootstrap method will be called to generate getter() method or something like that. Right ?
Interesting. The code does not seem to check the types of the arguments inside the list, only the size of it.
As you can see, this code generation is quite complex. The result is not typed (returned as an Object
rather than a CallSite
), and the complexity is inside the make...
methods.
Perhaps this can still work with JPF's interpretation approach, even though in the long term, generating valid CallSite
objects at load time would be preferable.
For now, try to find out what the valid constant pool index should be. Even if we cannot find out where the wrong index is computed, knowing the right one gives us a better idea of how the mechanism works in the case where everything is correct.
Please explain Constant Pool
. Index in Constant Pool
is fixed or depends on the compiler and also differs program-wise ?
And whose index do we have to look in Constant Pool
?
The constant pool provides a mechanism to store common constants in a program (such as constant values, type names, method names, etc.) in a single place, making the bytecode more space-efficient. See: https://blogs.oracle.com/javamagazine/post/java-class-file-constant-pool The indices in bytecode (or the constant pool itself) refer to specific elements in it, like pointers in software. If one of these indices is wrong, the wrong element (or a non-existent one) is referred to.
I tried to see the Bytecode for below example on regular OpenJDK17.
package org.example;
public class Main {
record Point(int x, int y){}
// Official documents suggest that fields of "record" are "private" and "final".
// So we are testing by direct access. It should fail here at compile time, but do not know why it works.
public static void main(String[] args) {
Point point = new Point(4, 5);
System.out.println(point.x);
}
}
ekla@Eklas-MacBook-Air CustomTestingProject % javap -v -cp build/classes/java/main/org/example Main
Warning: File build/classes/java/main/org/example/Main.class does not contain class Main
Classfile /Users/ekla/Java Learning/CustomTestingProject/build/classes/java/main/org/example/Main.class
Last modified 15-Aug-2024; size 693 bytes
SHA-256 checksum 73e492c12d0b1fdae02a3dea80a93af5d8a452464d021985f9ef50cc1d69b255
Compiled from "Main.java"
public class org.example.Main
minor version: 0
major version: 61
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #28 // org/example/Main
super_class: #2 // java/lang/Object
interfaces: 0, fields: 0, methods: 2, attributes: 3
Constant pool:
#1 = Methodref #2.#3 // java/lang/Object."<init>":()V
#2 = Class #4 // java/lang/Object
#3 = NameAndType #5:#6 // "<init>":()V
#4 = Utf8 java/lang/Object
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Class #8 // org/example/Main$Point
#8 = Utf8 org/example/Main$Point
#9 = Methodref #7.#10 // org/example/Main$Point."<init>":(II)V
#10 = NameAndType #5:#11 // "<init>":(II)V
#11 = Utf8 (II)V
#12 = Fieldref #13.#14 // java/lang/System.out:Ljava/io/PrintStream;
#13 = Class #15 // java/lang/System
#14 = NameAndType #16:#17 // out:Ljava/io/PrintStream;
#15 = Utf8 java/lang/System
#16 = Utf8 out
#17 = Utf8 Ljava/io/PrintStream;
#18 = Fieldref #7.#19 // org/example/Main$Point.x:I
#19 = NameAndType #20:#21 // x:I
#20 = Utf8 x
#21 = Utf8 I
#22 = Methodref #23.#24 // java/io/PrintStream.println:(I)V
#23 = Class #25 // java/io/PrintStream
#24 = NameAndType #26:#27 // println:(I)V
#25 = Utf8 java/io/PrintStream
#26 = Utf8 println
#27 = Utf8 (I)V
#28 = Class #29 // org/example/Main
#29 = Utf8 org/example/Main
#30 = Utf8 Code
#31 = Utf8 LineNumberTable
#32 = Utf8 LocalVariableTable
#33 = Utf8 this
#34 = Utf8 Lorg/example/Main;
#35 = Utf8 main
#36 = Utf8 ([Ljava/lang/String;)V
#37 = Utf8 args
#38 = Utf8 [Ljava/lang/String;
#39 = Utf8 point
#40 = Utf8 Lorg/example/Main$Point;
#41 = Utf8 SourceFile
#42 = Utf8 Main.java
#43 = Utf8 NestMembers
#44 = Utf8 InnerClasses
#45 = Utf8 Point
{
public org.example.Main();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 3: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lorg/example/Main;
public static void main(java.lang.String[]);
descriptor: ([Ljava/lang/String;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
0: new #7 // class org/example/Main$Point
3: dup
4: iconst_4
5: iconst_5
6: invokespecial #9 // Method org/example/Main$Point."<init>":(II)V
9: astore_1
10: getstatic #12 // Field java/lang/System.out:Ljava/io/PrintStream;
13: aload_1
14: getfield #18 // Field org/example/Main$Point.x:I
17: invokevirtual #22 // Method java/io/PrintStream.println:(I)V
20: return
LineNumberTable:
line 10: 0
line 11: 10
line 12: 20
LocalVariableTable:
Start Length Slot Name Signature
0 21 0 args [Ljava/lang/String;
10 11 1 point Lorg/example/Main$Point;
}
SourceFile: "Main.java"
NestMembers:
org/example/Main$Point
InnerClasses:
static final #45= #7 of #28; // Point=class org/example/Main$Point of class org/example/Main
ekla@Eklas-MacBook-Air CustomTestingProject %
Yes, the field is indeed private. You can access x
and y
, which are private, from Main, because Point is an inner class of Main. You can't access them from a different class.
We were talking about to see the bytecode for a valid case of record
feature. Because we want to see how the what index are the in the Constant Pool.
I am unable to understand which one goes wrong in case of JPF. As JPF uses additional code verifyNoPropertyViol....
.
The method verifyNoPropertyViolation
executes the part of the method inside the curly braces inside the JPF engine. (Unit tests are as such run by the host JVM, so this extra method is needed to pass control to JPF.)
The internals of this are not so important, as it's only needed for running unit tests in JPF and does not concern JPF's handling of bootstrap methods.
It would be useful if you could look into how the data structures from the constant pool are parsed, so we have an idea of where things go wrong. This is not dependent on how JPF takes control of a code section during unit testing.
You might, instead of using JPF, look into how the data structure relates to different entries "on paper" (using the output of javap -v
above); at some point, the correct values will deviate from the logged output that JPF produces.
I when we create a simple java program like below
public class RecordFeatureTest {
record Point(int x, int y){}
}
The bytecode for above program differs from the one written in our JPF
Bytecode for above simple program
ekla@Eklas-MacBook-Air RoughFolder % javap -v RecordFeatureTest\$Point
Classfile /Users/ekla/RoughFolder/RecordFeatureTest$Point.class
Last modified 05-Sep-2024; size 1283 bytes
SHA-256 checksum fe9dd488dbe8d6323ce52851036bd03ca7ea11cd73d152a846082e7c238ad456
Compiled from "RecordFeatureTest.java"
final class RecordFeatureTest$Point extends java.lang.Record
minor version: 0
major version: 61
flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: #8 // RecordFeatureTest$Point
super_class: #2 // java/lang/Record
interfaces: 0, fields: 2, methods: 6, attributes: 5
Constant pool:
#1 = Methodref #2.#3 // java/lang/Record."<init>":()V
#2 = Class #4 // java/lang/Record
#3 = NameAndType #5:#6 // "<init>":()V
#4 = Utf8 java/lang/Record
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Fieldref #8.#9 // RecordFeatureTest$Point.x:I
#8 = Class #10 // RecordFeatureTest$Point
#9 = NameAndType #11:#12 // x:I
#10 = Utf8 RecordFeatureTest$Point
#11 = Utf8 x
#12 = Utf8 I
#13 = Fieldref #8.#14 // RecordFeatureTest$Point.y:I
#14 = NameAndType #15:#12 // y:I
#15 = Utf8 y
#16 = InvokeDynamic #0:#17 // #0:toString:(LRecordFeatureTest$Point;)Ljava/lang/String;
#17 = NameAndType #18:#19 // toString:(LRecordFeatureTest$Point;)Ljava/lang/String;
#18 = Utf8 toString
#19 = Utf8 (LRecordFeatureTest$Point;)Ljava/lang/String;
#20 = InvokeDynamic #0:#21 // #0:hashCode:(LRecordFeatureTest$Point;)I
#21 = NameAndType #22:#23 // hashCode:(LRecordFeatureTest$Point;)I
#22 = Utf8 hashCode
#23 = Utf8 (LRecordFeatureTest$Point;)I
#24 = InvokeDynamic #0:#25 // #0:equals:(LRecordFeatureTest$Point;Ljava/lang/Object;)Z
#25 = NameAndType #26:#27 // equals:(LRecordFeatureTest$Point;Ljava/lang/Object;)Z
#26 = Utf8 equals
#27 = Utf8 (LRecordFeatureTest$Point;Ljava/lang/Object;)Z
#28 = Utf8 (II)V
#29 = Utf8 Code
#30 = Utf8 LineNumberTable
#31 = Utf8 MethodParameters
#32 = Utf8 ()Ljava/lang/String;
#33 = Utf8 ()I
#34 = Utf8 (Ljava/lang/Object;)Z
#35 = Utf8 SourceFile
#36 = Utf8 RecordFeatureTest.java
#37 = Utf8 NestHost
#38 = Class #39 // RecordFeatureTest
#39 = Utf8 RecordFeatureTest
#40 = Utf8 Record
#41 = Utf8 BootstrapMethods
#42 = MethodHandle 6:#43 // REF_invokeStatic java/lang/runtime/ObjectMethods.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#43 = Methodref #44.#45 // java/lang/runtime/ObjectMethods.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#44 = Class #46 // java/lang/runtime/ObjectMethods
#45 = NameAndType #47:#48 // bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#46 = Utf8 java/lang/runtime/ObjectMethods
#47 = Utf8 bootstrap
#48 = Utf8 (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#49 = String #50 // x;y
#50 = Utf8 x;y
#51 = MethodHandle 1:#7 // REF_getField RecordFeatureTest$Point.x:I
#52 = MethodHandle 1:#13 // REF_getField RecordFeatureTest$Point.y:I
#53 = Utf8 InnerClasses
#54 = Utf8 Point
#55 = Class #56 // java/lang/invoke/MethodHandles$Lookup
#56 = Utf8 java/lang/invoke/MethodHandles$Lookup
#57 = Class #58 // java/lang/invoke/MethodHandles
#58 = Utf8 java/lang/invoke/MethodHandles
#59 = Utf8 Lookup
{
RecordFeatureTest$Point(int, int);
descriptor: (II)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
0: aload_0
1: invokespecial #1 // Method java/lang/Record."<init>":()V
4: aload_0
5: iload_1
6: putfield #7 // Field x:I
9: aload_0
10: iload_2
11: putfield #13 // Field y:I
14: return
LineNumberTable:
line 2: 0
MethodParameters:
Name Flags
x
y
public final java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokedynamic #16, 0 // InvokeDynamic #0:toString:(LRecordFeatureTest$Point;)Ljava/lang/String;
6: areturn
LineNumberTable:
line 2: 0
public final int hashCode();
descriptor: ()I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokedynamic #20, 0 // InvokeDynamic #0:hashCode:(LRecordFeatureTest$Point;)I
6: ireturn
LineNumberTable:
line 2: 0
public final boolean equals(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=2, locals=2, args_size=2
0: aload_0
1: aload_1
2: invokedynamic #24, 0 // InvokeDynamic #0:equals:(LRecordFeatureTest$Point;Ljava/lang/Object;)Z
7: ireturn
LineNumberTable:
line 2: 0
public int x();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #7 // Field x:I
4: ireturn
LineNumberTable:
line 2: 0
public int y();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #13 // Field y:I
4: ireturn
LineNumberTable:
line 2: 0
}
SourceFile: "RecordFeatureTest.java"
NestHost: class RecordFeatureTest
Record:
int x;
descriptor: I
int y;
descriptor: I
BootstrapMethods:
0: #42 REF_invokeStatic java/lang/runtime/ObjectMethods.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
Method arguments:
#8 RecordFeatureTest$Point
#49 x;y
#51 REF_getField RecordFeatureTest$Point.x:I
#52 REF_getField RecordFeatureTest$Point.y:I
InnerClasses:
static final #54= #8 of #38; // Point=class RecordFeatureTest$Point of class RecordFeatureTest
public static final #59= #55 of #57; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles
ekla@Eklas-MacBook-Air RoughFolder % java -version
openjdk version "17.0.10" 2024-01-16
OpenJDK Runtime Environment (build 17.0.10+11)
OpenJDK 64-Bit Server VM (build 17.0.10+11, mixed mode, sharing)
ByteCode for JPF record
ekla@Eklas-MacBook-Air java17 % javap -v RecordFeatureTest\$Point
Warning: File ./RecordFeatureTest$Point.class does not contain class RecordFeatureTest$Point
Classfile /Users/ekla/GSOC/JPFjava17/jpf-core/build/tests/java17/RecordFeatureTest$Point.class
Last modified 04-Sep-2024; size 1544 bytes
SHA-256 checksum f5e6bcbb1967b31aebab060eef3f89fad6f1470a60e00c683d7e8e26b2c57611
Compiled from "RecordFeatureTest.java"
final class java17.RecordFeatureTest$Point extends java.lang.Record
minor version: 0
major version: 61
flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: #8 // java17/RecordFeatureTest$Point
super_class: #2 // java/lang/Record
interfaces: 0, fields: 2, methods: 6, attributes: 5
Constant pool:
#1 = Methodref #2.#3 // java/lang/Record."<init>":()V
#2 = Class #4 // java/lang/Record
#3 = NameAndType #5:#6 // "<init>":()V
#4 = Utf8 java/lang/Record
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Fieldref #8.#9 // java17/RecordFeatureTest$Point.x:I
#8 = Class #10 // java17/RecordFeatureTest$Point
#9 = NameAndType #11:#12 // x:I
#10 = Utf8 java17/RecordFeatureTest$Point
#11 = Utf8 x
#12 = Utf8 I
#13 = Fieldref #8.#14 // java17/RecordFeatureTest$Point.y:I
#14 = NameAndType #15:#12 // y:I
#15 = Utf8 y
#16 = InvokeDynamic #0:#17 // #0:toString:(Ljava17/RecordFeatureTest$Point;)Ljava/lang/String;
#17 = NameAndType #18:#19 // toString:(Ljava17/RecordFeatureTest$Point;)Ljava/lang/String;
#18 = Utf8 toString
#19 = Utf8 (Ljava17/RecordFeatureTest$Point;)Ljava/lang/String;
#20 = InvokeDynamic #0:#21 // #0:hashCode:(Ljava17/RecordFeatureTest$Point;)I
#21 = NameAndType #22:#23 // hashCode:(Ljava17/RecordFeatureTest$Point;)I
#22 = Utf8 hashCode
#23 = Utf8 (Ljava17/RecordFeatureTest$Point;)I
#24 = InvokeDynamic #0:#25 // #0:equals:(Ljava17/RecordFeatureTest$Point;Ljava/lang/Object;)Z
#25 = NameAndType #26:#27 // equals:(Ljava17/RecordFeatureTest$Point;Ljava/lang/Object;)Z
#26 = Utf8 equals
#27 = Utf8 (Ljava17/RecordFeatureTest$Point;Ljava/lang/Object;)Z
#28 = Utf8 (II)V
#29 = Utf8 Code
#30 = Utf8 LineNumberTable
#31 = Utf8 LocalVariableTable
#32 = Utf8 this
#33 = Utf8 Ljava17/RecordFeatureTest$Point;
#34 = Utf8 MethodParameters
#35 = Utf8 ()Ljava/lang/String;
#36 = Utf8 ()I
#37 = Utf8 (Ljava/lang/Object;)Z
#38 = Utf8 o
#39 = Utf8 Ljava/lang/Object;
#40 = Utf8 SourceFile
#41 = Utf8 RecordFeatureTest.java
#42 = Utf8 NestHost
#43 = Class #44 // java17/RecordFeatureTest
#44 = Utf8 java17/RecordFeatureTest
#45 = Utf8 Record
#46 = Utf8 BootstrapMethods
#47 = MethodHandle 6:#48 // REF_invokeStatic java/lang/runtime/ObjectMethods.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#48 = Methodref #49.#50 // java/lang/runtime/ObjectMethods.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#49 = Class #51 // java/lang/runtime/ObjectMethods
#50 = NameAndType #52:#53 // bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#51 = Utf8 java/lang/runtime/ObjectMethods
#52 = Utf8 bootstrap
#53 = Utf8 (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
#54 = String #55 // x;y
#55 = Utf8 x;y
#56 = MethodHandle 1:#7 // REF_getField java17/RecordFeatureTest$Point.x:I
#57 = MethodHandle 1:#13 // REF_getField java17/RecordFeatureTest$Point.y:I
#58 = Utf8 InnerClasses
#59 = Utf8 Point
#60 = Class #61 // java/lang/invoke/MethodHandles$Lookup
#61 = Utf8 java/lang/invoke/MethodHandles$Lookup
#62 = Class #63 // java/lang/invoke/MethodHandles
#63 = Utf8 java/lang/invoke/MethodHandles
#64 = Utf8 Lookup
{
java17.RecordFeatureTest$Point(int, int);
descriptor: (II)V
flags: (0x0000)
Code:
stack=2, locals=3, args_size=3
0: aload_0
1: invokespecial #1 // Method java/lang/Record."<init>":()V
4: aload_0
5: iload_1
6: putfield #7 // Field x:I
9: aload_0
10: iload_2
11: putfield #13 // Field y:I
14: return
LineNumberTable:
line 8: 0
LocalVariableTable:
Start Length Slot Name Signature
0 15 0 this Ljava17/RecordFeatureTest$Point;
0 15 1 x I
0 15 2 y I
MethodParameters:
Name Flags
x
y
public final java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokedynamic #16, 0 // InvokeDynamic #0:toString:(Ljava17/RecordFeatureTest$Point;)Ljava/lang/String;
6: areturn
LineNumberTable:
line 8: 0
LocalVariableTable:
Start Length Slot Name Signature
0 7 0 this Ljava17/RecordFeatureTest$Point;
public final int hashCode();
descriptor: ()I
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokedynamic #20, 0 // InvokeDynamic #0:hashCode:(Ljava17/RecordFeatureTest$Point;)I
6: ireturn
LineNumberTable:
line 8: 0
LocalVariableTable:
Start Length Slot Name Signature
0 7 0 this Ljava17/RecordFeatureTest$Point;
public final boolean equals(java.lang.Object);
descriptor: (Ljava/lang/Object;)Z
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=2, locals=2, args_size=2
0: aload_0
1: aload_1
2: invokedynamic #24, 0 // InvokeDynamic #0:equals:(Ljava17/RecordFeatureTest$Point;Ljava/lang/Object;)Z
7: ireturn
LineNumberTable:
line 8: 0
LocalVariableTable:
Start Length Slot Name Signature
0 8 0 this Ljava17/RecordFeatureTest$Point;
0 8 1 o Ljava/lang/Object;
public int x();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #7 // Field x:I
4: ireturn
LineNumberTable:
line 8: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Ljava17/RecordFeatureTest$Point;
public int y();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: getfield #13 // Field y:I
4: ireturn
LineNumberTable:
line 8: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Ljava17/RecordFeatureTest$Point;
}
SourceFile: "RecordFeatureTest.java"
NestHost: class java17/RecordFeatureTest
Record:
int x;
descriptor: I
int y;
descriptor: I
BootstrapMethods:
0: #47 REF_invokeStatic java/lang/runtime/ObjectMethods.bootstrap:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/TypeDescriptor;Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/invoke/MethodHandle;)Ljava/lang/Object;
Method arguments:
#8 java17/RecordFeatureTest$Point
#54 x;y
#56 REF_getField java17/RecordFeatureTest$Point.x:I
#57 REF_getField java17/RecordFeatureTest$Point.y:I
InnerClasses:
static final #59= #8 of #43; // Point=class java17/RecordFeatureTest$Point of class java17/RecordFeatureTest
public static final #64= #60 of #62; // Lookup=class java/lang/invoke/MethodHandles$Lookup of class java/lang/invoke/MethodHandles
ekla@Eklas-MacBook-Air java17 % java -version
openjdk version "17.0.10" 2024-01-16
OpenJDK Runtime Environment (build 17.0.10+11)
OpenJDK 64-Bit Server VM (build 17.0.10+11, mixed mode, sharing)
My Question is, both the programs is compiled under same compiler ? If yes, how can be different bytecode for same record class(subclass) ?
Should I send you more detailed explanation of the above comment . (Please check email regarding today's meeting?)
Probably you are using a slightly different version of the compiler than what gradle uses. Your own Java environment does two things: 1. It runs Gradle. 2. It runs JPF when you run bin/jpf
. The compilation of JPF itself is handled by Gradle, which downloads a Java compiler of its choice (adhering to given version restrictions in the configuration). It is important that these two Java environments match closely, so the resulting JPF application runs successfully in your JVM. However, small deviations are possible and often (as in this case) benign.
So, now I should go for debugging the bootstrap method along with a proper diagram comfortably?
Yes, please do that; use the bytecode that Gradle produces (i.e., when you build JPF and run the tests normally).
In the diagram you suggested, it is difficult to show the behaviour of the methods like manipulation of the parameters within the method. Because sometimes it is more important to show the behaviour proceeding the flow of calls.
How do you do ?
You want to focus on one aspect in the diagram, and I recommend you focus on the data dependencies. The control flow is simpler, and, from what we can see, JPF handles the instructions themselves correctly, but not the data.
@cyrille-artho @pparizek
This issue is to track the
record
feature ofjava-17
onJPF
.Here is the
Test
to testrecord
:All of the above
Tests
passes (currently on OpenJDK-17).Question 1 : How can we access the 'private
field
? Question 2 : TheseTests
passed on underlying JVM. DoverifyNoPropertyViolation
will make it run onJPF
?