1Initial: class art.Test1981$Transform[FOO: value of <FOO FIELD>, BAR: value of <BAR FIELD>] 2Reading field FOO using (ID: 0) MethodHandle()Object = (ID: 1) value of <FOO FIELD> 3Reading field FOO using (ID: 2) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 1) value of <FOO FIELD> 4Reading field BAR using (ID: 3) MethodHandle()Object = (ID: 4) value of <BAR FIELD> 5Reading field BAR using (ID: 5) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 4) value of <BAR FIELD> 6Redefining Transform class 7Post redefinition : class art.Test1981$Transform[FOO: value of <FOO FIELD>, BAR: value of <BAR FIELD>, BAZ: null] 8Reading field FOO using (ID: 0) MethodHandle()Object = (ID: 1) value of <FOO FIELD> 9Reading field FOO using (ID: 2) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 1) value of <FOO FIELD> 10Reading field BAR using (ID: 3) MethodHandle()Object = (ID: 4) value of <BAR FIELD> 11Reading field BAR using (ID: 5) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 4) value of <BAR FIELD> 12Reading new field BAZ using (ID: 6) MethodHandle()Object = (ID: 7) <NULL> 13Reading new field BAZ using (ID: 8) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 7) <NULL> 14Reading new field FOO using (ID: 9) MethodHandle()Object = (ID: 1) value of <FOO FIELD> 15Reading new field FOO using (ID: 10) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 1) value of <FOO FIELD> 16Reading new field BAR using (ID: 11) MethodHandle()Object = (ID: 4) value of <BAR FIELD> 17Reading new field BAR using (ID: 12) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 4) value of <BAR FIELD> 18Setting BAZ to (ID: 13) foo with new mh. 19Post set with new mh: class art.Test1981$Transform[FOO: value of <FOO FIELD>, BAR: value of <BAR FIELD>, BAZ: foo] 20Setting FOO to (ID: 14) class art.Test1981$Transform with old mh. 21Post set with old mh: class art.Test1981$Transform[FOO: class art.Test1981$Transform, BAR: value of <BAR FIELD>, BAZ: foo] 22Setting FOO to '(ID: 15) new_value object' with old varhandle. 23Post set with new varhandle: class art.Test1981$Transform[FOO: new_value object, BAR: value of <BAR FIELD>, BAZ: foo] 24Setting BAZ to 'bar' with new varhandle. 25Post set with old varhandle: class art.Test1981$Transform[FOO: new_value object, BAR: value of <BAR FIELD>, BAZ: bar] 26Using mh to call new private method. 27Post reinit with mh: class art.Test1981$Transform[FOO: new_value object, BAR: value of <BAR FIELD>, BAZ: 42] 28Reading field FOO using (ID: 0) MethodHandle()Object = (ID: 15) new_value object 29Reading field FOO using (ID: 2) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 15) new_value object 30Reading field BAR using (ID: 3) MethodHandle()Object = (ID: 4) value of <BAR FIELD> 31Reading field BAR using (ID: 5) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 4) value of <BAR FIELD> 32Reading new field BAZ using (ID: 6) MethodHandle()Object = (ID: 16) 42 33Reading new field BAZ using (ID: 8) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 16) 42 34Reading new field FOO using (ID: 9) MethodHandle()Object = (ID: 15) new_value object 35Reading new field FOO using (ID: 10) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 15) new_value object 36Reading new field BAR using (ID: 11) MethodHandle()Object = (ID: 4) value of <BAR FIELD> 37Reading new field BAR using (ID: 12) java.lang.invoke.FieldVarHandle()->java.lang.Object = (ID: 4) value of <BAR FIELD> 38