Add dex 38 support to dexmerger
Including invoke-polymorphic and invoke-custom instructions,
and call site and method handle data items.
Test: manual
Bug: 36641082
Change-Id: Ie8ffde9eb52259b7392bd0544c86b1e05fdd020a
diff --git a/dx/src/com/android/dex/CallSiteId.java b/dx/src/com/android/dex/CallSiteId.java
new file mode 100644
index 0000000..6c9a623
--- /dev/null
+++ b/dx/src/com/android/dex/CallSiteId.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dex;
+
+import com.android.dex.Dex.Section;
+import com.android.dex.util.Unsigned;
+
+/**
+ * A call_site_id_item: https://source.android.com/devices/tech/dalvik/dex-format#call-site-id-item
+ */
+public class CallSiteId implements Comparable<CallSiteId> {
+
+ private final Dex dex;
+ private final int offset;
+
+ public CallSiteId(Dex dex, int offset) {
+ this.dex = dex;
+ this.offset = offset;
+ }
+
+ @Override
+ public int compareTo(CallSiteId o) {
+ return Unsigned.compare(offset, o.offset);
+ }
+
+ public int getCallSiteOffset() {
+ return offset;
+ }
+
+ public void writeTo(Section out) {
+ out.writeInt(offset);
+ }
+
+ @Override
+ public String toString() {
+ if (dex == null) {
+ return String.valueOf(offset);
+ }
+ return dex.protoIds().get(offset).toString();
+ }
+}
diff --git a/dx/src/com/android/dex/Dex.java b/dx/src/com/android/dex/Dex.java
index 16293262..5d58171 100644
--- a/dx/src/com/android/dex/Dex.java
+++ b/dx/src/com/android/dex/Dex.java
@@ -18,6 +18,7 @@
import com.android.dex.Code.CatchHandler;
import com.android.dex.Code.Try;
+import com.android.dex.MethodHandle.MethodHandleType;
import com.android.dex.util.ByteInput;
import com.android.dex.util.ByteOutput;
import com.android.dex.util.FileUtils;
@@ -352,6 +353,7 @@
return readShort() & 0xffff;
}
+ @Override
public byte readByte() {
return data.get();
}
@@ -439,6 +441,19 @@
return new ProtoId(Dex.this, shortyIndex, returnTypeIndex, parametersOffset);
}
+ public CallSiteId readCallSiteId() {
+ int offset = readInt();
+ return new CallSiteId(Dex.this, offset);
+ }
+
+ public MethodHandle readMethodHandle() {
+ MethodHandleType methodHandleType = MethodHandleType.fromValue(readUnsignedShort());
+ int unused1 = readUnsignedShort();
+ int fieldOrMethodId = readUnsignedShort();
+ int unused2 = readUnsignedShort();
+ return new MethodHandle(Dex.this, methodHandleType, unused1, fieldOrMethodId, unused2);
+ }
+
public ClassDef readClassDef() {
int offset = getPosition();
int type = readInt();
@@ -625,6 +640,7 @@
this.data.put(bytes);
}
+ @Override
public void writeByte(int b) {
data.put((byte) b);
}
@@ -782,6 +798,7 @@
}
private final class ClassDefIterable implements Iterable<ClassDef> {
+ @Override
public Iterator<ClassDef> iterator() {
return !tableOfContents.classDefs.exists()
? Collections.<ClassDef>emptySet().iterator()
diff --git a/dx/src/com/android/dex/EncodedValueReader.java b/dx/src/com/android/dex/EncodedValueReader.java
index 6f60538..24dc0e3 100644
--- a/dx/src/com/android/dex/EncodedValueReader.java
+++ b/dx/src/com/android/dex/EncodedValueReader.java
@@ -29,6 +29,8 @@
public static final int ENCODED_LONG = 0x06;
public static final int ENCODED_FLOAT = 0x10;
public static final int ENCODED_DOUBLE = 0x11;
+ public static final int ENCODED_METHOD_TYPE = 0x15;
+ public static final int ENCODED_METHOD_HANDLE = 0x16;
public static final int ENCODED_STRING = 0x17;
public static final int ENCODED_TYPE = 0x18;
public static final int ENCODED_FIELD = 0x19;
@@ -173,6 +175,18 @@
return Double.longBitsToDouble(EncodedValueCodec.readUnsignedLong(in, arg, true));
}
+ public int readMethodType() {
+ checkType(ENCODED_METHOD_TYPE);
+ type = MUST_READ;
+ return EncodedValueCodec.readUnsignedInt(in, arg, false);
+ }
+
+ public int readMethodHandle() {
+ checkType(ENCODED_METHOD_HANDLE);
+ type = MUST_READ;
+ return EncodedValueCodec.readUnsignedInt(in, arg, false);
+ }
+
public int readString() {
checkType(ENCODED_STRING);
type = MUST_READ;
@@ -241,6 +255,12 @@
case ENCODED_DOUBLE:
readDouble();
break;
+ case ENCODED_METHOD_TYPE:
+ readMethodType();
+ break;
+ case ENCODED_METHOD_HANDLE:
+ readMethodHandle();
+ break;
case ENCODED_STRING:
readString();
break;
diff --git a/dx/src/com/android/dex/MethodHandle.java b/dx/src/com/android/dex/MethodHandle.java
new file mode 100644
index 0000000..9772f54
--- /dev/null
+++ b/dx/src/com/android/dex/MethodHandle.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dex;
+
+import com.android.dex.Dex.Section;
+import com.android.dex.util.Unsigned;
+
+/**
+ * A method_handle_item:
+ * https://source.android.com/devices/tech/dalvik/dex-format#method-handle-item
+ */
+public class MethodHandle implements Comparable<MethodHandle> {
+
+ /**
+ * A method handle type code:
+ * https://source.android.com/devices/tech/dalvik/dex-format#method-handle-type-codes
+ */
+ public enum MethodHandleType {
+ METHOD_HANDLE_TYPE_STATIC_PUT(0x00),
+ METHOD_HANDLE_TYPE_STATIC_GET(0x01),
+ METHOD_HANDLE_TYPE_INSTANCE_PUT(0x02),
+ METHOD_HANDLE_TYPE_INSTANCE_GET(0x03),
+ METHOD_HANDLE_TYPE_INVOKE_STATIC(0x04),
+ METHOD_HANDLE_TYPE_INVOKE_INSTANCE(0x05),
+ METHOD_HANDLE_TYPE_INVOKE_DIRECT(0x06),
+ METHOD_HANDLE_TYPE_INVOKE_CONSTRUCTOR(0x07),
+ METHOD_HANDLE_TYPE_INVOKE_INTERFACE(0x08);
+
+ private final int value;
+
+ MethodHandleType(int value) {
+ this.value = value;
+ }
+
+ static MethodHandleType fromValue(int value) {
+ for (MethodHandleType methodHandleType : values()) {
+ if (methodHandleType.value == value) {
+ return methodHandleType;
+ }
+ }
+ throw new IllegalArgumentException(String.valueOf(value));
+ }
+
+ public boolean isField() {
+ switch (this) {
+ case METHOD_HANDLE_TYPE_STATIC_PUT:
+ case METHOD_HANDLE_TYPE_STATIC_GET:
+ case METHOD_HANDLE_TYPE_INSTANCE_PUT:
+ case METHOD_HANDLE_TYPE_INSTANCE_GET:
+ return true;
+ default:
+ return false;
+ }
+ }
+ }
+
+ private final Dex dex;
+ private final MethodHandleType methodHandleType;
+ private final int unused1;
+ private final int fieldOrMethodId;
+ private final int unused2;
+
+ public MethodHandle(
+ Dex dex,
+ MethodHandleType methodHandleType,
+ int unused1,
+ int fieldOrMethodId,
+ int unused2) {
+ this.dex = dex;
+ this.methodHandleType = methodHandleType;
+ this.unused1 = unused1;
+ this.fieldOrMethodId = fieldOrMethodId;
+ this.unused2 = unused2;
+ }
+
+ @Override
+ public int compareTo(MethodHandle o) {
+ if (methodHandleType != o.methodHandleType) {
+ return methodHandleType.compareTo(o.methodHandleType);
+ }
+ return Unsigned.compare(fieldOrMethodId, o.fieldOrMethodId);
+ }
+
+ public MethodHandleType getMethodHandleType() {
+ return methodHandleType;
+ }
+
+ public int getUnused1() {
+ return unused1;
+ }
+
+ public int getFieldOrMethodId() {
+ return fieldOrMethodId;
+ }
+
+ public int getUnused2() {
+ return unused2;
+ }
+
+ public void writeTo(Section out) {
+ out.writeUnsignedShort(methodHandleType.value);
+ out.writeUnsignedShort(unused1);
+ out.writeUnsignedShort(fieldOrMethodId);
+ out.writeUnsignedShort(unused2);
+ }
+
+ @Override
+ public String toString() {
+ if (dex == null) {
+ return methodHandleType + " " + fieldOrMethodId;
+ }
+ return methodHandleType
+ + " "
+ + (methodHandleType.isField()
+ ? dex.fieldIds().get(fieldOrMethodId)
+ : dex.methodIds().get(fieldOrMethodId));
+ }
+}
diff --git a/dx/src/com/android/dex/SizeOf.java b/dx/src/com/android/dex/SizeOf.java
index 65fab56..4795250 100644
--- a/dx/src/com/android/dex/SizeOf.java
+++ b/dx/src/com/android/dex/SizeOf.java
@@ -107,4 +107,17 @@
* handler_off ushort
*/
public static final int TRY_ITEM = UINT + USHORT + USHORT;
+
+ /**
+ * call_site_off uint
+ */
+ public static final int CALL_SITE_ID_ITEM = UINT;
+
+ /**
+ * method_handle_type ushort
+ * unused ushort
+ * field_or_method_id ushort
+ * unused ushort
+ */
+ public static final int METHOD_HANDLE_ITEM = USHORT + USHORT + USHORT + USHORT;
}
diff --git a/dx/src/com/android/dx/io/CodeReader.java b/dx/src/com/android/dx/io/CodeReader.java
index 5fd5cf6..52a3c68 100644
--- a/dx/src/com/android/dx/io/CodeReader.java
+++ b/dx/src/com/android/dx/io/CodeReader.java
@@ -28,6 +28,8 @@
private Visitor typeVisitor = null;
private Visitor fieldVisitor = null;
private Visitor methodVisitor = null;
+ private Visitor methodAndProtoVisitor = null;
+ private Visitor callSiteVisitor = null;
/**
* Sets {@code visitor} as the visitor for all instructions.
@@ -38,6 +40,8 @@
typeVisitor = visitor;
fieldVisitor = visitor;
methodVisitor = visitor;
+ methodAndProtoVisitor = visitor;
+ callSiteVisitor = visitor;
}
/**
@@ -76,6 +80,16 @@
methodVisitor = visitor;
}
+ /** Sets {@code visitor} as the visitor for all method and proto instructions. */
+ public void setMethodAndProtoVisitor(Visitor visitor) {
+ methodAndProtoVisitor = visitor;
+ }
+
+ /** Sets {@code visitor} as the visitor for all call site instructions. */
+ public void setCallSiteVisitor(Visitor visitor) {
+ callSiteVisitor = visitor;
+ }
+
public void visitAll(DecodedInstruction[] decodedInstructions)
throws DexException {
int size = decodedInstructions.length;
@@ -100,10 +114,12 @@
Visitor visitor = null;
switch (OpcodeInfo.getIndexType(one.getOpcode())) {
- case STRING_REF: visitor = stringVisitor; break;
- case TYPE_REF: visitor = typeVisitor; break;
- case FIELD_REF: visitor = fieldVisitor; break;
- case METHOD_REF: visitor = methodVisitor; break;
+ case STRING_REF: visitor = stringVisitor; break;
+ case TYPE_REF: visitor = typeVisitor; break;
+ case FIELD_REF: visitor = fieldVisitor; break;
+ case METHOD_REF: visitor = methodVisitor; break;
+ case METHOD_AND_PROTO_REF: visitor = methodAndProtoVisitor; break;
+ case CALL_SITE_REF: visitor = callSiteVisitor; break;
}
if (visitor == null) {
diff --git a/dx/src/com/android/dx/io/instructions/DecodedInstruction.java b/dx/src/com/android/dx/io/instructions/DecodedInstruction.java
index e5b7073..921001a 100644
--- a/dx/src/com/android/dx/io/instructions/DecodedInstruction.java
+++ b/dx/src/com/android/dx/io/instructions/DecodedInstruction.java
@@ -475,4 +475,14 @@
* with the given one.
*/
public abstract DecodedInstruction withIndex(int newIndex);
+
+ /** Update the instruction with a new 45cc or 4rcc proto index. */
+ public DecodedInstruction withProtoIndex(int newIndex, int newProtoIndex) {
+ throw new IllegalStateException(getClass().toString());
+ }
+
+ /** Returns a 45cc or 4rcc proto index. */
+ public short getProtoIndex() {
+ throw new IllegalStateException(getClass().toString());
+ }
}
diff --git a/dx/src/com/android/dx/io/instructions/InstructionCodec.java b/dx/src/com/android/dx/io/instructions/InstructionCodec.java
index 9c30575..a8fbf39 100644
--- a/dx/src/com/android/dx/io/instructions/InstructionCodec.java
+++ b/dx/src/com/android/dx/io/instructions/InstructionCodec.java
@@ -22,6 +22,10 @@
import com.android.dx.io.Opcodes;
import com.android.dx.util.Hex;
import java.io.EOFException;
+import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Deque;
/**
* Representation of an instruction format, which knows how to decode into
@@ -477,6 +481,7 @@
in.setBaseAddress(target, baseAddress);
break;
}
+ default: // fall out
}
return new OneRegisterDecodedInstruction(
@@ -607,22 +612,71 @@
FORMAT_45CC() {
@Override public DecodedInstruction decode(int opcodeUnit,
CodeInput in) throws EOFException {
- return decodeRegisterList(this, opcodeUnit, in);
+ int opcode = byte0(opcodeUnit);
+ if (opcode != Opcodes.INVOKE_POLYMORPHIC) {
+ // 45cc isn't currently used for anything other than invoke-polymorphic.
+ // If that changes, add a more general DecodedInstruction for this format.
+ throw new UnsupportedOperationException(String.valueOf(opcode));
+ }
+ int g = nibble2(opcodeUnit);
+ int registerCount = nibble3(opcodeUnit);
+ int methodIndex = in.read();
+ int cdef = in.read();
+ int c = nibble0(cdef);
+ int d = nibble1(cdef);
+ int e = nibble2(cdef);
+ int f = nibble3(cdef);
+ int protoIndex = in.read();
+ IndexType indexType = OpcodeInfo.getIndexType(opcode);
+
+ if (registerCount < 1 || registerCount > 5) {
+ throw new DexException("bogus registerCount: " + Hex.uNibble(registerCount));
+ }
+ int[] registers = {c, d, e, f, g};
+ registers = Arrays.copyOfRange(registers, 0, registerCount);
+
+ return new InvokePolymorphicDecodedInstruction(
+ this, opcode, methodIndex, indexType, protoIndex, registers);
}
@Override public void encode(DecodedInstruction insn, CodeOutput out) {
- encodeRegisterList(insn, out);
+ InvokePolymorphicDecodedInstruction polyInsn =
+ (InvokePolymorphicDecodedInstruction) insn;
+ out.write(codeUnit(polyInsn.getOpcode(),
+ makeByte(polyInsn.getG(), polyInsn.getRegisterCount())),
+ polyInsn.getIndexUnit(),
+ codeUnit(polyInsn.getC(), polyInsn.getD(), polyInsn.getE(), polyInsn.getF()),
+ polyInsn.getProtoIndex());
+
}
},
FORMAT_4RCC() {
@Override public DecodedInstruction decode(int opcodeUnit,
CodeInput in) throws EOFException {
- return decodeRegisterList(this, opcodeUnit, in);
+ int opcode = byte0(opcodeUnit);
+ if (opcode != Opcodes.INVOKE_POLYMORPHIC_RANGE) {
+ // 4rcc isn't currently used for anything other than invoke-polymorphic.
+ // If that changes, add a more general DecodedInstruction for this format.
+ throw new UnsupportedOperationException(String.valueOf(opcode));
+ }
+ int registerCount = byte1(opcodeUnit);
+ int methodIndex = in.read();
+ int c = in.read();
+ int protoIndex = in.read();
+ IndexType indexType = OpcodeInfo.getIndexType(opcode);
+ return new InvokePolymorphicRangeDecodedInstruction(
+ this, opcode, methodIndex, indexType, c, registerCount, protoIndex);
+
}
@Override public void encode(DecodedInstruction insn, CodeOutput out) {
- encodeRegisterList(insn, out);
+ out.write(
+ codeUnit(insn.getOpcode(), insn.getRegisterCount()),
+ insn.getIndexUnit(),
+ insn.getCUnit(),
+ insn.getProtoIndex());
+
}
},
@@ -742,6 +796,7 @@
return new FillArrayDataPayloadDecodedInstruction(
this, opcodeUnit, array);
}
+ default: // fall out
}
throw new DexException("bogus element_width: "
@@ -831,6 +886,7 @@
format, opcode, index, indexType,
0, 0L,
a, b, c, d, e);
+ default: // fall out
}
throw new DexException("bogus registerCount: "
diff --git a/dx/src/com/android/dx/io/instructions/InvokePolymorphicDecodedInstruction.java b/dx/src/com/android/dx/io/instructions/InvokePolymorphicDecodedInstruction.java
new file mode 100644
index 0000000..72cd32f
--- /dev/null
+++ b/dx/src/com/android/dx/io/instructions/InvokePolymorphicDecodedInstruction.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dx.io.instructions;
+
+import com.android.dx.io.IndexType;
+
+/** A decoded invoke-polymorphic instruction. */
+public class InvokePolymorphicDecodedInstruction extends DecodedInstruction {
+
+ private final int protoIndex;
+ private final int[] registers;
+
+ public InvokePolymorphicDecodedInstruction(
+ InstructionCodec format,
+ int opcode,
+ int methodIndex,
+ IndexType indexType,
+ int protoIndex,
+ int[] registers) {
+ super(format, opcode, methodIndex, indexType, 0, 0);
+ if (protoIndex != (short) protoIndex) {
+ throw new IllegalArgumentException("protoIndex doesn't fit in a short: " + protoIndex);
+ }
+ this.protoIndex = protoIndex;
+ this.registers = registers;
+ }
+
+ @Override
+ public int getRegisterCount() {
+ return registers.length;
+ }
+
+ @Override
+ public DecodedInstruction withIndex(int newIndex) {
+ throw new UnsupportedOperationException(
+ "use withProtoIndex to update both the method and proto indices for"
+ + " invoke-polymorphic");
+ }
+
+ @Override
+ public DecodedInstruction withProtoIndex(int newIndex, int newProtoIndex) {
+ return new InvokePolymorphicDecodedInstruction(
+ getFormat(), getOpcode(), newIndex, getIndexType(), newProtoIndex, registers);
+ }
+
+ public int getC() {
+ return registers.length > 0 ? registers[0] : 0;
+ }
+
+ public int getD() {
+ return registers.length > 1 ? registers[1] : 0;
+ }
+
+ public int getE() {
+ return registers.length > 2 ? registers[2] : 0;
+ }
+
+ public int getF() {
+ return registers.length > 3 ? registers[3] : 0;
+ }
+
+ public int getG() {
+ return registers.length > 4 ? registers[4] : 0;
+ }
+
+ @Override
+ public short getProtoIndex() {
+ return (short) protoIndex;
+ }
+}
diff --git a/dx/src/com/android/dx/io/instructions/InvokePolymorphicRangeDecodedInstruction.java b/dx/src/com/android/dx/io/instructions/InvokePolymorphicRangeDecodedInstruction.java
new file mode 100644
index 0000000..e4c99c9
--- /dev/null
+++ b/dx/src/com/android/dx/io/instructions/InvokePolymorphicRangeDecodedInstruction.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.dx.io.instructions;
+
+import com.android.dx.io.IndexType;
+
+/** A decoded invoke-polymorphic/range instruction. */
+public class InvokePolymorphicRangeDecodedInstruction extends DecodedInstruction {
+
+ private final int c;
+ private final int registerCount;
+ private final int protoIndex;
+
+ public InvokePolymorphicRangeDecodedInstruction(
+ InstructionCodec format,
+ int opcode,
+ int methodIndex,
+ IndexType indexType,
+ int c,
+ int registerCount,
+ int protoIndex) {
+ super(format, opcode, methodIndex, indexType, 0, 0);
+ if (protoIndex != (short) protoIndex) {
+ throw new IllegalArgumentException("protoIndex doesn't fit in a short: " + protoIndex);
+ }
+ this.c = c;
+ this.registerCount = registerCount;
+ this.protoIndex = protoIndex;
+ }
+
+ @Override
+ public int getRegisterCount() {
+ return registerCount;
+ }
+
+ @Override
+ public int getC() {
+ return c;
+ }
+
+ @Override
+ public DecodedInstruction withProtoIndex(int newIndex, int newProtoIndex) {
+ return new InvokePolymorphicRangeDecodedInstruction(
+ getFormat(),
+ getOpcode(),
+ newIndex,
+ getIndexType(),
+ c,
+ registerCount,
+ newProtoIndex);
+ }
+
+ @Override
+ public DecodedInstruction withIndex(int newIndex) {
+ throw new UnsupportedOperationException(
+ "use withProtoIndex to update both the method and proto indices for "
+ + "invoke-polymorphic/range");
+ }
+
+ @Override
+ public short getProtoIndex() {
+ return (short) protoIndex;
+ }
+}
diff --git a/dx/src/com/android/dx/merge/DexMerger.java b/dx/src/com/android/dx/merge/DexMerger.java
index 81ad2dd..268e33d 100644
--- a/dx/src/com/android/dx/merge/DexMerger.java
+++ b/dx/src/com/android/dx/merge/DexMerger.java
@@ -17,6 +17,7 @@
package com.android.dx.merge;
import com.android.dex.Annotation;
+import com.android.dex.CallSiteId;
import com.android.dex.ClassData;
import com.android.dex.ClassDef;
import com.android.dex.Code;
@@ -24,6 +25,7 @@
import com.android.dex.DexException;
import com.android.dex.DexIndexOverflowException;
import com.android.dex.FieldId;
+import com.android.dex.MethodHandle;
import com.android.dex.MethodId;
import com.android.dex.ProtoId;
import com.android.dex.SizeOf;
@@ -162,8 +164,10 @@
mergeProtoIds();
mergeFieldIds();
mergeMethodIds();
+ mergeMethodHandles();
mergeAnnotations();
unionAnnotationSetsAndDirectories();
+ mergeCallSiteIds();
mergeClassDefs();
// computeSizesFromOffsets expects sections sorted by offset, so make it so
@@ -291,7 +295,7 @@
l = new ArrayList<Integer>();
values.put(v, l);
}
- l.add(new Integer(dex));
+ l.add(dex);
}
return offset;
}
@@ -468,12 +472,61 @@
indexMap.protoIds[oldIndex] = (short) newIndex;
}
- @Override void write(ProtoId value) {
+ @Override
+ void write(ProtoId value) {
value.writeTo(idsDefsOut);
}
}.mergeSorted();
}
+ private void mergeCallSiteIds() {
+ new IdMerger<CallSiteId>(idsDefsOut) {
+ @Override
+ TableOfContents.Section getSection(TableOfContents tableOfContents) {
+ return tableOfContents.callSiteIds;
+ }
+
+ @Override
+ CallSiteId read(Dex.Section in, IndexMap indexMap, int index) {
+ return indexMap.adjust(in.readCallSiteId());
+ }
+
+ @Override
+ void updateIndex(int offset, IndexMap indexMap, int oldIndex, int newIndex) {
+ indexMap.callSiteIds[oldIndex] = newIndex;
+ }
+
+ @Override
+ void write(CallSiteId value) {
+ value.writeTo(idsDefsOut);
+ }
+ }.mergeSorted();
+ }
+
+ private void mergeMethodHandles() {
+ new IdMerger<MethodHandle>(idsDefsOut) {
+ @Override
+ TableOfContents.Section getSection(TableOfContents tableOfContents) {
+ return tableOfContents.methodHandles;
+ }
+
+ @Override
+ MethodHandle read(Dex.Section in, IndexMap indexMap, int index) {
+ return indexMap.adjust(in.readMethodHandle());
+ }
+
+ @Override
+ void updateIndex(int offset, IndexMap indexMap, int oldIndex, int newIndex) {
+ indexMap.methodHandleIds.put(oldIndex, indexMap.methodHandleIds.size());
+ }
+
+ @Override
+ void write(MethodHandle value) {
+ value.writeTo(idsDefsOut);
+ }
+ }.mergeUnsorted();
+ }
+
private void mergeFieldIds() {
new IdMerger<FieldId>(idsDefsOut) {
@Override TableOfContents.Section getSection(TableOfContents tableOfContents) {
@@ -698,7 +751,7 @@
}
int staticValuesOff = classDef.getStaticValuesOffset();
- idsDefsOut.writeInt(indexMap.adjustStaticValues(staticValuesOff));
+ idsDefsOut.writeInt(indexMap.adjustEncodedArray(staticValuesOff));
}
/**
@@ -1000,7 +1053,7 @@
private void transformStaticValues(Dex.Section in, IndexMap indexMap) {
contentsOut.encodedArrays.size++;
- indexMap.putStaticValuesOffset(in.getPosition(), encodedArrayOut.getPosition());
+ indexMap.putEncodedArrayValueOffset(in.getPosition(), encodedArrayOut.getPosition());
indexMap.adjustEncodedArray(in.readEncodedArray()).writeTo(encodedArrayOut);
}
diff --git a/dx/src/com/android/dx/merge/IndexMap.java b/dx/src/com/android/dx/merge/IndexMap.java
index f47c03c..7033bfc 100644
--- a/dx/src/com/android/dx/merge/IndexMap.java
+++ b/dx/src/com/android/dx/merge/IndexMap.java
@@ -17,12 +17,14 @@
package com.android.dx.merge;
import com.android.dex.Annotation;
-import com.android.dex.util.ByteOutput;
+import com.android.dex.CallSiteId;
import com.android.dex.ClassDef;
import com.android.dex.Dex;
import com.android.dex.DexException;
import com.android.dex.EncodedValue;
import com.android.dex.EncodedValueReader;
+import com.android.dex.MethodHandle;
+import com.android.dex.util.ByteOutput;
import static com.android.dex.EncodedValueReader.ENCODED_ANNOTATION;
import static com.android.dex.EncodedValueReader.ENCODED_ARRAY;
import static com.android.dex.EncodedValueReader.ENCODED_BOOLEAN;
@@ -35,6 +37,8 @@
import static com.android.dex.EncodedValueReader.ENCODED_INT;
import static com.android.dex.EncodedValueReader.ENCODED_LONG;
import static com.android.dex.EncodedValueReader.ENCODED_METHOD;
+import static com.android.dex.EncodedValueReader.ENCODED_METHOD_HANDLE;
+import static com.android.dex.EncodedValueReader.ENCODED_METHOD_TYPE;
import static com.android.dex.EncodedValueReader.ENCODED_NULL;
import static com.android.dex.EncodedValueReader.ENCODED_SHORT;
import static com.android.dex.EncodedValueReader.ENCODED_STRING;
@@ -61,12 +65,14 @@
public final short[] protoIds;
public final short[] fieldIds;
public final short[] methodIds;
+ public final int[] callSiteIds;
+ public final HashMap<Integer, Integer> methodHandleIds;
private final HashMap<Integer, Integer> typeListOffsets;
private final HashMap<Integer, Integer> annotationOffsets;
private final HashMap<Integer, Integer> annotationSetOffsets;
private final HashMap<Integer, Integer> annotationSetRefListOffsets;
private final HashMap<Integer, Integer> annotationDirectoryOffsets;
- private final HashMap<Integer, Integer> staticValuesOffsets;
+ private final HashMap<Integer, Integer> encodedArrayValueOffset;
public IndexMap(Dex target, TableOfContents tableOfContents) {
this.target = target;
@@ -75,12 +81,14 @@
this.protoIds = new short[tableOfContents.protoIds.size];
this.fieldIds = new short[tableOfContents.fieldIds.size];
this.methodIds = new short[tableOfContents.methodIds.size];
+ this.callSiteIds = new int[tableOfContents.callSiteIds.size];
+ this.methodHandleIds = new HashMap<Integer, Integer>();
this.typeListOffsets = new HashMap<Integer, Integer>();
this.annotationOffsets = new HashMap<Integer, Integer>();
this.annotationSetOffsets = new HashMap<Integer, Integer>();
this.annotationSetRefListOffsets = new HashMap<Integer, Integer>();
this.annotationDirectoryOffsets = new HashMap<Integer, Integer>();
- this.staticValuesOffsets = new HashMap<Integer, Integer>();
+ this.encodedArrayValueOffset = new HashMap<Integer, Integer>();
/*
* A type list, annotation set, annotation directory, or static value at
@@ -89,7 +97,7 @@
this.typeListOffsets.put(0, 0);
this.annotationSetOffsets.put(0, 0);
this.annotationDirectoryOffsets.put(0, 0);
- this.staticValuesOffsets.put(0, 0);
+ this.encodedArrayValueOffset.put(0, 0);
}
public void putTypeListOffset(int oldOffset, int newOffset) {
@@ -127,11 +135,11 @@
annotationDirectoryOffsets.put(oldOffset, newOffset);
}
- public void putStaticValuesOffset(int oldOffset, int newOffset) {
+ public void putEncodedArrayValueOffset(int oldOffset, int newOffset) {
if (oldOffset <= 0 || newOffset <= 0) {
throw new IllegalArgumentException();
}
- staticValuesOffsets.put(oldOffset, newOffset);
+ encodedArrayValueOffset.put(oldOffset, newOffset);
}
public int adjustString(int stringIndex) {
@@ -185,8 +193,16 @@
return annotationDirectoryOffsets.get(annotationDirectoryOffset);
}
- public int adjustStaticValues(int staticValuesOffset) {
- return staticValuesOffsets.get(staticValuesOffset);
+ public int adjustEncodedArray(int encodedArrayAttribute) {
+ return encodedArrayValueOffset.get(encodedArrayAttribute);
+ }
+
+ public int adjustCallSite(int callSiteIndex) {
+ return callSiteIds[callSiteIndex];
+ }
+
+ public int adjustMethodHandle(int methodHandleIndex) {
+ return methodHandleIds.get(methodHandleIndex);
}
public MethodId adjust(MethodId methodId) {
@@ -196,6 +212,21 @@
adjustString(methodId.getNameIndex()));
}
+ public CallSiteId adjust(CallSiteId callSiteId) {
+ return new CallSiteId(target, adjustEncodedArray(callSiteId.getCallSiteOffset()));
+ }
+
+ public MethodHandle adjust(MethodHandle methodHandle) {
+ return new MethodHandle(
+ target,
+ methodHandle.getMethodHandleType(),
+ methodHandle.getUnused1(),
+ methodHandle.getMethodHandleType().isField()
+ ? adjustField(methodHandle.getFieldOrMethodId())
+ : adjustMethod(methodHandle.getFieldOrMethodId()),
+ methodHandle.getUnused2());
+ }
+
public FieldId adjust(FieldId fieldId) {
return new FieldId(target,
adjustType(fieldId.getDeclaringClassIndex()),
@@ -282,6 +313,16 @@
EncodedValueCodec.writeRightZeroExtendedValue(
out, ENCODED_DOUBLE, Double.doubleToLongBits(reader.readDouble()));
break;
+ case ENCODED_METHOD_TYPE:
+ EncodedValueCodec.writeUnsignedIntegralValue(
+ out, ENCODED_METHOD_TYPE, adjustProto(reader.readMethodType()));
+ break;
+ case ENCODED_METHOD_HANDLE:
+ EncodedValueCodec.writeUnsignedIntegralValue(
+ out,
+ ENCODED_METHOD_HANDLE,
+ adjustMethodHandle(reader.readMethodHandle()));
+ break;
case ENCODED_STRING:
EncodedValueCodec.writeUnsignedIntegralValue(
out, ENCODED_STRING, adjustString(reader.readString()));
diff --git a/dx/src/com/android/dx/merge/InstructionTransformer.java b/dx/src/com/android/dx/merge/InstructionTransformer.java
index 461af0f..6a785b0 100644
--- a/dx/src/com/android/dx/merge/InstructionTransformer.java
+++ b/dx/src/com/android/dx/merge/InstructionTransformer.java
@@ -37,6 +37,8 @@
this.reader.setTypeVisitor(new TypeVisitor());
this.reader.setFieldVisitor(new FieldVisitor());
this.reader.setMethodVisitor(new MethodVisitor());
+ this.reader.setMethodAndProtoVisitor(new MethodAndProtoVisitor());
+ this.reader.setCallSiteVisitor(new CallSiteVisitor());
}
public short[] transform(IndexMap indexMap, short[] encodedInstructions) throws DexException {
@@ -106,6 +108,25 @@
}
}
+ private class MethodAndProtoVisitor implements CodeReader.Visitor {
+ @Override
+ public void visit(DecodedInstruction[] all, DecodedInstruction one) {
+ int methodId = one.getIndex();
+ int protoId = one.getProtoIndex();
+ mappedInstructions[mappedAt++] =
+ one.withProtoIndex(indexMap.adjustMethod(methodId), indexMap.adjustProto(protoId));
+ }
+ }
+
+ private class CallSiteVisitor implements CodeReader.Visitor {
+ @Override
+ public void visit(DecodedInstruction[] all, DecodedInstruction one) {
+ int callSiteId = one.getIndex();
+ int mappedCallSiteId = indexMap.adjustCallSite(callSiteId);
+ mappedInstructions[mappedAt++] = one.withIndex(mappedCallSiteId);
+ }
+ }
+
private static void jumboCheck(boolean isJumbo, int newIndex) {
if (!isJumbo && (newIndex > 0xffff)) {
throw new DexIndexOverflowException("Cannot merge new index " + newIndex +
diff --git a/dx/tests/137-dexmerger-dex38/expected.txt b/dx/tests/137-dexmerger-dex38/expected.txt
new file mode 100644
index 0000000..030ce92
--- /dev/null
+++ b/dx/tests/137-dexmerger-dex38/expected.txt
@@ -0,0 +1,7187 @@
+Processing 'out.dex'...
+Opened 'out.dex', DEX version '038'
+Class #0 -
+ Class descriptor : 'Linvokecustom/Super;'
+ Access flags : 0x0400 (ABSTRACT)
+ Superclass : 'Ljava/lang/Object;'
+ Interfaces -
+ Static fields -
+ Instance fields -
+ Direct methods -
+ #0 : (in Linvokecustom/Super;)
+ name : '<init>'
+ type : '()V'
+ access : 0x10000 (CONSTRUCTOR)
+ code -
+ registers : 1
+ ins : 1
+ outs : 1
+ insns size : 4 16-bit code units
+0040ac: |[0040ac] invokecustom.Super.<init>:()V
+0040bc: 7010 b300 0000 |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@00b3
+0040c2: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=25
+ locals :
+ 0x0000 - 0x0004 reg=0 this Linvokecustom/Super;
+
+ Virtual methods -
+ #0 : (in Linvokecustom/Super;)
+ name : 'helperMethodTest9'
+ type : '()V'
+ access : 0x0401 (PUBLIC ABSTRACT)
+ code : (none)
+
+ #1 : (in Linvokecustom/Super;)
+ name : 'targetMethodTest4'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+0040c4: |[0040c4] invokecustom.Super.targetMethodTest4:()V
+0040d4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0040d8: 1a01 7600 |0002: const-string v1, "targetMethodTest4 from Super" // string@0076
+0040dc: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0040e2: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=27
+ 0x0007 line=28
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/Super;
+
+ source_file_idx : 25 (InvokeCustom.java)
+
+Class #1 -
+ Class descriptor : 'Linvokecustom/InvokeCustom1;'
+ Access flags : 0x0001 (PUBLIC)
+ Superclass : 'Linvokecustom/Super;'
+ Interfaces -
+ #0 : 'Ljava/lang/Runnable;'
+ Static fields -
+ #0 : (in Linvokecustom/InvokeCustom1;)
+ name : 'staticFieldTest9'
+ type : 'I'
+ access : 0x000a (PRIVATE STATIC)
+ Instance fields -
+ #0 : (in Linvokecustom/InvokeCustom1;)
+ name : 'fieldTest9'
+ type : 'F'
+ access : 0x0002 (PRIVATE)
+ Direct methods -
+ #0 : (in Linvokecustom/InvokeCustom1;)
+ name : '<clinit>'
+ type : '()V'
+ access : 0x10008 (STATIC CONSTRUCTOR)
+ code -
+ registers : 1
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+0040e4: |[0040e4] invokecustom.InvokeCustom1.<clinit>:()V
+0040f4: 1200 |0000: const/4 v0, #int 0 // #0
+0040f6: 6700 0f00 |0001: sput v0, Linvokecustom/InvokeCustom;.staticFieldTest9:I // field@000f
+0040fa: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=98
+ locals :
+
+ #1 : (in Linvokecustom/InvokeCustom1;)
+ name : '<init>'
+ type : '()V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 2
+ ins : 1
+ outs : 1
+ insns size : 7 16-bit code units
+0040fc: |[0040fc] invokecustom.InvokeCustom1.<init>:()V
+00410c: 7010 a800 0100 |0000: invoke-direct {v1}, Linvokecustom/Super;.<init>:()V // method@00a8
+004112: 1200 |0003: const/4 v0, #int 0 // #0
+004114: 5910 0e00 |0004: iput v0, v1, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+004118: 0e00 |0006: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=35
+ 0x0003 line=111
+ 0x0006 line=35
+ locals :
+ 0x0000 - 0x0007 reg=1 this Linvokecustom/InvokeCustom1;
+
+ #2 : (in Linvokecustom/InvokeCustom1;)
+ name : '<init>'
+ type : '(I)V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 5
+ ins : 2
+ outs : 2
+ insns size : 37 16-bit code units
+00411c: |[00411c] invokecustom.InvokeCustom1.<init>:(I)V
+00412c: 7010 a800 0300 |0000: invoke-direct {v3}, Linvokecustom/Super;.<init>:()V // method@00a8
+004132: 1200 |0003: const/4 v0, #int 0 // #0
+004134: 5930 0e00 |0004: iput v0, v3, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+004138: 6200 1000 |0006: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00413c: 2201 1700 |0008: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+004140: 7010 b400 0100 |000a: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004146: 1a02 1800 |000d: const-string v2, "InvokeCustom.<init>(" // string@0018
+00414a: 6e20 ba00 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004150: 0c01 |0012: move-result-object v1
+004152: 6e20 b700 4100 |0013: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004158: 0c01 |0016: move-result-object v1
+00415a: 1a02 0700 |0017: const-string v2, ")" // string@0007
+00415e: 6e20 ba00 2100 |0019: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004164: 0c01 |001c: move-result-object v1
+004166: 6e10 bb00 0100 |001d: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00416c: 0c01 |0020: move-result-object v1
+00416e: 6e20 b100 1000 |0021: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004174: 0e00 |0024: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=36
+ 0x0003 line=111
+ 0x0006 line=37
+ 0x0024 line=38
+ locals :
+ 0x0000 - 0x0025 reg=3 this Linvokecustom/InvokeCustom1;
+ 0x0000 - 0x0025 reg=4 (null) I
+
+ #3 : (in Linvokecustom/InvokeCustom1;)
+ name : 'bsmCreateCallSite'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 4
+ outs : 2
+ insns size : 36 16-bit code units
+004178: |[004178] invokecustom.InvokeCustom1.bsmCreateCallSite:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+004188: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00418c: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+004190: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004196: 1a02 5600 |0007: const-string v2, "bsmCreateCallSite [" // string@0056
+00419a: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0041a0: 0c01 |000c: move-result-object v1
+0041a2: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0041a8: 0c01 |0010: move-result-object v1
+0041aa: 1a02 5200 |0011: const-string v2, "]" // string@0052
+0041ae: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0041b4: 0c01 |0016: move-result-object v1
+0041b6: 6e10 bb00 0100 |0017: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0041bc: 0c01 |001a: move-result-object v1
+0041be: 6e20 b100 1000 |001b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0041c4: 2200 1b00 |001e: new-instance v0, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0041c8: 7020 bc00 6000 |0020: invoke-direct {v0, v6}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+0041ce: 1100 |0023: return-object v0
+ catches : (none)
+ positions :
+ 0x0000 line=156
+ 0x001e line=157
+ locals :
+ 0x0000 - 0x0024 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0024 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0024 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0024 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+
+ #4 : (in Linvokecustom/InvokeCustom1;)
+ name : 'bsmLookupStatic'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 5
+ ins : 3
+ outs : 4
+ insns size : 29 16-bit code units
+0041d0: |[0041d0] invokecustom.InvokeCustom1.bsmLookupStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+0041e0: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0041e4: 1a01 5800 |0002: const-string v1, "bsmLookupStatic []" // string@0058
+0041e8: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0041ee: 7100 c900 0000 |0007: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+0041f4: 0c00 |000a: move-result-object v0
+0041f6: 6e10 c800 0000 |000b: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+0041fc: 0c01 |000e: move-result-object v1
+0041fe: 6e40 c700 1043 |000f: invoke-virtual {v0, v1, v3, v4}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+004204: 0c00 |0012: move-result-object v0
+004206: 2201 1b00 |0013: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+00420a: 6e20 bd00 4000 |0015: invoke-virtual {v0, v4}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+004210: 0c00 |0018: move-result-object v0
+004212: 7020 bc00 0100 |0019: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+004218: 1101 |001c: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=138
+ 0x0007 line=139
+ 0x000b line=140
+ 0x0013 line=141
+ locals :
+ 0x0000 - 0x001d reg=2 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x001d reg=3 (null) Ljava/lang/String;
+ 0x0000 - 0x001d reg=4 (null) Ljava/lang/invoke/MethodType;
+
+ #5 : (in Linvokecustom/InvokeCustom1;)
+ name : 'bsmLookupStaticWithExtraArgs'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 9
+ outs : 4
+ insns size : 82 16-bit code units
+00421c: |[00421c] invokecustom.InvokeCustom1.bsmLookupStaticWithExtraArgs:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;
+00422c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004230: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+004234: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00423a: 1a02 5a00 |0007: const-string v2, "bsmLookupStaticWithExtraArgs [" // string@005a
+00423e: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004244: 0c01 |000c: move-result-object v1
+004246: 6e20 b700 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00424c: 0c01 |0010: move-result-object v1
+00424e: 1a02 0800 |0011: const-string v2, ", " // string@0008
+004252: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004258: 0c01 |0016: move-result-object v1
+00425a: 6e30 b800 7108 |0017: invoke-virtual {v1, v7, v8}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004260: 0c01 |001a: move-result-object v1
+004262: 1a02 0800 |001b: const-string v2, ", " // string@0008
+004266: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00426c: 0c01 |0020: move-result-object v1
+00426e: 6e20 b600 9100 |0021: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+004274: 0c01 |0024: move-result-object v1
+004276: 1a02 0800 |0025: const-string v2, ", " // string@0008
+00427a: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004280: 0c01 |002a: move-result-object v1
+004282: 6e30 b500 a10b |002b: invoke-virtual {v1, v10, v11}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+004288: 0c01 |002e: move-result-object v1
+00428a: 1a02 5200 |002f: const-string v2, "]" // string@0052
+00428e: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004294: 0c01 |0034: move-result-object v1
+004296: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00429c: 0c01 |0038: move-result-object v1
+00429e: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0042a4: 7100 c900 0000 |003c: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+0042aa: 0c00 |003f: move-result-object v0
+0042ac: 6e10 c800 0000 |0040: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+0042b2: 0c01 |0043: move-result-object v1
+0042b4: 6e40 c700 1054 |0044: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+0042ba: 0c00 |0047: move-result-object v0
+0042bc: 2201 1b00 |0048: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0042c0: 6e20 bd00 5000 |004a: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+0042c6: 0c00 |004d: move-result-object v0
+0042c8: 7020 bc00 0100 |004e: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+0042ce: 1101 |0051: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=147
+ 0x003c line=148
+ 0x0040 line=149
+ 0x0048 line=150
+ locals :
+ 0x0000 - 0x0052 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0052 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0052 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0052 reg=6 (null) I
+ 0x0000 - 0x0052 reg=7 (null) J
+ 0x0000 - 0x0052 reg=9 (null) F
+ 0x0000 - 0x0052 reg=10 (null) D
+
+ #6 : (in Linvokecustom/InvokeCustom1;)
+ name : 'bsmLookupTest9'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 13
+ ins : 10
+ outs : 4
+ insns size : 135 16-bit code units
+0042d0: |[0042d0] invokecustom.InvokeCustom1.bsmLookupTest9:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+0042e0: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0042e4: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+0042e8: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0042ee: 1a02 5c00 |0007: const-string v2, "bsmLookupTest9 [" // string@005c
+0042f2: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0042f8: 0c01 |000c: move-result-object v1
+0042fa: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+004300: 0c01 |0010: move-result-object v1
+004302: 1a02 0800 |0011: const-string v2, ", " // string@0008
+004306: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00430c: 0c01 |0016: move-result-object v1
+00430e: 6e20 b900 7100 |0017: invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+004314: 0c01 |001a: move-result-object v1
+004316: 1a02 0800 |001b: const-string v2, ", " // string@0008
+00431a: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004320: 0c01 |0020: move-result-object v1
+004322: 6e20 b900 8100 |0021: invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+004328: 0c01 |0024: move-result-object v1
+00432a: 1a02 0800 |0025: const-string v2, ", " // string@0008
+00432e: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004334: 0c01 |002a: move-result-object v1
+004336: 6e20 b900 9100 |002b: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+00433c: 0c01 |002e: move-result-object v1
+00433e: 1a02 5200 |002f: const-string v2, "]" // string@0052
+004342: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004348: 0c01 |0034: move-result-object v1
+00434a: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004350: 0c01 |0038: move-result-object v1
+004352: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004358: 6200 1000 |003c: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00435c: 2201 1700 |003e: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+004360: 7010 b400 0100 |0040: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004366: 6e20 ba00 4100 |0043: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00436c: 0c01 |0046: move-result-object v1
+00436e: 1a02 0000 |0047: const-string v2, " " // string@0000
+004372: 6e20 ba00 2100 |0049: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004378: 0c01 |004c: move-result-object v1
+00437a: 6e20 b900 5100 |004d: invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+004380: 0c01 |0050: move-result-object v1
+004382: 6e10 bb00 0100 |0051: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004388: 0c01 |0054: move-result-object v1
+00438a: 6e20 b100 1000 |0055: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004390: 7120 9b00 7600 |0058: invoke-static {v6, v7}, Linvokecustom/InvokeCustom;.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009b
+004396: 2200 0e00 |005b: new-instance v0, Linvokecustom/InvokeCustom; // type@000e
+00439a: 7010 9400 0000 |005d: invoke-direct {v0}, Linvokecustom/InvokeCustom;.<init>:()V // method@0094
+0043a0: 6f30 9a00 8009 |0060: invoke-super {v0, v8, v9}, Linvokecustom/InvokeCustom;.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009a
+0043a6: fa20 c300 0a00 1c00 |0063: invoke-polymorphic {v10, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00c3, proto@001c
+0043ae: 1230 |0067: const/4 v0, #int 3 // #3
+0043b0: fa20 c300 0b00 0500 |0068: invoke-polymorphic {v11, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)Linvokecustom/InvokeCustom; // method@00c3, proto@0005
+0043b8: 0c00 |006c: move-result-object v0
+0043ba: fa20 be00 0c00 1c00 |006d: invoke-polymorphic {v12, v0}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00be, proto@001c
+0043c2: 7100 c900 0000 |0071: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+0043c8: 0c00 |0074: move-result-object v0
+0043ca: 6e10 c800 0000 |0075: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+0043d0: 0c01 |0078: move-result-object v1
+0043d2: 6e40 c700 1054 |0079: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+0043d8: 0c00 |007c: move-result-object v0
+0043da: 2201 1b00 |007d: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0043de: 6e20 bd00 5000 |007f: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+0043e4: 0c00 |0082: move-result-object v0
+0043e6: 7020 bc00 0100 |0083: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+0043ec: 1101 |0086: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=166
+ 0x003c line=168
+ 0x0058 line=171
+ 0x005b line=172
+ 0x0060 line=173
+ 0x0063 line=176
+ 0x0067 line=178
+ 0x006d line=179
+ 0x0071 line=181
+ 0x0075 line=182
+ 0x007d line=183
+ locals :
+ 0x0000 - 0x0087 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0087 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0087 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0087 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=9 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=10 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=11 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=12 (null) Ljava/lang/invoke/MethodHandle;
+
+ #7 : (in Linvokecustom/InvokeCustom1;)
+ name : 'checkFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x0002 (PRIVATE)
+ code -
+ registers : 9
+ ins : 3
+ outs : 3
+ insns size : 82 16-bit code units
+0043f0: |[0043f0] invokecustom.InvokeCustom1.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+004400: 1405 0ff0 6a20 |0000: const v5, #float 1.99e-19 // #206af00f
+004406: fa20 c300 6700 0100 |0003: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+00440e: 0a00 |0007: move-result v0
+004410: fa30 c300 6805 1d00 |0008: invoke-polymorphic {v8, v6, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;F)V // method@00c3, proto@001d
+004418: fa20 c300 6700 0100 |000c: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+004420: 0a01 |0010: move-result v1
+004422: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004426: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+00442a: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004430: 1a04 5e00 |0018: const-string v4, "checkFieldTest9: old " // string@005e
+004434: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00443a: 0c03 |001d: move-result-object v3
+00443c: 6e20 b600 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+004442: 0c00 |0021: move-result-object v0
+004444: 1a03 0600 |0022: const-string v3, " new " // string@0006
+004448: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00444e: 0c00 |0027: move-result-object v0
+004450: 6e20 b600 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+004456: 0c00 |002b: move-result-object v0
+004458: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+00445c: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004462: 0c00 |0031: move-result-object v0
+004464: 6e20 b600 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00446a: 0c00 |0035: move-result-object v0
+00446c: 1a03 0000 |0036: const-string v3, " " // string@0000
+004470: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004476: 0c00 |003b: move-result-object v0
+004478: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00447e: 0c00 |003f: move-result-object v0
+004480: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+004486: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00448a: 2d00 0105 |0045: cmpl-float v0, v1, v5
+00448e: 3900 0800 |0047: if-nez v0, 004f // +0008
+004492: 1a00 4000 |0049: const-string v0, "OK" // string@0040
+004496: 6e20 b100 0200 |004b: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00449c: 0e00 |004e: return-void
+00449e: 1a00 1000 |004f: const-string v0, "ERROR" // string@0010
+0044a2: 28fa |0051: goto 004b // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=116
+ 0x0008 line=117
+ 0x000c line=118
+ 0x0011 line=119
+ 0x0043 line=121
+ 0x004e line=122
+ 0x004f line=121
+ locals :
+ 0x0000 - 0x0052 reg=6 this Linvokecustom/InvokeCustom1;
+ 0x0000 - 0x0052 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0052 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+
+ #8 : (in Linvokecustom/InvokeCustom1;)
+ name : 'checkStaticFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 8
+ ins : 2
+ outs : 2
+ insns size : 80 16-bit code units
+0044a4: |[0044a4] invokecustom.InvokeCustom1.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+0044b4: 1405 1032 5476 |0000: const v5, #float 1.07596e+33 // #76543210
+0044ba: fa10 c300 0600 0200 |0003: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+0044c2: 0a00 |0007: move-result v0
+0044c4: fa20 c300 5700 1a00 |0008: invoke-polymorphic {v7, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)V // method@00c3, proto@001a
+0044cc: fa10 c300 0600 0200 |000c: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+0044d4: 0a01 |0010: move-result v1
+0044d6: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0044da: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0044de: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0044e4: 1a04 6000 |0018: const-string v4, "checkStaticFieldTest9: old " // string@0060
+0044e8: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0044ee: 0c03 |001d: move-result-object v3
+0044f0: 6e20 b700 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0044f6: 0c00 |0021: move-result-object v0
+0044f8: 1a03 0600 |0022: const-string v3, " new " // string@0006
+0044fc: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004502: 0c00 |0027: move-result-object v0
+004504: 6e20 b700 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00450a: 0c00 |002b: move-result-object v0
+00450c: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+004510: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004516: 0c00 |0031: move-result-object v0
+004518: 6e20 b700 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00451e: 0c00 |0035: move-result-object v0
+004520: 1a03 0000 |0036: const-string v3, " " // string@0000
+004524: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00452a: 0c00 |003b: move-result-object v0
+00452c: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004532: 0c00 |003f: move-result-object v0
+004534: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+00453a: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00453e: 3351 0800 |0045: if-ne v1, v5, 004d // +0008
+004542: 1a00 4000 |0047: const-string v0, "OK" // string@0040
+004546: 6e20 b100 0200 |0049: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00454c: 0e00 |004c: return-void
+00454e: 1a00 1000 |004d: const-string v0, "ERROR" // string@0010
+004552: 28fa |004f: goto 0049 // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=103
+ 0x0008 line=104
+ 0x000c line=105
+ 0x0011 line=106
+ 0x0043 line=108
+ 0x004c line=109
+ 0x004d line=108
+ locals :
+ 0x0000 - 0x0050 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0050 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+
+ #9 : (in Linvokecustom/InvokeCustom1;)
+ name : 'targetMethodTest1'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+004554: |[004554] invokecustom.InvokeCustom1.targetMethodTest1:()V
+004564: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004568: 1a01 1500 |0002: const-string v1, "Hello World!" // string@0015
+00456c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004572: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=41
+ 0x0007 line=42
+ locals :
+
+ #10 : (in Linvokecustom/InvokeCustom1;)
+ name : 'targetMethodTest2'
+ type : '(ZBCSIFJDLjava/lang/String;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 13
+ ins : 11
+ outs : 3
+ insns size : 46 16-bit code units
+004574: |[004574] invokecustom.InvokeCustom1.targetMethodTest2:(ZBCSIFJDLjava/lang/String;)V
+004584: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004588: 6e20 b200 2000 |0002: invoke-virtual {v0, v2}, Ljava/io/PrintStream;.println:(Z)V // method@00b2
+00458e: 6200 1000 |0005: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004592: 6e20 af00 3000 |0007: invoke-virtual {v0, v3}, Ljava/io/PrintStream;.println:(I)V // method@00af
+004598: 6200 1000 |000a: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00459c: 6e20 ac00 4000 |000c: invoke-virtual {v0, v4}, Ljava/io/PrintStream;.println:(C)V // method@00ac
+0045a2: 6200 1000 |000f: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0045a6: 6e20 af00 5000 |0011: invoke-virtual {v0, v5}, Ljava/io/PrintStream;.println:(I)V // method@00af
+0045ac: 6200 1000 |0014: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0045b0: 6e20 af00 6000 |0016: invoke-virtual {v0, v6}, Ljava/io/PrintStream;.println:(I)V // method@00af
+0045b6: 6200 1000 |0019: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0045ba: 6e20 ae00 7000 |001b: invoke-virtual {v0, v7}, Ljava/io/PrintStream;.println:(F)V // method@00ae
+0045c0: 6200 1000 |001e: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0045c4: 6e30 b000 8009 |0020: invoke-virtual {v0, v8, v9}, Ljava/io/PrintStream;.println:(J)V // method@00b0
+0045ca: 6200 1000 |0023: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0045ce: 6e30 ad00 a00b |0025: invoke-virtual {v0, v10, v11}, Ljava/io/PrintStream;.println:(D)V // method@00ad
+0045d4: 6200 1000 |0028: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0045d8: 6e20 b100 c000 |002a: invoke-virtual {v0, v12}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0045de: 0e00 |002d: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=46
+ 0x0005 line=47
+ 0x000a line=48
+ 0x000f line=49
+ 0x0014 line=50
+ 0x0019 line=51
+ 0x001e line=52
+ 0x0023 line=53
+ 0x0028 line=54
+ 0x002d line=55
+ locals :
+ 0x0000 - 0x002e reg=2 (null) Z
+ 0x0000 - 0x002e reg=3 (null) B
+ 0x0000 - 0x002e reg=4 (null) C
+ 0x0000 - 0x002e reg=5 (null) S
+ 0x0000 - 0x002e reg=6 (null) I
+ 0x0000 - 0x002e reg=7 (null) F
+ 0x0000 - 0x002e reg=8 (null) J
+ 0x0000 - 0x002e reg=10 (null) D
+ 0x0000 - 0x002e reg=12 (null) Ljava/lang/String;
+
+ #11 : (in Linvokecustom/InvokeCustom1;)
+ name : 'targetMethodTest3'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+0045e0: |[0045e0] invokecustom.InvokeCustom1.targetMethodTest3:()V
+0045f0: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0045f4: 1a01 7300 |0002: const-string v1, "targetMethodTest3 from InvokeCustom" // string@0073
+0045f8: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0045fe: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=58
+ 0x0007 line=59
+ locals :
+
+ #12 : (in Linvokecustom/InvokeCustom1;)
+ name : 'targetMethodTest5'
+ type : '(III)I'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 3
+ outs : 2
+ insns size : 83 16-bit code units
+004600: |[004600] invokecustom.InvokeCustom1.targetMethodTest5:(III)I
+004610: 9000 0405 |0000: add-int v0, v4, v5
+004614: 6201 1000 |0002: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004618: 2202 1700 |0004: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+00461c: 7010 b400 0200 |0006: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004622: 1a03 7800 |0009: const-string v3, "targetMethodTest5 " // string@0078
+004626: 6e20 ba00 3200 |000b: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00462c: 0c02 |000e: move-result-object v2
+00462e: 6e20 b700 4200 |000f: invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004634: 0c02 |0012: move-result-object v2
+004636: 1a03 0300 |0013: const-string v3, " + " // string@0003
+00463a: 6e20 ba00 3200 |0015: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004640: 0c02 |0018: move-result-object v2
+004642: 6e20 b700 5200 |0019: invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004648: 0c02 |001c: move-result-object v2
+00464a: 1a03 0400 |001d: const-string v3, " = " // string@0004
+00464e: 6e20 ba00 3200 |001f: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004654: 0c02 |0022: move-result-object v2
+004656: 6e20 b700 0200 |0023: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00465c: 0c02 |0026: move-result-object v2
+00465e: 6e10 bb00 0200 |0027: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004664: 0c02 |002a: move-result-object v2
+004666: 6e20 b100 2100 |002b: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00466c: 3260 2400 |002e: if-eq v0, v6, 0052 // +0024
+004670: 6201 1000 |0030: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004674: 2202 1700 |0032: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+004678: 7010 b400 0200 |0034: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00467e: 1a03 1300 |0037: const-string v3, "Failed " // string@0013
+004682: 6e20 ba00 3200 |0039: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004688: 0c02 |003c: move-result-object v2
+00468a: 6e20 b700 0200 |003d: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004690: 0c02 |0040: move-result-object v2
+004692: 1a03 0100 |0041: const-string v3, " != " // string@0001
+004696: 6e20 ba00 3200 |0043: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00469c: 0c02 |0046: move-result-object v2
+00469e: 6e20 b700 6200 |0047: invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0046a4: 0c02 |004a: move-result-object v2
+0046a6: 6e10 bb00 0200 |004b: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0046ac: 0c02 |004e: move-result-object v2
+0046ae: 6e20 b100 2100 |004f: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0046b4: 0f00 |0052: return v0
+ catches : (none)
+ positions :
+ 0x0000 line=68
+ 0x0002 line=69
+ 0x002e line=70
+ 0x0030 line=71
+ 0x0052 line=73
+ locals :
+ 0x0000 - 0x0053 reg=4 (null) I
+ 0x0000 - 0x0053 reg=5 (null) I
+ 0x0000 - 0x0053 reg=6 (null) I
+
+ #13 : (in Linvokecustom/InvokeCustom1;)
+ name : 'targetMethodTest6'
+ type : '(JJJ)J'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 6
+ outs : 3
+ insns size : 85 16-bit code units
+0046b8: |[0046b8] invokecustom.InvokeCustom1.targetMethodTest6:(JJJ)J
+0046c8: 9b00 0608 |0000: add-long v0, v6, v8
+0046cc: 6202 1000 |0002: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0046d0: 2203 1700 |0004: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0046d4: 7010 b400 0300 |0006: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0046da: 1a04 7b00 |0009: const-string v4, "targetMethodTest6 " // string@007b
+0046de: 6e20 ba00 4300 |000b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0046e4: 0c03 |000e: move-result-object v3
+0046e6: 6e30 b800 6307 |000f: invoke-virtual {v3, v6, v7}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0046ec: 0c03 |0012: move-result-object v3
+0046ee: 1a04 0300 |0013: const-string v4, " + " // string@0003
+0046f2: 6e20 ba00 4300 |0015: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0046f8: 0c03 |0018: move-result-object v3
+0046fa: 6e30 b800 8309 |0019: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004700: 0c03 |001c: move-result-object v3
+004702: 1a04 0400 |001d: const-string v4, " = " // string@0004
+004706: 6e20 ba00 4300 |001f: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00470c: 0c03 |0022: move-result-object v3
+00470e: 6e30 b800 0301 |0023: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004714: 0c03 |0026: move-result-object v3
+004716: 6e10 bb00 0300 |0027: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00471c: 0c03 |002a: move-result-object v3
+00471e: 6e20 b100 3200 |002b: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004724: 3102 000a |002e: cmp-long v2, v0, v10
+004728: 3802 2400 |0030: if-eqz v2, 0054 // +0024
+00472c: 6202 1000 |0032: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004730: 2203 1700 |0034: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+004734: 7010 b400 0300 |0036: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00473a: 1a04 1300 |0039: const-string v4, "Failed " // string@0013
+00473e: 6e20 ba00 4300 |003b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004744: 0c03 |003e: move-result-object v3
+004746: 6e30 b800 0301 |003f: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+00474c: 0c03 |0042: move-result-object v3
+00474e: 1a04 0100 |0043: const-string v4, " != " // string@0001
+004752: 6e20 ba00 4300 |0045: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004758: 0c03 |0048: move-result-object v3
+00475a: 6e30 b800 a30b |0049: invoke-virtual {v3, v10, v11}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004760: 0c03 |004c: move-result-object v3
+004762: 6e10 bb00 0300 |004d: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004768: 0c03 |0050: move-result-object v3
+00476a: 6e20 b100 3200 |0051: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004770: 1000 |0054: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=77
+ 0x0002 line=78
+ 0x002e line=79
+ 0x0032 line=80
+ 0x0054 line=82
+ locals :
+ 0x0000 - 0x0055 reg=6 (null) J
+ 0x0000 - 0x0055 reg=8 (null) J
+ 0x0000 - 0x0055 reg=10 (null) J
+
+ #14 : (in Linvokecustom/InvokeCustom1;)
+ name : 'targetMethodTest7'
+ type : '(FFD)D'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 10
+ ins : 4
+ outs : 3
+ insns size : 86 16-bit code units
+004774: |[004774] invokecustom.InvokeCustom1.targetMethodTest7:(FFD)D
+004784: a800 0607 |0000: mul-float v0, v6, v7
+004788: 8900 |0002: float-to-double v0, v0
+00478a: 6202 1000 |0003: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00478e: 2203 1700 |0005: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+004792: 7010 b400 0300 |0007: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004798: 1a04 7e00 |000a: const-string v4, "targetMethodTest7 " // string@007e
+00479c: 6e20 ba00 4300 |000c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0047a2: 0c03 |000f: move-result-object v3
+0047a4: 6e20 b600 6300 |0010: invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+0047aa: 0c03 |0013: move-result-object v3
+0047ac: 1a04 0200 |0014: const-string v4, " * " // string@0002
+0047b0: 6e20 ba00 4300 |0016: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0047b6: 0c03 |0019: move-result-object v3
+0047b8: 6e20 b600 7300 |001a: invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+0047be: 0c03 |001d: move-result-object v3
+0047c0: 1a04 0400 |001e: const-string v4, " = " // string@0004
+0047c4: 6e20 ba00 4300 |0020: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0047ca: 0c03 |0023: move-result-object v3
+0047cc: 6e30 b500 0301 |0024: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+0047d2: 0c03 |0027: move-result-object v3
+0047d4: 6e10 bb00 0300 |0028: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0047da: 0c03 |002b: move-result-object v3
+0047dc: 6e20 b100 3200 |002c: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0047e2: 2f02 0008 |002f: cmpl-double v2, v0, v8
+0047e6: 3802 2400 |0031: if-eqz v2, 0055 // +0024
+0047ea: 6202 1000 |0033: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0047ee: 2203 1700 |0035: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0047f2: 7010 b400 0300 |0037: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0047f8: 1a04 1300 |003a: const-string v4, "Failed " // string@0013
+0047fc: 6e20 ba00 4300 |003c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004802: 0c03 |003f: move-result-object v3
+004804: 6e30 b500 0301 |0040: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+00480a: 0c03 |0043: move-result-object v3
+00480c: 1a04 0100 |0044: const-string v4, " != " // string@0001
+004810: 6e20 ba00 4300 |0046: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004816: 0c03 |0049: move-result-object v3
+004818: 6e30 b500 8309 |004a: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+00481e: 0c03 |004d: move-result-object v3
+004820: 6e10 bb00 0300 |004e: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004826: 0c03 |0051: move-result-object v3
+004828: 6e20 b100 3200 |0052: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00482e: 1000 |0055: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=86
+ 0x0003 line=87
+ 0x002f line=88
+ 0x0033 line=89
+ 0x0055 line=91
+ locals :
+ 0x0000 - 0x0056 reg=6 (null) F
+ 0x0000 - 0x0056 reg=7 (null) F
+ 0x0000 - 0x0056 reg=8 (null) D
+
+ #15 : (in Linvokecustom/InvokeCustom1;)
+ name : 'targetMethodTest8'
+ type : '(Ljava/lang/String;)V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 25 16-bit code units
+004830: |[004830] invokecustom.InvokeCustom1.targetMethodTest8:(Ljava/lang/String;)V
+004840: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004844: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+004848: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00484e: 1a02 8000 |0007: const-string v2, "targetMethodTest8 " // string@0080
+004852: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004858: 0c01 |000c: move-result-object v1
+00485a: 6e20 ba00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004860: 0c01 |0010: move-result-object v1
+004862: 6e10 bb00 0100 |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004868: 0c01 |0014: move-result-object v1
+00486a: 6e20 b100 1000 |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004870: 0e00 |0018: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=95
+ 0x0018 line=96
+ locals :
+ 0x0000 - 0x0019 reg=3 (null) Ljava/lang/String;
+
+ #16 : (in Linvokecustom/InvokeCustom1;)
+ name : 'targetMethodTest9'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+004874: |[004874] invokecustom.InvokeCustom1.targetMethodTest9:()V
+004884: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004888: 1a01 8200 |0002: const-string v1, "targetMethodTest9()" // string@0082
+00488c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004892: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=129
+ 0x0007 line=130
+ locals :
+
+ #17 : (in Linvokecustom/InvokeCustom1;)
+ name : 'test1'
+ type : '()V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 0
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+004894: |[004894] invokecustom.InvokeCustom1.test1:()V
+0048a4: fc00 0100 0000 |0000: invoke-custom {}, call_site@0001
+0048aa: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ locals :
+
+ Virtual methods -
+ #0 : (in Linvokecustom/InvokeCustom1;)
+ name : 'helperMethodTest9'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 27 16-bit code units
+0048ac: |[0048ac] invokecustom.InvokeCustom1.helperMethodTest9:()V
+0048bc: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0048c0: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+0048c4: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0048ca: 1a02 6400 |0007: const-string v2, "helperMethodTest9 in " // string@0064
+0048ce: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0048d4: 0c01 |000c: move-result-object v1
+0048d6: 1c02 0e00 |000d: const-class v2, Linvokecustom/InvokeCustom; // type@000e
+0048da: 6e20 b900 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0048e0: 0c01 |0012: move-result-object v1
+0048e2: 6e10 bb00 0100 |0013: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0048e8: 0c01 |0016: move-result-object v1
+0048ea: 6e20 b100 1000 |0017: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0048f0: 0e00 |001a: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=125
+ 0x001a line=126
+ locals :
+ 0x0000 - 0x001b reg=3 this Linvokecustom/InvokeCustom1;
+
+ #1 : (in Linvokecustom/InvokeCustom1;)
+ name : 'run'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+0048f4: |[0048f4] invokecustom.InvokeCustom1.run:()V
+004904: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004908: 1a01 6e00 |0002: const-string v1, "run() for Test9" // string@006e
+00490c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004912: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=133
+ 0x0007 line=134
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom1;
+
+ #2 : (in Linvokecustom/InvokeCustom1;)
+ name : 'targetMethodTest4'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+004914: |[004914] invokecustom.InvokeCustom1.targetMethodTest4:()V
+004924: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004928: 1a01 7500 |0002: const-string v1, "targetMethodTest4 from InvokeCustom (oops!)" // string@0075
+00492c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004932: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=64
+ 0x0007 line=65
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom1;
+
+ source_file_idx : 25 (InvokeCustom.java)
+
+Class #2 -
+ Class descriptor : 'Linvokecustom/InvokeCustom2;'
+ Access flags : 0x0001 (PUBLIC)
+ Superclass : 'Linvokecustom/Super;'
+ Interfaces -
+ #0 : 'Ljava/lang/Runnable;'
+ Static fields -
+ #0 : (in Linvokecustom/InvokeCustom2;)
+ name : 'staticFieldTest9'
+ type : 'I'
+ access : 0x000a (PRIVATE STATIC)
+ Instance fields -
+ #0 : (in Linvokecustom/InvokeCustom2;)
+ name : 'fieldTest9'
+ type : 'F'
+ access : 0x0002 (PRIVATE)
+ Direct methods -
+ #0 : (in Linvokecustom/InvokeCustom2;)
+ name : '<clinit>'
+ type : '()V'
+ access : 0x10008 (STATIC CONSTRUCTOR)
+ code -
+ registers : 1
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+004934: |[004934] invokecustom.InvokeCustom2.<clinit>:()V
+004944: 1200 |0000: const/4 v0, #int 0 // #0
+004946: 6700 0f00 |0001: sput v0, Linvokecustom/InvokeCustom;.staticFieldTest9:I // field@000f
+00494a: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=98
+ locals :
+
+ #1 : (in Linvokecustom/InvokeCustom2;)
+ name : '<init>'
+ type : '()V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 2
+ ins : 1
+ outs : 1
+ insns size : 7 16-bit code units
+00494c: |[00494c] invokecustom.InvokeCustom2.<init>:()V
+00495c: 7010 a800 0100 |0000: invoke-direct {v1}, Linvokecustom/Super;.<init>:()V // method@00a8
+004962: 1200 |0003: const/4 v0, #int 0 // #0
+004964: 5910 0e00 |0004: iput v0, v1, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+004968: 0e00 |0006: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=35
+ 0x0003 line=111
+ 0x0006 line=35
+ locals :
+ 0x0000 - 0x0007 reg=1 this Linvokecustom/InvokeCustom2;
+
+ #2 : (in Linvokecustom/InvokeCustom2;)
+ name : '<init>'
+ type : '(I)V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 5
+ ins : 2
+ outs : 2
+ insns size : 37 16-bit code units
+00496c: |[00496c] invokecustom.InvokeCustom2.<init>:(I)V
+00497c: 7010 a800 0300 |0000: invoke-direct {v3}, Linvokecustom/Super;.<init>:()V // method@00a8
+004982: 1200 |0003: const/4 v0, #int 0 // #0
+004984: 5930 0e00 |0004: iput v0, v3, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+004988: 6200 1000 |0006: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00498c: 2201 1700 |0008: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+004990: 7010 b400 0100 |000a: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004996: 1a02 1800 |000d: const-string v2, "InvokeCustom.<init>(" // string@0018
+00499a: 6e20 ba00 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0049a0: 0c01 |0012: move-result-object v1
+0049a2: 6e20 b700 4100 |0013: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0049a8: 0c01 |0016: move-result-object v1
+0049aa: 1a02 0700 |0017: const-string v2, ")" // string@0007
+0049ae: 6e20 ba00 2100 |0019: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0049b4: 0c01 |001c: move-result-object v1
+0049b6: 6e10 bb00 0100 |001d: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0049bc: 0c01 |0020: move-result-object v1
+0049be: 6e20 b100 1000 |0021: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0049c4: 0e00 |0024: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=36
+ 0x0003 line=111
+ 0x0006 line=37
+ 0x0024 line=38
+ locals :
+ 0x0000 - 0x0025 reg=3 this Linvokecustom/InvokeCustom2;
+ 0x0000 - 0x0025 reg=4 (null) I
+
+ #3 : (in Linvokecustom/InvokeCustom2;)
+ name : 'bsmCreateCallSite'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 4
+ outs : 2
+ insns size : 36 16-bit code units
+0049c8: |[0049c8] invokecustom.InvokeCustom2.bsmCreateCallSite:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+0049d8: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0049dc: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+0049e0: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0049e6: 1a02 5600 |0007: const-string v2, "bsmCreateCallSite [" // string@0056
+0049ea: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0049f0: 0c01 |000c: move-result-object v1
+0049f2: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0049f8: 0c01 |0010: move-result-object v1
+0049fa: 1a02 5200 |0011: const-string v2, "]" // string@0052
+0049fe: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004a04: 0c01 |0016: move-result-object v1
+004a06: 6e10 bb00 0100 |0017: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004a0c: 0c01 |001a: move-result-object v1
+004a0e: 6e20 b100 1000 |001b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004a14: 2200 1b00 |001e: new-instance v0, Ljava/lang/invoke/ConstantCallSite; // type@001b
+004a18: 7020 bc00 6000 |0020: invoke-direct {v0, v6}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+004a1e: 1100 |0023: return-object v0
+ catches : (none)
+ positions :
+ 0x0000 line=156
+ 0x001e line=157
+ locals :
+ 0x0000 - 0x0024 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0024 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0024 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0024 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+
+ #4 : (in Linvokecustom/InvokeCustom2;)
+ name : 'bsmLookupStatic'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 5
+ ins : 3
+ outs : 4
+ insns size : 29 16-bit code units
+004a20: |[004a20] invokecustom.InvokeCustom2.bsmLookupStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+004a30: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004a34: 1a01 5800 |0002: const-string v1, "bsmLookupStatic []" // string@0058
+004a38: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004a3e: 7100 c900 0000 |0007: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+004a44: 0c00 |000a: move-result-object v0
+004a46: 6e10 c800 0000 |000b: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+004a4c: 0c01 |000e: move-result-object v1
+004a4e: 6e40 c700 1043 |000f: invoke-virtual {v0, v1, v3, v4}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+004a54: 0c00 |0012: move-result-object v0
+004a56: 2201 1b00 |0013: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+004a5a: 6e20 bd00 4000 |0015: invoke-virtual {v0, v4}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+004a60: 0c00 |0018: move-result-object v0
+004a62: 7020 bc00 0100 |0019: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+004a68: 1101 |001c: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=138
+ 0x0007 line=139
+ 0x000b line=140
+ 0x0013 line=141
+ locals :
+ 0x0000 - 0x001d reg=2 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x001d reg=3 (null) Ljava/lang/String;
+ 0x0000 - 0x001d reg=4 (null) Ljava/lang/invoke/MethodType;
+
+ #5 : (in Linvokecustom/InvokeCustom2;)
+ name : 'bsmLookupStaticWithExtraArgs'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 9
+ outs : 4
+ insns size : 82 16-bit code units
+004a6c: |[004a6c] invokecustom.InvokeCustom2.bsmLookupStaticWithExtraArgs:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;
+004a7c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004a80: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+004a84: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004a8a: 1a02 5a00 |0007: const-string v2, "bsmLookupStaticWithExtraArgs [" // string@005a
+004a8e: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004a94: 0c01 |000c: move-result-object v1
+004a96: 6e20 b700 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004a9c: 0c01 |0010: move-result-object v1
+004a9e: 1a02 0800 |0011: const-string v2, ", " // string@0008
+004aa2: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004aa8: 0c01 |0016: move-result-object v1
+004aaa: 6e30 b800 7108 |0017: invoke-virtual {v1, v7, v8}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004ab0: 0c01 |001a: move-result-object v1
+004ab2: 1a02 0800 |001b: const-string v2, ", " // string@0008
+004ab6: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004abc: 0c01 |0020: move-result-object v1
+004abe: 6e20 b600 9100 |0021: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+004ac4: 0c01 |0024: move-result-object v1
+004ac6: 1a02 0800 |0025: const-string v2, ", " // string@0008
+004aca: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004ad0: 0c01 |002a: move-result-object v1
+004ad2: 6e30 b500 a10b |002b: invoke-virtual {v1, v10, v11}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+004ad8: 0c01 |002e: move-result-object v1
+004ada: 1a02 5200 |002f: const-string v2, "]" // string@0052
+004ade: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004ae4: 0c01 |0034: move-result-object v1
+004ae6: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004aec: 0c01 |0038: move-result-object v1
+004aee: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004af4: 7100 c900 0000 |003c: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+004afa: 0c00 |003f: move-result-object v0
+004afc: 6e10 c800 0000 |0040: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+004b02: 0c01 |0043: move-result-object v1
+004b04: 6e40 c700 1054 |0044: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+004b0a: 0c00 |0047: move-result-object v0
+004b0c: 2201 1b00 |0048: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+004b10: 6e20 bd00 5000 |004a: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+004b16: 0c00 |004d: move-result-object v0
+004b18: 7020 bc00 0100 |004e: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+004b1e: 1101 |0051: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=147
+ 0x003c line=148
+ 0x0040 line=149
+ 0x0048 line=150
+ locals :
+ 0x0000 - 0x0052 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0052 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0052 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0052 reg=6 (null) I
+ 0x0000 - 0x0052 reg=7 (null) J
+ 0x0000 - 0x0052 reg=9 (null) F
+ 0x0000 - 0x0052 reg=10 (null) D
+
+ #6 : (in Linvokecustom/InvokeCustom2;)
+ name : 'bsmLookupTest9'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 13
+ ins : 10
+ outs : 4
+ insns size : 135 16-bit code units
+004b20: |[004b20] invokecustom.InvokeCustom2.bsmLookupTest9:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+004b30: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004b34: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+004b38: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004b3e: 1a02 5c00 |0007: const-string v2, "bsmLookupTest9 [" // string@005c
+004b42: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004b48: 0c01 |000c: move-result-object v1
+004b4a: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+004b50: 0c01 |0010: move-result-object v1
+004b52: 1a02 0800 |0011: const-string v2, ", " // string@0008
+004b56: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004b5c: 0c01 |0016: move-result-object v1
+004b5e: 6e20 b900 7100 |0017: invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+004b64: 0c01 |001a: move-result-object v1
+004b66: 1a02 0800 |001b: const-string v2, ", " // string@0008
+004b6a: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004b70: 0c01 |0020: move-result-object v1
+004b72: 6e20 b900 8100 |0021: invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+004b78: 0c01 |0024: move-result-object v1
+004b7a: 1a02 0800 |0025: const-string v2, ", " // string@0008
+004b7e: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004b84: 0c01 |002a: move-result-object v1
+004b86: 6e20 b900 9100 |002b: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+004b8c: 0c01 |002e: move-result-object v1
+004b8e: 1a02 5200 |002f: const-string v2, "]" // string@0052
+004b92: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004b98: 0c01 |0034: move-result-object v1
+004b9a: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004ba0: 0c01 |0038: move-result-object v1
+004ba2: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004ba8: 6200 1000 |003c: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004bac: 2201 1700 |003e: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+004bb0: 7010 b400 0100 |0040: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004bb6: 6e20 ba00 4100 |0043: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004bbc: 0c01 |0046: move-result-object v1
+004bbe: 1a02 0000 |0047: const-string v2, " " // string@0000
+004bc2: 6e20 ba00 2100 |0049: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004bc8: 0c01 |004c: move-result-object v1
+004bca: 6e20 b900 5100 |004d: invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+004bd0: 0c01 |0050: move-result-object v1
+004bd2: 6e10 bb00 0100 |0051: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004bd8: 0c01 |0054: move-result-object v1
+004bda: 6e20 b100 1000 |0055: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004be0: 7120 9b00 7600 |0058: invoke-static {v6, v7}, Linvokecustom/InvokeCustom;.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009b
+004be6: 2200 0e00 |005b: new-instance v0, Linvokecustom/InvokeCustom; // type@000e
+004bea: 7010 9400 0000 |005d: invoke-direct {v0}, Linvokecustom/InvokeCustom;.<init>:()V // method@0094
+004bf0: 6f30 9a00 8009 |0060: invoke-super {v0, v8, v9}, Linvokecustom/InvokeCustom;.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009a
+004bf6: fa20 c300 0a00 1c00 |0063: invoke-polymorphic {v10, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00c3, proto@001c
+004bfe: 1230 |0067: const/4 v0, #int 3 // #3
+004c00: fa20 c300 0b00 0500 |0068: invoke-polymorphic {v11, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)Linvokecustom/InvokeCustom; // method@00c3, proto@0005
+004c08: 0c00 |006c: move-result-object v0
+004c0a: fa20 be00 0c00 1c00 |006d: invoke-polymorphic {v12, v0}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00be, proto@001c
+004c12: 7100 c900 0000 |0071: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+004c18: 0c00 |0074: move-result-object v0
+004c1a: 6e10 c800 0000 |0075: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+004c20: 0c01 |0078: move-result-object v1
+004c22: 6e40 c700 1054 |0079: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+004c28: 0c00 |007c: move-result-object v0
+004c2a: 2201 1b00 |007d: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+004c2e: 6e20 bd00 5000 |007f: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+004c34: 0c00 |0082: move-result-object v0
+004c36: 7020 bc00 0100 |0083: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+004c3c: 1101 |0086: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=166
+ 0x003c line=168
+ 0x0058 line=171
+ 0x005b line=172
+ 0x0060 line=173
+ 0x0063 line=176
+ 0x0067 line=178
+ 0x006d line=179
+ 0x0071 line=181
+ 0x0075 line=182
+ 0x007d line=183
+ locals :
+ 0x0000 - 0x0087 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0087 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0087 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0087 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=9 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=10 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=11 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=12 (null) Ljava/lang/invoke/MethodHandle;
+
+ #7 : (in Linvokecustom/InvokeCustom2;)
+ name : 'checkFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x0002 (PRIVATE)
+ code -
+ registers : 9
+ ins : 3
+ outs : 3
+ insns size : 82 16-bit code units
+004c40: |[004c40] invokecustom.InvokeCustom2.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+004c50: 1405 0ff0 6a20 |0000: const v5, #float 1.99e-19 // #206af00f
+004c56: fa20 c300 6700 0100 |0003: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+004c5e: 0a00 |0007: move-result v0
+004c60: fa30 c300 6805 1d00 |0008: invoke-polymorphic {v8, v6, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;F)V // method@00c3, proto@001d
+004c68: fa20 c300 6700 0100 |000c: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+004c70: 0a01 |0010: move-result v1
+004c72: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004c76: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+004c7a: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004c80: 1a04 5e00 |0018: const-string v4, "checkFieldTest9: old " // string@005e
+004c84: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004c8a: 0c03 |001d: move-result-object v3
+004c8c: 6e20 b600 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+004c92: 0c00 |0021: move-result-object v0
+004c94: 1a03 0600 |0022: const-string v3, " new " // string@0006
+004c98: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004c9e: 0c00 |0027: move-result-object v0
+004ca0: 6e20 b600 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+004ca6: 0c00 |002b: move-result-object v0
+004ca8: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+004cac: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004cb2: 0c00 |0031: move-result-object v0
+004cb4: 6e20 b600 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+004cba: 0c00 |0035: move-result-object v0
+004cbc: 1a03 0000 |0036: const-string v3, " " // string@0000
+004cc0: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004cc6: 0c00 |003b: move-result-object v0
+004cc8: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004cce: 0c00 |003f: move-result-object v0
+004cd0: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+004cd6: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004cda: 2d00 0105 |0045: cmpl-float v0, v1, v5
+004cde: 3900 0800 |0047: if-nez v0, 004f // +0008
+004ce2: 1a00 4000 |0049: const-string v0, "OK" // string@0040
+004ce6: 6e20 b100 0200 |004b: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004cec: 0e00 |004e: return-void
+004cee: 1a00 1000 |004f: const-string v0, "ERROR" // string@0010
+004cf2: 28fa |0051: goto 004b // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=116
+ 0x0008 line=117
+ 0x000c line=118
+ 0x0011 line=119
+ 0x0043 line=121
+ 0x004e line=122
+ 0x004f line=121
+ locals :
+ 0x0000 - 0x0052 reg=6 this Linvokecustom/InvokeCustom2;
+ 0x0000 - 0x0052 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0052 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+
+ #8 : (in Linvokecustom/InvokeCustom2;)
+ name : 'checkStaticFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 8
+ ins : 2
+ outs : 2
+ insns size : 80 16-bit code units
+004cf4: |[004cf4] invokecustom.InvokeCustom2.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+004d04: 1405 1032 5476 |0000: const v5, #float 1.07596e+33 // #76543210
+004d0a: fa10 c300 0600 0200 |0003: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+004d12: 0a00 |0007: move-result v0
+004d14: fa20 c300 5700 1a00 |0008: invoke-polymorphic {v7, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)V // method@00c3, proto@001a
+004d1c: fa10 c300 0600 0200 |000c: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+004d24: 0a01 |0010: move-result v1
+004d26: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004d2a: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+004d2e: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004d34: 1a04 6000 |0018: const-string v4, "checkStaticFieldTest9: old " // string@0060
+004d38: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004d3e: 0c03 |001d: move-result-object v3
+004d40: 6e20 b700 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004d46: 0c00 |0021: move-result-object v0
+004d48: 1a03 0600 |0022: const-string v3, " new " // string@0006
+004d4c: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004d52: 0c00 |0027: move-result-object v0
+004d54: 6e20 b700 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004d5a: 0c00 |002b: move-result-object v0
+004d5c: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+004d60: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004d66: 0c00 |0031: move-result-object v0
+004d68: 6e20 b700 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004d6e: 0c00 |0035: move-result-object v0
+004d70: 1a03 0000 |0036: const-string v3, " " // string@0000
+004d74: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004d7a: 0c00 |003b: move-result-object v0
+004d7c: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004d82: 0c00 |003f: move-result-object v0
+004d84: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+004d8a: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004d8e: 3351 0800 |0045: if-ne v1, v5, 004d // +0008
+004d92: 1a00 4000 |0047: const-string v0, "OK" // string@0040
+004d96: 6e20 b100 0200 |0049: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004d9c: 0e00 |004c: return-void
+004d9e: 1a00 1000 |004d: const-string v0, "ERROR" // string@0010
+004da2: 28fa |004f: goto 0049 // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=103
+ 0x0008 line=104
+ 0x000c line=105
+ 0x0011 line=106
+ 0x0043 line=108
+ 0x004c line=109
+ 0x004d line=108
+ locals :
+ 0x0000 - 0x0050 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0050 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+
+ #9 : (in Linvokecustom/InvokeCustom2;)
+ name : 'targetMethodTest1'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+004da4: |[004da4] invokecustom.InvokeCustom2.targetMethodTest1:()V
+004db4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004db8: 1a01 1500 |0002: const-string v1, "Hello World!" // string@0015
+004dbc: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004dc2: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=41
+ 0x0007 line=42
+ locals :
+
+ #10 : (in Linvokecustom/InvokeCustom2;)
+ name : 'targetMethodTest2'
+ type : '(ZBCSIFJDLjava/lang/String;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 13
+ ins : 11
+ outs : 3
+ insns size : 46 16-bit code units
+004dc4: |[004dc4] invokecustom.InvokeCustom2.targetMethodTest2:(ZBCSIFJDLjava/lang/String;)V
+004dd4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004dd8: 6e20 b200 2000 |0002: invoke-virtual {v0, v2}, Ljava/io/PrintStream;.println:(Z)V // method@00b2
+004dde: 6200 1000 |0005: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004de2: 6e20 af00 3000 |0007: invoke-virtual {v0, v3}, Ljava/io/PrintStream;.println:(I)V // method@00af
+004de8: 6200 1000 |000a: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004dec: 6e20 ac00 4000 |000c: invoke-virtual {v0, v4}, Ljava/io/PrintStream;.println:(C)V // method@00ac
+004df2: 6200 1000 |000f: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004df6: 6e20 af00 5000 |0011: invoke-virtual {v0, v5}, Ljava/io/PrintStream;.println:(I)V // method@00af
+004dfc: 6200 1000 |0014: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004e00: 6e20 af00 6000 |0016: invoke-virtual {v0, v6}, Ljava/io/PrintStream;.println:(I)V // method@00af
+004e06: 6200 1000 |0019: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004e0a: 6e20 ae00 7000 |001b: invoke-virtual {v0, v7}, Ljava/io/PrintStream;.println:(F)V // method@00ae
+004e10: 6200 1000 |001e: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004e14: 6e30 b000 8009 |0020: invoke-virtual {v0, v8, v9}, Ljava/io/PrintStream;.println:(J)V // method@00b0
+004e1a: 6200 1000 |0023: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004e1e: 6e30 ad00 a00b |0025: invoke-virtual {v0, v10, v11}, Ljava/io/PrintStream;.println:(D)V // method@00ad
+004e24: 6200 1000 |0028: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004e28: 6e20 b100 c000 |002a: invoke-virtual {v0, v12}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004e2e: 0e00 |002d: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=46
+ 0x0005 line=47
+ 0x000a line=48
+ 0x000f line=49
+ 0x0014 line=50
+ 0x0019 line=51
+ 0x001e line=52
+ 0x0023 line=53
+ 0x0028 line=54
+ 0x002d line=55
+ locals :
+ 0x0000 - 0x002e reg=2 (null) Z
+ 0x0000 - 0x002e reg=3 (null) B
+ 0x0000 - 0x002e reg=4 (null) C
+ 0x0000 - 0x002e reg=5 (null) S
+ 0x0000 - 0x002e reg=6 (null) I
+ 0x0000 - 0x002e reg=7 (null) F
+ 0x0000 - 0x002e reg=8 (null) J
+ 0x0000 - 0x002e reg=10 (null) D
+ 0x0000 - 0x002e reg=12 (null) Ljava/lang/String;
+
+ #11 : (in Linvokecustom/InvokeCustom2;)
+ name : 'targetMethodTest3'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+004e30: |[004e30] invokecustom.InvokeCustom2.targetMethodTest3:()V
+004e40: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004e44: 1a01 7300 |0002: const-string v1, "targetMethodTest3 from InvokeCustom" // string@0073
+004e48: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004e4e: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=58
+ 0x0007 line=59
+ locals :
+
+ #12 : (in Linvokecustom/InvokeCustom2;)
+ name : 'targetMethodTest5'
+ type : '(III)I'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 3
+ outs : 2
+ insns size : 83 16-bit code units
+004e50: |[004e50] invokecustom.InvokeCustom2.targetMethodTest5:(III)I
+004e60: 9000 0405 |0000: add-int v0, v4, v5
+004e64: 6201 1000 |0002: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004e68: 2202 1700 |0004: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+004e6c: 7010 b400 0200 |0006: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004e72: 1a03 7800 |0009: const-string v3, "targetMethodTest5 " // string@0078
+004e76: 6e20 ba00 3200 |000b: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004e7c: 0c02 |000e: move-result-object v2
+004e7e: 6e20 b700 4200 |000f: invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004e84: 0c02 |0012: move-result-object v2
+004e86: 1a03 0300 |0013: const-string v3, " + " // string@0003
+004e8a: 6e20 ba00 3200 |0015: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004e90: 0c02 |0018: move-result-object v2
+004e92: 6e20 b700 5200 |0019: invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004e98: 0c02 |001c: move-result-object v2
+004e9a: 1a03 0400 |001d: const-string v3, " = " // string@0004
+004e9e: 6e20 ba00 3200 |001f: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004ea4: 0c02 |0022: move-result-object v2
+004ea6: 6e20 b700 0200 |0023: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004eac: 0c02 |0026: move-result-object v2
+004eae: 6e10 bb00 0200 |0027: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004eb4: 0c02 |002a: move-result-object v2
+004eb6: 6e20 b100 2100 |002b: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004ebc: 3260 2400 |002e: if-eq v0, v6, 0052 // +0024
+004ec0: 6201 1000 |0030: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004ec4: 2202 1700 |0032: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+004ec8: 7010 b400 0200 |0034: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004ece: 1a03 1300 |0037: const-string v3, "Failed " // string@0013
+004ed2: 6e20 ba00 3200 |0039: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004ed8: 0c02 |003c: move-result-object v2
+004eda: 6e20 b700 0200 |003d: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004ee0: 0c02 |0040: move-result-object v2
+004ee2: 1a03 0100 |0041: const-string v3, " != " // string@0001
+004ee6: 6e20 ba00 3200 |0043: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004eec: 0c02 |0046: move-result-object v2
+004eee: 6e20 b700 6200 |0047: invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+004ef4: 0c02 |004a: move-result-object v2
+004ef6: 6e10 bb00 0200 |004b: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004efc: 0c02 |004e: move-result-object v2
+004efe: 6e20 b100 2100 |004f: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004f04: 0f00 |0052: return v0
+ catches : (none)
+ positions :
+ 0x0000 line=68
+ 0x0002 line=69
+ 0x002e line=70
+ 0x0030 line=71
+ 0x0052 line=73
+ locals :
+ 0x0000 - 0x0053 reg=4 (null) I
+ 0x0000 - 0x0053 reg=5 (null) I
+ 0x0000 - 0x0053 reg=6 (null) I
+
+ #13 : (in Linvokecustom/InvokeCustom2;)
+ name : 'targetMethodTest6'
+ type : '(JJJ)J'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 6
+ outs : 3
+ insns size : 85 16-bit code units
+004f08: |[004f08] invokecustom.InvokeCustom2.targetMethodTest6:(JJJ)J
+004f18: 9b00 0608 |0000: add-long v0, v6, v8
+004f1c: 6202 1000 |0002: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004f20: 2203 1700 |0004: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+004f24: 7010 b400 0300 |0006: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004f2a: 1a04 7b00 |0009: const-string v4, "targetMethodTest6 " // string@007b
+004f2e: 6e20 ba00 4300 |000b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004f34: 0c03 |000e: move-result-object v3
+004f36: 6e30 b800 6307 |000f: invoke-virtual {v3, v6, v7}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004f3c: 0c03 |0012: move-result-object v3
+004f3e: 1a04 0300 |0013: const-string v4, " + " // string@0003
+004f42: 6e20 ba00 4300 |0015: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004f48: 0c03 |0018: move-result-object v3
+004f4a: 6e30 b800 8309 |0019: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004f50: 0c03 |001c: move-result-object v3
+004f52: 1a04 0400 |001d: const-string v4, " = " // string@0004
+004f56: 6e20 ba00 4300 |001f: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004f5c: 0c03 |0022: move-result-object v3
+004f5e: 6e30 b800 0301 |0023: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004f64: 0c03 |0026: move-result-object v3
+004f66: 6e10 bb00 0300 |0027: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004f6c: 0c03 |002a: move-result-object v3
+004f6e: 6e20 b100 3200 |002b: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004f74: 3102 000a |002e: cmp-long v2, v0, v10
+004f78: 3802 2400 |0030: if-eqz v2, 0054 // +0024
+004f7c: 6202 1000 |0032: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004f80: 2203 1700 |0034: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+004f84: 7010 b400 0300 |0036: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004f8a: 1a04 1300 |0039: const-string v4, "Failed " // string@0013
+004f8e: 6e20 ba00 4300 |003b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004f94: 0c03 |003e: move-result-object v3
+004f96: 6e30 b800 0301 |003f: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004f9c: 0c03 |0042: move-result-object v3
+004f9e: 1a04 0100 |0043: const-string v4, " != " // string@0001
+004fa2: 6e20 ba00 4300 |0045: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004fa8: 0c03 |0048: move-result-object v3
+004faa: 6e30 b800 a30b |0049: invoke-virtual {v3, v10, v11}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+004fb0: 0c03 |004c: move-result-object v3
+004fb2: 6e10 bb00 0300 |004d: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+004fb8: 0c03 |0050: move-result-object v3
+004fba: 6e20 b100 3200 |0051: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+004fc0: 1000 |0054: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=77
+ 0x0002 line=78
+ 0x002e line=79
+ 0x0032 line=80
+ 0x0054 line=82
+ locals :
+ 0x0000 - 0x0055 reg=6 (null) J
+ 0x0000 - 0x0055 reg=8 (null) J
+ 0x0000 - 0x0055 reg=10 (null) J
+
+ #14 : (in Linvokecustom/InvokeCustom2;)
+ name : 'targetMethodTest7'
+ type : '(FFD)D'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 10
+ ins : 4
+ outs : 3
+ insns size : 86 16-bit code units
+004fc4: |[004fc4] invokecustom.InvokeCustom2.targetMethodTest7:(FFD)D
+004fd4: a800 0607 |0000: mul-float v0, v6, v7
+004fd8: 8900 |0002: float-to-double v0, v0
+004fda: 6202 1000 |0003: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+004fde: 2203 1700 |0005: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+004fe2: 7010 b400 0300 |0007: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+004fe8: 1a04 7e00 |000a: const-string v4, "targetMethodTest7 " // string@007e
+004fec: 6e20 ba00 4300 |000c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+004ff2: 0c03 |000f: move-result-object v3
+004ff4: 6e20 b600 6300 |0010: invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+004ffa: 0c03 |0013: move-result-object v3
+004ffc: 1a04 0200 |0014: const-string v4, " * " // string@0002
+005000: 6e20 ba00 4300 |0016: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005006: 0c03 |0019: move-result-object v3
+005008: 6e20 b600 7300 |001a: invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00500e: 0c03 |001d: move-result-object v3
+005010: 1a04 0400 |001e: const-string v4, " = " // string@0004
+005014: 6e20 ba00 4300 |0020: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00501a: 0c03 |0023: move-result-object v3
+00501c: 6e30 b500 0301 |0024: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+005022: 0c03 |0027: move-result-object v3
+005024: 6e10 bb00 0300 |0028: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00502a: 0c03 |002b: move-result-object v3
+00502c: 6e20 b100 3200 |002c: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005032: 2f02 0008 |002f: cmpl-double v2, v0, v8
+005036: 3802 2400 |0031: if-eqz v2, 0055 // +0024
+00503a: 6202 1000 |0033: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00503e: 2203 1700 |0035: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+005042: 7010 b400 0300 |0037: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005048: 1a04 1300 |003a: const-string v4, "Failed " // string@0013
+00504c: 6e20 ba00 4300 |003c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005052: 0c03 |003f: move-result-object v3
+005054: 6e30 b500 0301 |0040: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+00505a: 0c03 |0043: move-result-object v3
+00505c: 1a04 0100 |0044: const-string v4, " != " // string@0001
+005060: 6e20 ba00 4300 |0046: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005066: 0c03 |0049: move-result-object v3
+005068: 6e30 b500 8309 |004a: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+00506e: 0c03 |004d: move-result-object v3
+005070: 6e10 bb00 0300 |004e: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005076: 0c03 |0051: move-result-object v3
+005078: 6e20 b100 3200 |0052: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00507e: 1000 |0055: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=86
+ 0x0003 line=87
+ 0x002f line=88
+ 0x0033 line=89
+ 0x0055 line=91
+ locals :
+ 0x0000 - 0x0056 reg=6 (null) F
+ 0x0000 - 0x0056 reg=7 (null) F
+ 0x0000 - 0x0056 reg=8 (null) D
+
+ #15 : (in Linvokecustom/InvokeCustom2;)
+ name : 'targetMethodTest8'
+ type : '(Ljava/lang/String;)V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 25 16-bit code units
+005080: |[005080] invokecustom.InvokeCustom2.targetMethodTest8:(Ljava/lang/String;)V
+005090: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005094: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005098: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00509e: 1a02 8000 |0007: const-string v2, "targetMethodTest8 " // string@0080
+0050a2: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0050a8: 0c01 |000c: move-result-object v1
+0050aa: 6e20 ba00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0050b0: 0c01 |0010: move-result-object v1
+0050b2: 6e10 bb00 0100 |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0050b8: 0c01 |0014: move-result-object v1
+0050ba: 6e20 b100 1000 |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0050c0: 0e00 |0018: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=95
+ 0x0018 line=96
+ locals :
+ 0x0000 - 0x0019 reg=3 (null) Ljava/lang/String;
+
+ #16 : (in Linvokecustom/InvokeCustom2;)
+ name : 'targetMethodTest9'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+0050c4: |[0050c4] invokecustom.InvokeCustom2.targetMethodTest9:()V
+0050d4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0050d8: 1a01 8200 |0002: const-string v1, "targetMethodTest9()" // string@0082
+0050dc: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0050e2: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=129
+ 0x0007 line=130
+ locals :
+
+ #17 : (in Linvokecustom/InvokeCustom2;)
+ name : 'test2'
+ type : '()V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 11
+ ins : 0
+ outs : 11
+ insns size : 27 16-bit code units
+0050e4: |[0050e4] invokecustom.InvokeCustom2.test2:()V
+0050f4: 1210 |0000: const/4 v0, #int 1 // #1
+0050f6: 1301 7f00 |0001: const/16 v1, #int 127 // #7f
+0050fa: 1302 6300 |0003: const/16 v2, #int 99 // #63
+0050fe: 1303 0004 |0005: const/16 v3, #int 1024 // #400
+005102: 1404 40e2 0100 |0007: const v4, #float 1.72999e-40 // #0001e240
+005108: 1405 9a99 993f |000a: const v5, #float 1.2 // #3f99999a
+00510e: 1706 15cd 5b07 |000d: const-wide/32 v6, #float 1.6536e-34 // #075bcd15
+005114: 1808 b6fa f8b0 4819 0c40 |0010: const-wide v8, #double 3.51235 // #400c1948b0f8fab6
+00511e: 1a0a 4300 |0015: const-string v10, "String" // string@0043
+005122: fd0b 0300 0000 |0017: invoke-custom/range {v0, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10}, call_site@0003
+005128: 0e00 |001a: return-void
+ catches : (none)
+ positions :
+ locals :
+
+ Virtual methods -
+ #0 : (in Linvokecustom/InvokeCustom2;)
+ name : 'helperMethodTest9'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 27 16-bit code units
+00512c: |[00512c] invokecustom.InvokeCustom2.helperMethodTest9:()V
+00513c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005140: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005144: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00514a: 1a02 6400 |0007: const-string v2, "helperMethodTest9 in " // string@0064
+00514e: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005154: 0c01 |000c: move-result-object v1
+005156: 1c02 0e00 |000d: const-class v2, Linvokecustom/InvokeCustom; // type@000e
+00515a: 6e20 b900 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+005160: 0c01 |0012: move-result-object v1
+005162: 6e10 bb00 0100 |0013: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005168: 0c01 |0016: move-result-object v1
+00516a: 6e20 b100 1000 |0017: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005170: 0e00 |001a: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=125
+ 0x001a line=126
+ locals :
+ 0x0000 - 0x001b reg=3 this Linvokecustom/InvokeCustom2;
+
+ #1 : (in Linvokecustom/InvokeCustom2;)
+ name : 'run'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+005174: |[005174] invokecustom.InvokeCustom2.run:()V
+005184: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005188: 1a01 6e00 |0002: const-string v1, "run() for Test9" // string@006e
+00518c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005192: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=133
+ 0x0007 line=134
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom2;
+
+ #2 : (in Linvokecustom/InvokeCustom2;)
+ name : 'targetMethodTest4'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+005194: |[005194] invokecustom.InvokeCustom2.targetMethodTest4:()V
+0051a4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0051a8: 1a01 7500 |0002: const-string v1, "targetMethodTest4 from InvokeCustom (oops!)" // string@0075
+0051ac: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0051b2: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=64
+ 0x0007 line=65
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom2;
+
+ source_file_idx : 25 (InvokeCustom.java)
+
+Class #3 -
+ Class descriptor : 'Linvokecustom/InvokeCustom3;'
+ Access flags : 0x0001 (PUBLIC)
+ Superclass : 'Linvokecustom/Super;'
+ Interfaces -
+ #0 : 'Ljava/lang/Runnable;'
+ Static fields -
+ #0 : (in Linvokecustom/InvokeCustom3;)
+ name : 'staticFieldTest9'
+ type : 'I'
+ access : 0x000a (PRIVATE STATIC)
+ Instance fields -
+ #0 : (in Linvokecustom/InvokeCustom3;)
+ name : 'fieldTest9'
+ type : 'F'
+ access : 0x0002 (PRIVATE)
+ Direct methods -
+ #0 : (in Linvokecustom/InvokeCustom3;)
+ name : '<clinit>'
+ type : '()V'
+ access : 0x10008 (STATIC CONSTRUCTOR)
+ code -
+ registers : 1
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+0051b4: |[0051b4] invokecustom.InvokeCustom3.<clinit>:()V
+0051c4: 1200 |0000: const/4 v0, #int 0 // #0
+0051c6: 6700 0f00 |0001: sput v0, Linvokecustom/InvokeCustom;.staticFieldTest9:I // field@000f
+0051ca: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=98
+ locals :
+
+ #1 : (in Linvokecustom/InvokeCustom3;)
+ name : '<init>'
+ type : '()V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 2
+ ins : 1
+ outs : 1
+ insns size : 7 16-bit code units
+0051cc: |[0051cc] invokecustom.InvokeCustom3.<init>:()V
+0051dc: 7010 a800 0100 |0000: invoke-direct {v1}, Linvokecustom/Super;.<init>:()V // method@00a8
+0051e2: 1200 |0003: const/4 v0, #int 0 // #0
+0051e4: 5910 0e00 |0004: iput v0, v1, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+0051e8: 0e00 |0006: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=35
+ 0x0003 line=111
+ 0x0006 line=35
+ locals :
+ 0x0000 - 0x0007 reg=1 this Linvokecustom/InvokeCustom3;
+
+ #2 : (in Linvokecustom/InvokeCustom3;)
+ name : '<init>'
+ type : '(I)V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 5
+ ins : 2
+ outs : 2
+ insns size : 37 16-bit code units
+0051ec: |[0051ec] invokecustom.InvokeCustom3.<init>:(I)V
+0051fc: 7010 a800 0300 |0000: invoke-direct {v3}, Linvokecustom/Super;.<init>:()V // method@00a8
+005202: 1200 |0003: const/4 v0, #int 0 // #0
+005204: 5930 0e00 |0004: iput v0, v3, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+005208: 6200 1000 |0006: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00520c: 2201 1700 |0008: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005210: 7010 b400 0100 |000a: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005216: 1a02 1800 |000d: const-string v2, "InvokeCustom.<init>(" // string@0018
+00521a: 6e20 ba00 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005220: 0c01 |0012: move-result-object v1
+005222: 6e20 b700 4100 |0013: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005228: 0c01 |0016: move-result-object v1
+00522a: 1a02 0700 |0017: const-string v2, ")" // string@0007
+00522e: 6e20 ba00 2100 |0019: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005234: 0c01 |001c: move-result-object v1
+005236: 6e10 bb00 0100 |001d: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00523c: 0c01 |0020: move-result-object v1
+00523e: 6e20 b100 1000 |0021: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005244: 0e00 |0024: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=36
+ 0x0003 line=111
+ 0x0006 line=37
+ 0x0024 line=38
+ locals :
+ 0x0000 - 0x0025 reg=3 this Linvokecustom/InvokeCustom3;
+ 0x0000 - 0x0025 reg=4 (null) I
+
+ #3 : (in Linvokecustom/InvokeCustom3;)
+ name : 'bsmCreateCallSite'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 4
+ outs : 2
+ insns size : 36 16-bit code units
+005248: |[005248] invokecustom.InvokeCustom3.bsmCreateCallSite:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+005258: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00525c: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005260: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005266: 1a02 5600 |0007: const-string v2, "bsmCreateCallSite [" // string@0056
+00526a: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005270: 0c01 |000c: move-result-object v1
+005272: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+005278: 0c01 |0010: move-result-object v1
+00527a: 1a02 5200 |0011: const-string v2, "]" // string@0052
+00527e: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005284: 0c01 |0016: move-result-object v1
+005286: 6e10 bb00 0100 |0017: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00528c: 0c01 |001a: move-result-object v1
+00528e: 6e20 b100 1000 |001b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005294: 2200 1b00 |001e: new-instance v0, Ljava/lang/invoke/ConstantCallSite; // type@001b
+005298: 7020 bc00 6000 |0020: invoke-direct {v0, v6}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+00529e: 1100 |0023: return-object v0
+ catches : (none)
+ positions :
+ 0x0000 line=156
+ 0x001e line=157
+ locals :
+ 0x0000 - 0x0024 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0024 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0024 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0024 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+
+ #4 : (in Linvokecustom/InvokeCustom3;)
+ name : 'bsmLookupStatic'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 5
+ ins : 3
+ outs : 4
+ insns size : 29 16-bit code units
+0052a0: |[0052a0] invokecustom.InvokeCustom3.bsmLookupStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+0052b0: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0052b4: 1a01 5800 |0002: const-string v1, "bsmLookupStatic []" // string@0058
+0052b8: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0052be: 7100 c900 0000 |0007: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+0052c4: 0c00 |000a: move-result-object v0
+0052c6: 6e10 c800 0000 |000b: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+0052cc: 0c01 |000e: move-result-object v1
+0052ce: 6e40 c700 1043 |000f: invoke-virtual {v0, v1, v3, v4}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+0052d4: 0c00 |0012: move-result-object v0
+0052d6: 2201 1b00 |0013: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0052da: 6e20 bd00 4000 |0015: invoke-virtual {v0, v4}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+0052e0: 0c00 |0018: move-result-object v0
+0052e2: 7020 bc00 0100 |0019: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+0052e8: 1101 |001c: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=138
+ 0x0007 line=139
+ 0x000b line=140
+ 0x0013 line=141
+ locals :
+ 0x0000 - 0x001d reg=2 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x001d reg=3 (null) Ljava/lang/String;
+ 0x0000 - 0x001d reg=4 (null) Ljava/lang/invoke/MethodType;
+
+ #5 : (in Linvokecustom/InvokeCustom3;)
+ name : 'bsmLookupStaticWithExtraArgs'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 9
+ outs : 4
+ insns size : 82 16-bit code units
+0052ec: |[0052ec] invokecustom.InvokeCustom3.bsmLookupStaticWithExtraArgs:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;
+0052fc: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005300: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005304: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00530a: 1a02 5a00 |0007: const-string v2, "bsmLookupStaticWithExtraArgs [" // string@005a
+00530e: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005314: 0c01 |000c: move-result-object v1
+005316: 6e20 b700 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00531c: 0c01 |0010: move-result-object v1
+00531e: 1a02 0800 |0011: const-string v2, ", " // string@0008
+005322: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005328: 0c01 |0016: move-result-object v1
+00532a: 6e30 b800 7108 |0017: invoke-virtual {v1, v7, v8}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+005330: 0c01 |001a: move-result-object v1
+005332: 1a02 0800 |001b: const-string v2, ", " // string@0008
+005336: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00533c: 0c01 |0020: move-result-object v1
+00533e: 6e20 b600 9100 |0021: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+005344: 0c01 |0024: move-result-object v1
+005346: 1a02 0800 |0025: const-string v2, ", " // string@0008
+00534a: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005350: 0c01 |002a: move-result-object v1
+005352: 6e30 b500 a10b |002b: invoke-virtual {v1, v10, v11}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+005358: 0c01 |002e: move-result-object v1
+00535a: 1a02 5200 |002f: const-string v2, "]" // string@0052
+00535e: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005364: 0c01 |0034: move-result-object v1
+005366: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00536c: 0c01 |0038: move-result-object v1
+00536e: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005374: 7100 c900 0000 |003c: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+00537a: 0c00 |003f: move-result-object v0
+00537c: 6e10 c800 0000 |0040: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+005382: 0c01 |0043: move-result-object v1
+005384: 6e40 c700 1054 |0044: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+00538a: 0c00 |0047: move-result-object v0
+00538c: 2201 1b00 |0048: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+005390: 6e20 bd00 5000 |004a: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+005396: 0c00 |004d: move-result-object v0
+005398: 7020 bc00 0100 |004e: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+00539e: 1101 |0051: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=147
+ 0x003c line=148
+ 0x0040 line=149
+ 0x0048 line=150
+ locals :
+ 0x0000 - 0x0052 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0052 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0052 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0052 reg=6 (null) I
+ 0x0000 - 0x0052 reg=7 (null) J
+ 0x0000 - 0x0052 reg=9 (null) F
+ 0x0000 - 0x0052 reg=10 (null) D
+
+ #6 : (in Linvokecustom/InvokeCustom3;)
+ name : 'bsmLookupTest9'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 13
+ ins : 10
+ outs : 4
+ insns size : 135 16-bit code units
+0053a0: |[0053a0] invokecustom.InvokeCustom3.bsmLookupTest9:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+0053b0: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0053b4: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+0053b8: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0053be: 1a02 5c00 |0007: const-string v2, "bsmLookupTest9 [" // string@005c
+0053c2: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0053c8: 0c01 |000c: move-result-object v1
+0053ca: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0053d0: 0c01 |0010: move-result-object v1
+0053d2: 1a02 0800 |0011: const-string v2, ", " // string@0008
+0053d6: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0053dc: 0c01 |0016: move-result-object v1
+0053de: 6e20 b900 7100 |0017: invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0053e4: 0c01 |001a: move-result-object v1
+0053e6: 1a02 0800 |001b: const-string v2, ", " // string@0008
+0053ea: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0053f0: 0c01 |0020: move-result-object v1
+0053f2: 6e20 b900 8100 |0021: invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0053f8: 0c01 |0024: move-result-object v1
+0053fa: 1a02 0800 |0025: const-string v2, ", " // string@0008
+0053fe: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005404: 0c01 |002a: move-result-object v1
+005406: 6e20 b900 9100 |002b: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+00540c: 0c01 |002e: move-result-object v1
+00540e: 1a02 5200 |002f: const-string v2, "]" // string@0052
+005412: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005418: 0c01 |0034: move-result-object v1
+00541a: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005420: 0c01 |0038: move-result-object v1
+005422: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005428: 6200 1000 |003c: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00542c: 2201 1700 |003e: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005430: 7010 b400 0100 |0040: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005436: 6e20 ba00 4100 |0043: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00543c: 0c01 |0046: move-result-object v1
+00543e: 1a02 0000 |0047: const-string v2, " " // string@0000
+005442: 6e20 ba00 2100 |0049: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005448: 0c01 |004c: move-result-object v1
+00544a: 6e20 b900 5100 |004d: invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+005450: 0c01 |0050: move-result-object v1
+005452: 6e10 bb00 0100 |0051: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005458: 0c01 |0054: move-result-object v1
+00545a: 6e20 b100 1000 |0055: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005460: 7120 9b00 7600 |0058: invoke-static {v6, v7}, Linvokecustom/InvokeCustom;.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009b
+005466: 2200 0e00 |005b: new-instance v0, Linvokecustom/InvokeCustom; // type@000e
+00546a: 7010 9400 0000 |005d: invoke-direct {v0}, Linvokecustom/InvokeCustom;.<init>:()V // method@0094
+005470: 6f30 9a00 8009 |0060: invoke-super {v0, v8, v9}, Linvokecustom/InvokeCustom;.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009a
+005476: fa20 c300 0a00 1c00 |0063: invoke-polymorphic {v10, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00c3, proto@001c
+00547e: 1230 |0067: const/4 v0, #int 3 // #3
+005480: fa20 c300 0b00 0500 |0068: invoke-polymorphic {v11, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)Linvokecustom/InvokeCustom; // method@00c3, proto@0005
+005488: 0c00 |006c: move-result-object v0
+00548a: fa20 be00 0c00 1c00 |006d: invoke-polymorphic {v12, v0}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00be, proto@001c
+005492: 7100 c900 0000 |0071: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+005498: 0c00 |0074: move-result-object v0
+00549a: 6e10 c800 0000 |0075: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+0054a0: 0c01 |0078: move-result-object v1
+0054a2: 6e40 c700 1054 |0079: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+0054a8: 0c00 |007c: move-result-object v0
+0054aa: 2201 1b00 |007d: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0054ae: 6e20 bd00 5000 |007f: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+0054b4: 0c00 |0082: move-result-object v0
+0054b6: 7020 bc00 0100 |0083: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+0054bc: 1101 |0086: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=166
+ 0x003c line=168
+ 0x0058 line=171
+ 0x005b line=172
+ 0x0060 line=173
+ 0x0063 line=176
+ 0x0067 line=178
+ 0x006d line=179
+ 0x0071 line=181
+ 0x0075 line=182
+ 0x007d line=183
+ locals :
+ 0x0000 - 0x0087 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0087 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0087 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0087 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=9 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=10 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=11 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=12 (null) Ljava/lang/invoke/MethodHandle;
+
+ #7 : (in Linvokecustom/InvokeCustom3;)
+ name : 'checkFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x0002 (PRIVATE)
+ code -
+ registers : 9
+ ins : 3
+ outs : 3
+ insns size : 82 16-bit code units
+0054c0: |[0054c0] invokecustom.InvokeCustom3.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+0054d0: 1405 0ff0 6a20 |0000: const v5, #float 1.99e-19 // #206af00f
+0054d6: fa20 c300 6700 0100 |0003: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+0054de: 0a00 |0007: move-result v0
+0054e0: fa30 c300 6805 1d00 |0008: invoke-polymorphic {v8, v6, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;F)V // method@00c3, proto@001d
+0054e8: fa20 c300 6700 0100 |000c: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+0054f0: 0a01 |0010: move-result v1
+0054f2: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0054f6: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0054fa: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005500: 1a04 5e00 |0018: const-string v4, "checkFieldTest9: old " // string@005e
+005504: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00550a: 0c03 |001d: move-result-object v3
+00550c: 6e20 b600 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+005512: 0c00 |0021: move-result-object v0
+005514: 1a03 0600 |0022: const-string v3, " new " // string@0006
+005518: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00551e: 0c00 |0027: move-result-object v0
+005520: 6e20 b600 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+005526: 0c00 |002b: move-result-object v0
+005528: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+00552c: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005532: 0c00 |0031: move-result-object v0
+005534: 6e20 b600 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00553a: 0c00 |0035: move-result-object v0
+00553c: 1a03 0000 |0036: const-string v3, " " // string@0000
+005540: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005546: 0c00 |003b: move-result-object v0
+005548: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00554e: 0c00 |003f: move-result-object v0
+005550: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+005556: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00555a: 2d00 0105 |0045: cmpl-float v0, v1, v5
+00555e: 3900 0800 |0047: if-nez v0, 004f // +0008
+005562: 1a00 4000 |0049: const-string v0, "OK" // string@0040
+005566: 6e20 b100 0200 |004b: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00556c: 0e00 |004e: return-void
+00556e: 1a00 1000 |004f: const-string v0, "ERROR" // string@0010
+005572: 28fa |0051: goto 004b // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=116
+ 0x0008 line=117
+ 0x000c line=118
+ 0x0011 line=119
+ 0x0043 line=121
+ 0x004e line=122
+ 0x004f line=121
+ locals :
+ 0x0000 - 0x0052 reg=6 this Linvokecustom/InvokeCustom3;
+ 0x0000 - 0x0052 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0052 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+
+ #8 : (in Linvokecustom/InvokeCustom3;)
+ name : 'checkStaticFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 8
+ ins : 2
+ outs : 2
+ insns size : 80 16-bit code units
+005574: |[005574] invokecustom.InvokeCustom3.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+005584: 1405 1032 5476 |0000: const v5, #float 1.07596e+33 // #76543210
+00558a: fa10 c300 0600 0200 |0003: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+005592: 0a00 |0007: move-result v0
+005594: fa20 c300 5700 1a00 |0008: invoke-polymorphic {v7, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)V // method@00c3, proto@001a
+00559c: fa10 c300 0600 0200 |000c: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+0055a4: 0a01 |0010: move-result v1
+0055a6: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0055aa: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0055ae: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0055b4: 1a04 6000 |0018: const-string v4, "checkStaticFieldTest9: old " // string@0060
+0055b8: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0055be: 0c03 |001d: move-result-object v3
+0055c0: 6e20 b700 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0055c6: 0c00 |0021: move-result-object v0
+0055c8: 1a03 0600 |0022: const-string v3, " new " // string@0006
+0055cc: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0055d2: 0c00 |0027: move-result-object v0
+0055d4: 6e20 b700 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0055da: 0c00 |002b: move-result-object v0
+0055dc: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+0055e0: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0055e6: 0c00 |0031: move-result-object v0
+0055e8: 6e20 b700 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0055ee: 0c00 |0035: move-result-object v0
+0055f0: 1a03 0000 |0036: const-string v3, " " // string@0000
+0055f4: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0055fa: 0c00 |003b: move-result-object v0
+0055fc: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005602: 0c00 |003f: move-result-object v0
+005604: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+00560a: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00560e: 3351 0800 |0045: if-ne v1, v5, 004d // +0008
+005612: 1a00 4000 |0047: const-string v0, "OK" // string@0040
+005616: 6e20 b100 0200 |0049: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00561c: 0e00 |004c: return-void
+00561e: 1a00 1000 |004d: const-string v0, "ERROR" // string@0010
+005622: 28fa |004f: goto 0049 // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=103
+ 0x0008 line=104
+ 0x000c line=105
+ 0x0011 line=106
+ 0x0043 line=108
+ 0x004c line=109
+ 0x004d line=108
+ locals :
+ 0x0000 - 0x0050 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0050 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+
+ #9 : (in Linvokecustom/InvokeCustom3;)
+ name : 'targetMethodTest1'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+005624: |[005624] invokecustom.InvokeCustom3.targetMethodTest1:()V
+005634: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005638: 1a01 1500 |0002: const-string v1, "Hello World!" // string@0015
+00563c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005642: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=41
+ 0x0007 line=42
+ locals :
+
+ #10 : (in Linvokecustom/InvokeCustom3;)
+ name : 'targetMethodTest2'
+ type : '(ZBCSIFJDLjava/lang/String;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 13
+ ins : 11
+ outs : 3
+ insns size : 46 16-bit code units
+005644: |[005644] invokecustom.InvokeCustom3.targetMethodTest2:(ZBCSIFJDLjava/lang/String;)V
+005654: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005658: 6e20 b200 2000 |0002: invoke-virtual {v0, v2}, Ljava/io/PrintStream;.println:(Z)V // method@00b2
+00565e: 6200 1000 |0005: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005662: 6e20 af00 3000 |0007: invoke-virtual {v0, v3}, Ljava/io/PrintStream;.println:(I)V // method@00af
+005668: 6200 1000 |000a: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00566c: 6e20 ac00 4000 |000c: invoke-virtual {v0, v4}, Ljava/io/PrintStream;.println:(C)V // method@00ac
+005672: 6200 1000 |000f: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005676: 6e20 af00 5000 |0011: invoke-virtual {v0, v5}, Ljava/io/PrintStream;.println:(I)V // method@00af
+00567c: 6200 1000 |0014: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005680: 6e20 af00 6000 |0016: invoke-virtual {v0, v6}, Ljava/io/PrintStream;.println:(I)V // method@00af
+005686: 6200 1000 |0019: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00568a: 6e20 ae00 7000 |001b: invoke-virtual {v0, v7}, Ljava/io/PrintStream;.println:(F)V // method@00ae
+005690: 6200 1000 |001e: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005694: 6e30 b000 8009 |0020: invoke-virtual {v0, v8, v9}, Ljava/io/PrintStream;.println:(J)V // method@00b0
+00569a: 6200 1000 |0023: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00569e: 6e30 ad00 a00b |0025: invoke-virtual {v0, v10, v11}, Ljava/io/PrintStream;.println:(D)V // method@00ad
+0056a4: 6200 1000 |0028: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0056a8: 6e20 b100 c000 |002a: invoke-virtual {v0, v12}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0056ae: 0e00 |002d: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=46
+ 0x0005 line=47
+ 0x000a line=48
+ 0x000f line=49
+ 0x0014 line=50
+ 0x0019 line=51
+ 0x001e line=52
+ 0x0023 line=53
+ 0x0028 line=54
+ 0x002d line=55
+ locals :
+ 0x0000 - 0x002e reg=2 (null) Z
+ 0x0000 - 0x002e reg=3 (null) B
+ 0x0000 - 0x002e reg=4 (null) C
+ 0x0000 - 0x002e reg=5 (null) S
+ 0x0000 - 0x002e reg=6 (null) I
+ 0x0000 - 0x002e reg=7 (null) F
+ 0x0000 - 0x002e reg=8 (null) J
+ 0x0000 - 0x002e reg=10 (null) D
+ 0x0000 - 0x002e reg=12 (null) Ljava/lang/String;
+
+ #11 : (in Linvokecustom/InvokeCustom3;)
+ name : 'targetMethodTest3'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+0056b0: |[0056b0] invokecustom.InvokeCustom3.targetMethodTest3:()V
+0056c0: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0056c4: 1a01 7300 |0002: const-string v1, "targetMethodTest3 from InvokeCustom" // string@0073
+0056c8: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0056ce: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=58
+ 0x0007 line=59
+ locals :
+
+ #12 : (in Linvokecustom/InvokeCustom3;)
+ name : 'targetMethodTest5'
+ type : '(III)I'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 3
+ outs : 2
+ insns size : 83 16-bit code units
+0056d0: |[0056d0] invokecustom.InvokeCustom3.targetMethodTest5:(III)I
+0056e0: 9000 0405 |0000: add-int v0, v4, v5
+0056e4: 6201 1000 |0002: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0056e8: 2202 1700 |0004: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+0056ec: 7010 b400 0200 |0006: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0056f2: 1a03 7800 |0009: const-string v3, "targetMethodTest5 " // string@0078
+0056f6: 6e20 ba00 3200 |000b: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0056fc: 0c02 |000e: move-result-object v2
+0056fe: 6e20 b700 4200 |000f: invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005704: 0c02 |0012: move-result-object v2
+005706: 1a03 0300 |0013: const-string v3, " + " // string@0003
+00570a: 6e20 ba00 3200 |0015: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005710: 0c02 |0018: move-result-object v2
+005712: 6e20 b700 5200 |0019: invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005718: 0c02 |001c: move-result-object v2
+00571a: 1a03 0400 |001d: const-string v3, " = " // string@0004
+00571e: 6e20 ba00 3200 |001f: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005724: 0c02 |0022: move-result-object v2
+005726: 6e20 b700 0200 |0023: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00572c: 0c02 |0026: move-result-object v2
+00572e: 6e10 bb00 0200 |0027: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005734: 0c02 |002a: move-result-object v2
+005736: 6e20 b100 2100 |002b: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00573c: 3260 2400 |002e: if-eq v0, v6, 0052 // +0024
+005740: 6201 1000 |0030: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005744: 2202 1700 |0032: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+005748: 7010 b400 0200 |0034: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00574e: 1a03 1300 |0037: const-string v3, "Failed " // string@0013
+005752: 6e20 ba00 3200 |0039: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005758: 0c02 |003c: move-result-object v2
+00575a: 6e20 b700 0200 |003d: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005760: 0c02 |0040: move-result-object v2
+005762: 1a03 0100 |0041: const-string v3, " != " // string@0001
+005766: 6e20 ba00 3200 |0043: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00576c: 0c02 |0046: move-result-object v2
+00576e: 6e20 b700 6200 |0047: invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005774: 0c02 |004a: move-result-object v2
+005776: 6e10 bb00 0200 |004b: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00577c: 0c02 |004e: move-result-object v2
+00577e: 6e20 b100 2100 |004f: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005784: 0f00 |0052: return v0
+ catches : (none)
+ positions :
+ 0x0000 line=68
+ 0x0002 line=69
+ 0x002e line=70
+ 0x0030 line=71
+ 0x0052 line=73
+ locals :
+ 0x0000 - 0x0053 reg=4 (null) I
+ 0x0000 - 0x0053 reg=5 (null) I
+ 0x0000 - 0x0053 reg=6 (null) I
+
+ #13 : (in Linvokecustom/InvokeCustom3;)
+ name : 'targetMethodTest6'
+ type : '(JJJ)J'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 6
+ outs : 3
+ insns size : 85 16-bit code units
+005788: |[005788] invokecustom.InvokeCustom3.targetMethodTest6:(JJJ)J
+005798: 9b00 0608 |0000: add-long v0, v6, v8
+00579c: 6202 1000 |0002: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0057a0: 2203 1700 |0004: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0057a4: 7010 b400 0300 |0006: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0057aa: 1a04 7b00 |0009: const-string v4, "targetMethodTest6 " // string@007b
+0057ae: 6e20 ba00 4300 |000b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0057b4: 0c03 |000e: move-result-object v3
+0057b6: 6e30 b800 6307 |000f: invoke-virtual {v3, v6, v7}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0057bc: 0c03 |0012: move-result-object v3
+0057be: 1a04 0300 |0013: const-string v4, " + " // string@0003
+0057c2: 6e20 ba00 4300 |0015: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0057c8: 0c03 |0018: move-result-object v3
+0057ca: 6e30 b800 8309 |0019: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0057d0: 0c03 |001c: move-result-object v3
+0057d2: 1a04 0400 |001d: const-string v4, " = " // string@0004
+0057d6: 6e20 ba00 4300 |001f: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0057dc: 0c03 |0022: move-result-object v3
+0057de: 6e30 b800 0301 |0023: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0057e4: 0c03 |0026: move-result-object v3
+0057e6: 6e10 bb00 0300 |0027: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0057ec: 0c03 |002a: move-result-object v3
+0057ee: 6e20 b100 3200 |002b: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0057f4: 3102 000a |002e: cmp-long v2, v0, v10
+0057f8: 3802 2400 |0030: if-eqz v2, 0054 // +0024
+0057fc: 6202 1000 |0032: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005800: 2203 1700 |0034: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+005804: 7010 b400 0300 |0036: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00580a: 1a04 1300 |0039: const-string v4, "Failed " // string@0013
+00580e: 6e20 ba00 4300 |003b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005814: 0c03 |003e: move-result-object v3
+005816: 6e30 b800 0301 |003f: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+00581c: 0c03 |0042: move-result-object v3
+00581e: 1a04 0100 |0043: const-string v4, " != " // string@0001
+005822: 6e20 ba00 4300 |0045: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005828: 0c03 |0048: move-result-object v3
+00582a: 6e30 b800 a30b |0049: invoke-virtual {v3, v10, v11}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+005830: 0c03 |004c: move-result-object v3
+005832: 6e10 bb00 0300 |004d: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005838: 0c03 |0050: move-result-object v3
+00583a: 6e20 b100 3200 |0051: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005840: 1000 |0054: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=77
+ 0x0002 line=78
+ 0x002e line=79
+ 0x0032 line=80
+ 0x0054 line=82
+ locals :
+ 0x0000 - 0x0055 reg=6 (null) J
+ 0x0000 - 0x0055 reg=8 (null) J
+ 0x0000 - 0x0055 reg=10 (null) J
+
+ #14 : (in Linvokecustom/InvokeCustom3;)
+ name : 'targetMethodTest7'
+ type : '(FFD)D'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 10
+ ins : 4
+ outs : 3
+ insns size : 86 16-bit code units
+005844: |[005844] invokecustom.InvokeCustom3.targetMethodTest7:(FFD)D
+005854: a800 0607 |0000: mul-float v0, v6, v7
+005858: 8900 |0002: float-to-double v0, v0
+00585a: 6202 1000 |0003: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00585e: 2203 1700 |0005: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+005862: 7010 b400 0300 |0007: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005868: 1a04 7e00 |000a: const-string v4, "targetMethodTest7 " // string@007e
+00586c: 6e20 ba00 4300 |000c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005872: 0c03 |000f: move-result-object v3
+005874: 6e20 b600 6300 |0010: invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00587a: 0c03 |0013: move-result-object v3
+00587c: 1a04 0200 |0014: const-string v4, " * " // string@0002
+005880: 6e20 ba00 4300 |0016: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005886: 0c03 |0019: move-result-object v3
+005888: 6e20 b600 7300 |001a: invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00588e: 0c03 |001d: move-result-object v3
+005890: 1a04 0400 |001e: const-string v4, " = " // string@0004
+005894: 6e20 ba00 4300 |0020: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00589a: 0c03 |0023: move-result-object v3
+00589c: 6e30 b500 0301 |0024: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+0058a2: 0c03 |0027: move-result-object v3
+0058a4: 6e10 bb00 0300 |0028: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0058aa: 0c03 |002b: move-result-object v3
+0058ac: 6e20 b100 3200 |002c: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0058b2: 2f02 0008 |002f: cmpl-double v2, v0, v8
+0058b6: 3802 2400 |0031: if-eqz v2, 0055 // +0024
+0058ba: 6202 1000 |0033: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0058be: 2203 1700 |0035: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0058c2: 7010 b400 0300 |0037: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0058c8: 1a04 1300 |003a: const-string v4, "Failed " // string@0013
+0058cc: 6e20 ba00 4300 |003c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0058d2: 0c03 |003f: move-result-object v3
+0058d4: 6e30 b500 0301 |0040: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+0058da: 0c03 |0043: move-result-object v3
+0058dc: 1a04 0100 |0044: const-string v4, " != " // string@0001
+0058e0: 6e20 ba00 4300 |0046: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0058e6: 0c03 |0049: move-result-object v3
+0058e8: 6e30 b500 8309 |004a: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+0058ee: 0c03 |004d: move-result-object v3
+0058f0: 6e10 bb00 0300 |004e: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0058f6: 0c03 |0051: move-result-object v3
+0058f8: 6e20 b100 3200 |0052: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0058fe: 1000 |0055: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=86
+ 0x0003 line=87
+ 0x002f line=88
+ 0x0033 line=89
+ 0x0055 line=91
+ locals :
+ 0x0000 - 0x0056 reg=6 (null) F
+ 0x0000 - 0x0056 reg=7 (null) F
+ 0x0000 - 0x0056 reg=8 (null) D
+
+ #15 : (in Linvokecustom/InvokeCustom3;)
+ name : 'targetMethodTest8'
+ type : '(Ljava/lang/String;)V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 25 16-bit code units
+005900: |[005900] invokecustom.InvokeCustom3.targetMethodTest8:(Ljava/lang/String;)V
+005910: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005914: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005918: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00591e: 1a02 8000 |0007: const-string v2, "targetMethodTest8 " // string@0080
+005922: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005928: 0c01 |000c: move-result-object v1
+00592a: 6e20 ba00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005930: 0c01 |0010: move-result-object v1
+005932: 6e10 bb00 0100 |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005938: 0c01 |0014: move-result-object v1
+00593a: 6e20 b100 1000 |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005940: 0e00 |0018: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=95
+ 0x0018 line=96
+ locals :
+ 0x0000 - 0x0019 reg=3 (null) Ljava/lang/String;
+
+ #16 : (in Linvokecustom/InvokeCustom3;)
+ name : 'targetMethodTest9'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+005944: |[005944] invokecustom.InvokeCustom3.targetMethodTest9:()V
+005954: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005958: 1a01 8200 |0002: const-string v1, "targetMethodTest9()" // string@0082
+00595c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005962: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=129
+ 0x0007 line=130
+ locals :
+
+ #17 : (in Linvokecustom/InvokeCustom3;)
+ name : 'test3'
+ type : '()V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 0
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+005964: |[005964] invokecustom.InvokeCustom3.test3:()V
+005974: fc00 0500 0000 |0000: invoke-custom {}, call_site@0005
+00597a: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ locals :
+
+ Virtual methods -
+ #0 : (in Linvokecustom/InvokeCustom3;)
+ name : 'helperMethodTest9'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 27 16-bit code units
+00597c: |[00597c] invokecustom.InvokeCustom3.helperMethodTest9:()V
+00598c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005990: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005994: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00599a: 1a02 6400 |0007: const-string v2, "helperMethodTest9 in " // string@0064
+00599e: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0059a4: 0c01 |000c: move-result-object v1
+0059a6: 1c02 0e00 |000d: const-class v2, Linvokecustom/InvokeCustom; // type@000e
+0059aa: 6e20 b900 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0059b0: 0c01 |0012: move-result-object v1
+0059b2: 6e10 bb00 0100 |0013: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0059b8: 0c01 |0016: move-result-object v1
+0059ba: 6e20 b100 1000 |0017: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0059c0: 0e00 |001a: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=125
+ 0x001a line=126
+ locals :
+ 0x0000 - 0x001b reg=3 this Linvokecustom/InvokeCustom3;
+
+ #1 : (in Linvokecustom/InvokeCustom3;)
+ name : 'run'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+0059c4: |[0059c4] invokecustom.InvokeCustom3.run:()V
+0059d4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0059d8: 1a01 6e00 |0002: const-string v1, "run() for Test9" // string@006e
+0059dc: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0059e2: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=133
+ 0x0007 line=134
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom3;
+
+ #2 : (in Linvokecustom/InvokeCustom3;)
+ name : 'targetMethodTest4'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+0059e4: |[0059e4] invokecustom.InvokeCustom3.targetMethodTest4:()V
+0059f4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0059f8: 1a01 7500 |0002: const-string v1, "targetMethodTest4 from InvokeCustom (oops!)" // string@0075
+0059fc: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005a02: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=64
+ 0x0007 line=65
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom3;
+
+ source_file_idx : 25 (InvokeCustom.java)
+
+Class #4 -
+ Class descriptor : 'Linvokecustom/InvokeCustom5;'
+ Access flags : 0x0001 (PUBLIC)
+ Superclass : 'Linvokecustom/Super;'
+ Interfaces -
+ #0 : 'Ljava/lang/Runnable;'
+ Static fields -
+ #0 : (in Linvokecustom/InvokeCustom5;)
+ name : 'staticFieldTest9'
+ type : 'I'
+ access : 0x000a (PRIVATE STATIC)
+ Instance fields -
+ #0 : (in Linvokecustom/InvokeCustom5;)
+ name : 'fieldTest9'
+ type : 'F'
+ access : 0x0002 (PRIVATE)
+ Direct methods -
+ #0 : (in Linvokecustom/InvokeCustom5;)
+ name : '<clinit>'
+ type : '()V'
+ access : 0x10008 (STATIC CONSTRUCTOR)
+ code -
+ registers : 1
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+005a04: |[005a04] invokecustom.InvokeCustom5.<clinit>:()V
+005a14: 1200 |0000: const/4 v0, #int 0 // #0
+005a16: 6700 0f00 |0001: sput v0, Linvokecustom/InvokeCustom;.staticFieldTest9:I // field@000f
+005a1a: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=98
+ locals :
+
+ #1 : (in Linvokecustom/InvokeCustom5;)
+ name : '<init>'
+ type : '()V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 2
+ ins : 1
+ outs : 1
+ insns size : 7 16-bit code units
+005a1c: |[005a1c] invokecustom.InvokeCustom5.<init>:()V
+005a2c: 7010 a800 0100 |0000: invoke-direct {v1}, Linvokecustom/Super;.<init>:()V // method@00a8
+005a32: 1200 |0003: const/4 v0, #int 0 // #0
+005a34: 5910 0e00 |0004: iput v0, v1, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+005a38: 0e00 |0006: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=35
+ 0x0003 line=111
+ 0x0006 line=35
+ locals :
+ 0x0000 - 0x0007 reg=1 this Linvokecustom/InvokeCustom5;
+
+ #2 : (in Linvokecustom/InvokeCustom5;)
+ name : '<init>'
+ type : '(I)V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 5
+ ins : 2
+ outs : 2
+ insns size : 37 16-bit code units
+005a3c: |[005a3c] invokecustom.InvokeCustom5.<init>:(I)V
+005a4c: 7010 a800 0300 |0000: invoke-direct {v3}, Linvokecustom/Super;.<init>:()V // method@00a8
+005a52: 1200 |0003: const/4 v0, #int 0 // #0
+005a54: 5930 0e00 |0004: iput v0, v3, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+005a58: 6200 1000 |0006: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005a5c: 2201 1700 |0008: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005a60: 7010 b400 0100 |000a: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005a66: 1a02 1800 |000d: const-string v2, "InvokeCustom.<init>(" // string@0018
+005a6a: 6e20 ba00 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005a70: 0c01 |0012: move-result-object v1
+005a72: 6e20 b700 4100 |0013: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005a78: 0c01 |0016: move-result-object v1
+005a7a: 1a02 0700 |0017: const-string v2, ")" // string@0007
+005a7e: 6e20 ba00 2100 |0019: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005a84: 0c01 |001c: move-result-object v1
+005a86: 6e10 bb00 0100 |001d: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005a8c: 0c01 |0020: move-result-object v1
+005a8e: 6e20 b100 1000 |0021: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005a94: 0e00 |0024: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=36
+ 0x0003 line=111
+ 0x0006 line=37
+ 0x0024 line=38
+ locals :
+ 0x0000 - 0x0025 reg=3 this Linvokecustom/InvokeCustom5;
+ 0x0000 - 0x0025 reg=4 (null) I
+
+ #3 : (in Linvokecustom/InvokeCustom5;)
+ name : 'bsmCreateCallSite'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 4
+ outs : 2
+ insns size : 36 16-bit code units
+005a98: |[005a98] invokecustom.InvokeCustom5.bsmCreateCallSite:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+005aa8: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005aac: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005ab0: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005ab6: 1a02 5600 |0007: const-string v2, "bsmCreateCallSite [" // string@0056
+005aba: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005ac0: 0c01 |000c: move-result-object v1
+005ac2: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+005ac8: 0c01 |0010: move-result-object v1
+005aca: 1a02 5200 |0011: const-string v2, "]" // string@0052
+005ace: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005ad4: 0c01 |0016: move-result-object v1
+005ad6: 6e10 bb00 0100 |0017: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005adc: 0c01 |001a: move-result-object v1
+005ade: 6e20 b100 1000 |001b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005ae4: 2200 1b00 |001e: new-instance v0, Ljava/lang/invoke/ConstantCallSite; // type@001b
+005ae8: 7020 bc00 6000 |0020: invoke-direct {v0, v6}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+005aee: 1100 |0023: return-object v0
+ catches : (none)
+ positions :
+ 0x0000 line=156
+ 0x001e line=157
+ locals :
+ 0x0000 - 0x0024 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0024 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0024 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0024 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+
+ #4 : (in Linvokecustom/InvokeCustom5;)
+ name : 'bsmLookupStatic'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 5
+ ins : 3
+ outs : 4
+ insns size : 29 16-bit code units
+005af0: |[005af0] invokecustom.InvokeCustom5.bsmLookupStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+005b00: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005b04: 1a01 5800 |0002: const-string v1, "bsmLookupStatic []" // string@0058
+005b08: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005b0e: 7100 c900 0000 |0007: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+005b14: 0c00 |000a: move-result-object v0
+005b16: 6e10 c800 0000 |000b: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+005b1c: 0c01 |000e: move-result-object v1
+005b1e: 6e40 c700 1043 |000f: invoke-virtual {v0, v1, v3, v4}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+005b24: 0c00 |0012: move-result-object v0
+005b26: 2201 1b00 |0013: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+005b2a: 6e20 bd00 4000 |0015: invoke-virtual {v0, v4}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+005b30: 0c00 |0018: move-result-object v0
+005b32: 7020 bc00 0100 |0019: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+005b38: 1101 |001c: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=138
+ 0x0007 line=139
+ 0x000b line=140
+ 0x0013 line=141
+ locals :
+ 0x0000 - 0x001d reg=2 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x001d reg=3 (null) Ljava/lang/String;
+ 0x0000 - 0x001d reg=4 (null) Ljava/lang/invoke/MethodType;
+
+ #5 : (in Linvokecustom/InvokeCustom5;)
+ name : 'bsmLookupStaticWithExtraArgs'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 9
+ outs : 4
+ insns size : 82 16-bit code units
+005b3c: |[005b3c] invokecustom.InvokeCustom5.bsmLookupStaticWithExtraArgs:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;
+005b4c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005b50: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005b54: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005b5a: 1a02 5a00 |0007: const-string v2, "bsmLookupStaticWithExtraArgs [" // string@005a
+005b5e: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005b64: 0c01 |000c: move-result-object v1
+005b66: 6e20 b700 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005b6c: 0c01 |0010: move-result-object v1
+005b6e: 1a02 0800 |0011: const-string v2, ", " // string@0008
+005b72: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005b78: 0c01 |0016: move-result-object v1
+005b7a: 6e30 b800 7108 |0017: invoke-virtual {v1, v7, v8}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+005b80: 0c01 |001a: move-result-object v1
+005b82: 1a02 0800 |001b: const-string v2, ", " // string@0008
+005b86: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005b8c: 0c01 |0020: move-result-object v1
+005b8e: 6e20 b600 9100 |0021: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+005b94: 0c01 |0024: move-result-object v1
+005b96: 1a02 0800 |0025: const-string v2, ", " // string@0008
+005b9a: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005ba0: 0c01 |002a: move-result-object v1
+005ba2: 6e30 b500 a10b |002b: invoke-virtual {v1, v10, v11}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+005ba8: 0c01 |002e: move-result-object v1
+005baa: 1a02 5200 |002f: const-string v2, "]" // string@0052
+005bae: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005bb4: 0c01 |0034: move-result-object v1
+005bb6: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005bbc: 0c01 |0038: move-result-object v1
+005bbe: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005bc4: 7100 c900 0000 |003c: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+005bca: 0c00 |003f: move-result-object v0
+005bcc: 6e10 c800 0000 |0040: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+005bd2: 0c01 |0043: move-result-object v1
+005bd4: 6e40 c700 1054 |0044: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+005bda: 0c00 |0047: move-result-object v0
+005bdc: 2201 1b00 |0048: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+005be0: 6e20 bd00 5000 |004a: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+005be6: 0c00 |004d: move-result-object v0
+005be8: 7020 bc00 0100 |004e: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+005bee: 1101 |0051: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=147
+ 0x003c line=148
+ 0x0040 line=149
+ 0x0048 line=150
+ locals :
+ 0x0000 - 0x0052 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0052 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0052 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0052 reg=6 (null) I
+ 0x0000 - 0x0052 reg=7 (null) J
+ 0x0000 - 0x0052 reg=9 (null) F
+ 0x0000 - 0x0052 reg=10 (null) D
+
+ #6 : (in Linvokecustom/InvokeCustom5;)
+ name : 'bsmLookupTest9'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 13
+ ins : 10
+ outs : 4
+ insns size : 135 16-bit code units
+005bf0: |[005bf0] invokecustom.InvokeCustom5.bsmLookupTest9:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+005c00: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005c04: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005c08: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005c0e: 1a02 5c00 |0007: const-string v2, "bsmLookupTest9 [" // string@005c
+005c12: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005c18: 0c01 |000c: move-result-object v1
+005c1a: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+005c20: 0c01 |0010: move-result-object v1
+005c22: 1a02 0800 |0011: const-string v2, ", " // string@0008
+005c26: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005c2c: 0c01 |0016: move-result-object v1
+005c2e: 6e20 b900 7100 |0017: invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+005c34: 0c01 |001a: move-result-object v1
+005c36: 1a02 0800 |001b: const-string v2, ", " // string@0008
+005c3a: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005c40: 0c01 |0020: move-result-object v1
+005c42: 6e20 b900 8100 |0021: invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+005c48: 0c01 |0024: move-result-object v1
+005c4a: 1a02 0800 |0025: const-string v2, ", " // string@0008
+005c4e: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005c54: 0c01 |002a: move-result-object v1
+005c56: 6e20 b900 9100 |002b: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+005c5c: 0c01 |002e: move-result-object v1
+005c5e: 1a02 5200 |002f: const-string v2, "]" // string@0052
+005c62: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005c68: 0c01 |0034: move-result-object v1
+005c6a: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005c70: 0c01 |0038: move-result-object v1
+005c72: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005c78: 6200 1000 |003c: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005c7c: 2201 1700 |003e: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+005c80: 7010 b400 0100 |0040: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005c86: 6e20 ba00 4100 |0043: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005c8c: 0c01 |0046: move-result-object v1
+005c8e: 1a02 0000 |0047: const-string v2, " " // string@0000
+005c92: 6e20 ba00 2100 |0049: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005c98: 0c01 |004c: move-result-object v1
+005c9a: 6e20 b900 5100 |004d: invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+005ca0: 0c01 |0050: move-result-object v1
+005ca2: 6e10 bb00 0100 |0051: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005ca8: 0c01 |0054: move-result-object v1
+005caa: 6e20 b100 1000 |0055: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005cb0: 7120 9b00 7600 |0058: invoke-static {v6, v7}, Linvokecustom/InvokeCustom;.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009b
+005cb6: 2200 0e00 |005b: new-instance v0, Linvokecustom/InvokeCustom; // type@000e
+005cba: 7010 9400 0000 |005d: invoke-direct {v0}, Linvokecustom/InvokeCustom;.<init>:()V // method@0094
+005cc0: 6f30 9a00 8009 |0060: invoke-super {v0, v8, v9}, Linvokecustom/InvokeCustom;.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009a
+005cc6: fa20 c300 0a00 1c00 |0063: invoke-polymorphic {v10, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00c3, proto@001c
+005cce: 1230 |0067: const/4 v0, #int 3 // #3
+005cd0: fa20 c300 0b00 0500 |0068: invoke-polymorphic {v11, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)Linvokecustom/InvokeCustom; // method@00c3, proto@0005
+005cd8: 0c00 |006c: move-result-object v0
+005cda: fa20 be00 0c00 1c00 |006d: invoke-polymorphic {v12, v0}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00be, proto@001c
+005ce2: 7100 c900 0000 |0071: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+005ce8: 0c00 |0074: move-result-object v0
+005cea: 6e10 c800 0000 |0075: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+005cf0: 0c01 |0078: move-result-object v1
+005cf2: 6e40 c700 1054 |0079: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+005cf8: 0c00 |007c: move-result-object v0
+005cfa: 2201 1b00 |007d: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+005cfe: 6e20 bd00 5000 |007f: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+005d04: 0c00 |0082: move-result-object v0
+005d06: 7020 bc00 0100 |0083: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+005d0c: 1101 |0086: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=166
+ 0x003c line=168
+ 0x0058 line=171
+ 0x005b line=172
+ 0x0060 line=173
+ 0x0063 line=176
+ 0x0067 line=178
+ 0x006d line=179
+ 0x0071 line=181
+ 0x0075 line=182
+ 0x007d line=183
+ locals :
+ 0x0000 - 0x0087 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0087 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0087 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0087 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=9 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=10 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=11 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=12 (null) Ljava/lang/invoke/MethodHandle;
+
+ #7 : (in Linvokecustom/InvokeCustom5;)
+ name : 'checkFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x0002 (PRIVATE)
+ code -
+ registers : 9
+ ins : 3
+ outs : 3
+ insns size : 82 16-bit code units
+005d10: |[005d10] invokecustom.InvokeCustom5.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+005d20: 1405 0ff0 6a20 |0000: const v5, #float 1.99e-19 // #206af00f
+005d26: fa20 c300 6700 0100 |0003: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+005d2e: 0a00 |0007: move-result v0
+005d30: fa30 c300 6805 1d00 |0008: invoke-polymorphic {v8, v6, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;F)V // method@00c3, proto@001d
+005d38: fa20 c300 6700 0100 |000c: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+005d40: 0a01 |0010: move-result v1
+005d42: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005d46: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+005d4a: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005d50: 1a04 5e00 |0018: const-string v4, "checkFieldTest9: old " // string@005e
+005d54: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005d5a: 0c03 |001d: move-result-object v3
+005d5c: 6e20 b600 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+005d62: 0c00 |0021: move-result-object v0
+005d64: 1a03 0600 |0022: const-string v3, " new " // string@0006
+005d68: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005d6e: 0c00 |0027: move-result-object v0
+005d70: 6e20 b600 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+005d76: 0c00 |002b: move-result-object v0
+005d78: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+005d7c: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005d82: 0c00 |0031: move-result-object v0
+005d84: 6e20 b600 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+005d8a: 0c00 |0035: move-result-object v0
+005d8c: 1a03 0000 |0036: const-string v3, " " // string@0000
+005d90: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005d96: 0c00 |003b: move-result-object v0
+005d98: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005d9e: 0c00 |003f: move-result-object v0
+005da0: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+005da6: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005daa: 2d00 0105 |0045: cmpl-float v0, v1, v5
+005dae: 3900 0800 |0047: if-nez v0, 004f // +0008
+005db2: 1a00 4000 |0049: const-string v0, "OK" // string@0040
+005db6: 6e20 b100 0200 |004b: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005dbc: 0e00 |004e: return-void
+005dbe: 1a00 1000 |004f: const-string v0, "ERROR" // string@0010
+005dc2: 28fa |0051: goto 004b // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=116
+ 0x0008 line=117
+ 0x000c line=118
+ 0x0011 line=119
+ 0x0043 line=121
+ 0x004e line=122
+ 0x004f line=121
+ locals :
+ 0x0000 - 0x0052 reg=6 this Linvokecustom/InvokeCustom5;
+ 0x0000 - 0x0052 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0052 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+
+ #8 : (in Linvokecustom/InvokeCustom5;)
+ name : 'checkStaticFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 8
+ ins : 2
+ outs : 2
+ insns size : 80 16-bit code units
+005dc4: |[005dc4] invokecustom.InvokeCustom5.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+005dd4: 1405 1032 5476 |0000: const v5, #float 1.07596e+33 // #76543210
+005dda: fa10 c300 0600 0200 |0003: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+005de2: 0a00 |0007: move-result v0
+005de4: fa20 c300 5700 1a00 |0008: invoke-polymorphic {v7, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)V // method@00c3, proto@001a
+005dec: fa10 c300 0600 0200 |000c: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+005df4: 0a01 |0010: move-result v1
+005df6: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005dfa: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+005dfe: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005e04: 1a04 6000 |0018: const-string v4, "checkStaticFieldTest9: old " // string@0060
+005e08: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005e0e: 0c03 |001d: move-result-object v3
+005e10: 6e20 b700 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005e16: 0c00 |0021: move-result-object v0
+005e18: 1a03 0600 |0022: const-string v3, " new " // string@0006
+005e1c: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005e22: 0c00 |0027: move-result-object v0
+005e24: 6e20 b700 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005e2a: 0c00 |002b: move-result-object v0
+005e2c: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+005e30: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005e36: 0c00 |0031: move-result-object v0
+005e38: 6e20 b700 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005e3e: 0c00 |0035: move-result-object v0
+005e40: 1a03 0000 |0036: const-string v3, " " // string@0000
+005e44: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005e4a: 0c00 |003b: move-result-object v0
+005e4c: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005e52: 0c00 |003f: move-result-object v0
+005e54: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+005e5a: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005e5e: 3351 0800 |0045: if-ne v1, v5, 004d // +0008
+005e62: 1a00 4000 |0047: const-string v0, "OK" // string@0040
+005e66: 6e20 b100 0200 |0049: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005e6c: 0e00 |004c: return-void
+005e6e: 1a00 1000 |004d: const-string v0, "ERROR" // string@0010
+005e72: 28fa |004f: goto 0049 // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=103
+ 0x0008 line=104
+ 0x000c line=105
+ 0x0011 line=106
+ 0x0043 line=108
+ 0x004c line=109
+ 0x004d line=108
+ locals :
+ 0x0000 - 0x0050 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0050 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+
+ #9 : (in Linvokecustom/InvokeCustom5;)
+ name : 'targetMethodTest1'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+005e74: |[005e74] invokecustom.InvokeCustom5.targetMethodTest1:()V
+005e84: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005e88: 1a01 1500 |0002: const-string v1, "Hello World!" // string@0015
+005e8c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005e92: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=41
+ 0x0007 line=42
+ locals :
+
+ #10 : (in Linvokecustom/InvokeCustom5;)
+ name : 'targetMethodTest2'
+ type : '(ZBCSIFJDLjava/lang/String;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 13
+ ins : 11
+ outs : 3
+ insns size : 46 16-bit code units
+005e94: |[005e94] invokecustom.InvokeCustom5.targetMethodTest2:(ZBCSIFJDLjava/lang/String;)V
+005ea4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005ea8: 6e20 b200 2000 |0002: invoke-virtual {v0, v2}, Ljava/io/PrintStream;.println:(Z)V // method@00b2
+005eae: 6200 1000 |0005: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005eb2: 6e20 af00 3000 |0007: invoke-virtual {v0, v3}, Ljava/io/PrintStream;.println:(I)V // method@00af
+005eb8: 6200 1000 |000a: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005ebc: 6e20 ac00 4000 |000c: invoke-virtual {v0, v4}, Ljava/io/PrintStream;.println:(C)V // method@00ac
+005ec2: 6200 1000 |000f: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005ec6: 6e20 af00 5000 |0011: invoke-virtual {v0, v5}, Ljava/io/PrintStream;.println:(I)V // method@00af
+005ecc: 6200 1000 |0014: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005ed0: 6e20 af00 6000 |0016: invoke-virtual {v0, v6}, Ljava/io/PrintStream;.println:(I)V // method@00af
+005ed6: 6200 1000 |0019: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005eda: 6e20 ae00 7000 |001b: invoke-virtual {v0, v7}, Ljava/io/PrintStream;.println:(F)V // method@00ae
+005ee0: 6200 1000 |001e: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005ee4: 6e30 b000 8009 |0020: invoke-virtual {v0, v8, v9}, Ljava/io/PrintStream;.println:(J)V // method@00b0
+005eea: 6200 1000 |0023: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005eee: 6e30 ad00 a00b |0025: invoke-virtual {v0, v10, v11}, Ljava/io/PrintStream;.println:(D)V // method@00ad
+005ef4: 6200 1000 |0028: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005ef8: 6e20 b100 c000 |002a: invoke-virtual {v0, v12}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005efe: 0e00 |002d: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=46
+ 0x0005 line=47
+ 0x000a line=48
+ 0x000f line=49
+ 0x0014 line=50
+ 0x0019 line=51
+ 0x001e line=52
+ 0x0023 line=53
+ 0x0028 line=54
+ 0x002d line=55
+ locals :
+ 0x0000 - 0x002e reg=2 (null) Z
+ 0x0000 - 0x002e reg=3 (null) B
+ 0x0000 - 0x002e reg=4 (null) C
+ 0x0000 - 0x002e reg=5 (null) S
+ 0x0000 - 0x002e reg=6 (null) I
+ 0x0000 - 0x002e reg=7 (null) F
+ 0x0000 - 0x002e reg=8 (null) J
+ 0x0000 - 0x002e reg=10 (null) D
+ 0x0000 - 0x002e reg=12 (null) Ljava/lang/String;
+
+ #11 : (in Linvokecustom/InvokeCustom5;)
+ name : 'targetMethodTest3'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+005f00: |[005f00] invokecustom.InvokeCustom5.targetMethodTest3:()V
+005f10: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005f14: 1a01 7300 |0002: const-string v1, "targetMethodTest3 from InvokeCustom" // string@0073
+005f18: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005f1e: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=58
+ 0x0007 line=59
+ locals :
+
+ #12 : (in Linvokecustom/InvokeCustom5;)
+ name : 'targetMethodTest5'
+ type : '(III)I'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 3
+ outs : 2
+ insns size : 83 16-bit code units
+005f20: |[005f20] invokecustom.InvokeCustom5.targetMethodTest5:(III)I
+005f30: 9000 0405 |0000: add-int v0, v4, v5
+005f34: 6201 1000 |0002: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005f38: 2202 1700 |0004: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+005f3c: 7010 b400 0200 |0006: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005f42: 1a03 7800 |0009: const-string v3, "targetMethodTest5 " // string@0078
+005f46: 6e20 ba00 3200 |000b: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005f4c: 0c02 |000e: move-result-object v2
+005f4e: 6e20 b700 4200 |000f: invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005f54: 0c02 |0012: move-result-object v2
+005f56: 1a03 0300 |0013: const-string v3, " + " // string@0003
+005f5a: 6e20 ba00 3200 |0015: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005f60: 0c02 |0018: move-result-object v2
+005f62: 6e20 b700 5200 |0019: invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005f68: 0c02 |001c: move-result-object v2
+005f6a: 1a03 0400 |001d: const-string v3, " = " // string@0004
+005f6e: 6e20 ba00 3200 |001f: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005f74: 0c02 |0022: move-result-object v2
+005f76: 6e20 b700 0200 |0023: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005f7c: 0c02 |0026: move-result-object v2
+005f7e: 6e10 bb00 0200 |0027: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005f84: 0c02 |002a: move-result-object v2
+005f86: 6e20 b100 2100 |002b: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005f8c: 3260 2400 |002e: if-eq v0, v6, 0052 // +0024
+005f90: 6201 1000 |0030: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005f94: 2202 1700 |0032: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+005f98: 7010 b400 0200 |0034: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005f9e: 1a03 1300 |0037: const-string v3, "Failed " // string@0013
+005fa2: 6e20 ba00 3200 |0039: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005fa8: 0c02 |003c: move-result-object v2
+005faa: 6e20 b700 0200 |003d: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005fb0: 0c02 |0040: move-result-object v2
+005fb2: 1a03 0100 |0041: const-string v3, " != " // string@0001
+005fb6: 6e20 ba00 3200 |0043: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+005fbc: 0c02 |0046: move-result-object v2
+005fbe: 6e20 b700 6200 |0047: invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+005fc4: 0c02 |004a: move-result-object v2
+005fc6: 6e10 bb00 0200 |004b: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+005fcc: 0c02 |004e: move-result-object v2
+005fce: 6e20 b100 2100 |004f: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+005fd4: 0f00 |0052: return v0
+ catches : (none)
+ positions :
+ 0x0000 line=68
+ 0x0002 line=69
+ 0x002e line=70
+ 0x0030 line=71
+ 0x0052 line=73
+ locals :
+ 0x0000 - 0x0053 reg=4 (null) I
+ 0x0000 - 0x0053 reg=5 (null) I
+ 0x0000 - 0x0053 reg=6 (null) I
+
+ #13 : (in Linvokecustom/InvokeCustom5;)
+ name : 'targetMethodTest6'
+ type : '(JJJ)J'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 6
+ outs : 3
+ insns size : 85 16-bit code units
+005fd8: |[005fd8] invokecustom.InvokeCustom5.targetMethodTest6:(JJJ)J
+005fe8: 9b00 0608 |0000: add-long v0, v6, v8
+005fec: 6202 1000 |0002: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+005ff0: 2203 1700 |0004: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+005ff4: 7010 b400 0300 |0006: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+005ffa: 1a04 7b00 |0009: const-string v4, "targetMethodTest6 " // string@007b
+005ffe: 6e20 ba00 4300 |000b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006004: 0c03 |000e: move-result-object v3
+006006: 6e30 b800 6307 |000f: invoke-virtual {v3, v6, v7}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+00600c: 0c03 |0012: move-result-object v3
+00600e: 1a04 0300 |0013: const-string v4, " + " // string@0003
+006012: 6e20 ba00 4300 |0015: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006018: 0c03 |0018: move-result-object v3
+00601a: 6e30 b800 8309 |0019: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+006020: 0c03 |001c: move-result-object v3
+006022: 1a04 0400 |001d: const-string v4, " = " // string@0004
+006026: 6e20 ba00 4300 |001f: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00602c: 0c03 |0022: move-result-object v3
+00602e: 6e30 b800 0301 |0023: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+006034: 0c03 |0026: move-result-object v3
+006036: 6e10 bb00 0300 |0027: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00603c: 0c03 |002a: move-result-object v3
+00603e: 6e20 b100 3200 |002b: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006044: 3102 000a |002e: cmp-long v2, v0, v10
+006048: 3802 2400 |0030: if-eqz v2, 0054 // +0024
+00604c: 6202 1000 |0032: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006050: 2203 1700 |0034: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+006054: 7010 b400 0300 |0036: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00605a: 1a04 1300 |0039: const-string v4, "Failed " // string@0013
+00605e: 6e20 ba00 4300 |003b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006064: 0c03 |003e: move-result-object v3
+006066: 6e30 b800 0301 |003f: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+00606c: 0c03 |0042: move-result-object v3
+00606e: 1a04 0100 |0043: const-string v4, " != " // string@0001
+006072: 6e20 ba00 4300 |0045: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006078: 0c03 |0048: move-result-object v3
+00607a: 6e30 b800 a30b |0049: invoke-virtual {v3, v10, v11}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+006080: 0c03 |004c: move-result-object v3
+006082: 6e10 bb00 0300 |004d: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006088: 0c03 |0050: move-result-object v3
+00608a: 6e20 b100 3200 |0051: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006090: 1000 |0054: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=77
+ 0x0002 line=78
+ 0x002e line=79
+ 0x0032 line=80
+ 0x0054 line=82
+ locals :
+ 0x0000 - 0x0055 reg=6 (null) J
+ 0x0000 - 0x0055 reg=8 (null) J
+ 0x0000 - 0x0055 reg=10 (null) J
+
+ #14 : (in Linvokecustom/InvokeCustom5;)
+ name : 'targetMethodTest7'
+ type : '(FFD)D'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 10
+ ins : 4
+ outs : 3
+ insns size : 86 16-bit code units
+006094: |[006094] invokecustom.InvokeCustom5.targetMethodTest7:(FFD)D
+0060a4: a800 0607 |0000: mul-float v0, v6, v7
+0060a8: 8900 |0002: float-to-double v0, v0
+0060aa: 6202 1000 |0003: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0060ae: 2203 1700 |0005: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0060b2: 7010 b400 0300 |0007: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0060b8: 1a04 7e00 |000a: const-string v4, "targetMethodTest7 " // string@007e
+0060bc: 6e20 ba00 4300 |000c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0060c2: 0c03 |000f: move-result-object v3
+0060c4: 6e20 b600 6300 |0010: invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+0060ca: 0c03 |0013: move-result-object v3
+0060cc: 1a04 0200 |0014: const-string v4, " * " // string@0002
+0060d0: 6e20 ba00 4300 |0016: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0060d6: 0c03 |0019: move-result-object v3
+0060d8: 6e20 b600 7300 |001a: invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+0060de: 0c03 |001d: move-result-object v3
+0060e0: 1a04 0400 |001e: const-string v4, " = " // string@0004
+0060e4: 6e20 ba00 4300 |0020: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0060ea: 0c03 |0023: move-result-object v3
+0060ec: 6e30 b500 0301 |0024: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+0060f2: 0c03 |0027: move-result-object v3
+0060f4: 6e10 bb00 0300 |0028: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0060fa: 0c03 |002b: move-result-object v3
+0060fc: 6e20 b100 3200 |002c: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006102: 2f02 0008 |002f: cmpl-double v2, v0, v8
+006106: 3802 2400 |0031: if-eqz v2, 0055 // +0024
+00610a: 6202 1000 |0033: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00610e: 2203 1700 |0035: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+006112: 7010 b400 0300 |0037: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006118: 1a04 1300 |003a: const-string v4, "Failed " // string@0013
+00611c: 6e20 ba00 4300 |003c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006122: 0c03 |003f: move-result-object v3
+006124: 6e30 b500 0301 |0040: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+00612a: 0c03 |0043: move-result-object v3
+00612c: 1a04 0100 |0044: const-string v4, " != " // string@0001
+006130: 6e20 ba00 4300 |0046: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006136: 0c03 |0049: move-result-object v3
+006138: 6e30 b500 8309 |004a: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+00613e: 0c03 |004d: move-result-object v3
+006140: 6e10 bb00 0300 |004e: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006146: 0c03 |0051: move-result-object v3
+006148: 6e20 b100 3200 |0052: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00614e: 1000 |0055: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=86
+ 0x0003 line=87
+ 0x002f line=88
+ 0x0033 line=89
+ 0x0055 line=91
+ locals :
+ 0x0000 - 0x0056 reg=6 (null) F
+ 0x0000 - 0x0056 reg=7 (null) F
+ 0x0000 - 0x0056 reg=8 (null) D
+
+ #15 : (in Linvokecustom/InvokeCustom5;)
+ name : 'targetMethodTest8'
+ type : '(Ljava/lang/String;)V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 25 16-bit code units
+006150: |[006150] invokecustom.InvokeCustom5.targetMethodTest8:(Ljava/lang/String;)V
+006160: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006164: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006168: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00616e: 1a02 8000 |0007: const-string v2, "targetMethodTest8 " // string@0080
+006172: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006178: 0c01 |000c: move-result-object v1
+00617a: 6e20 ba00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006180: 0c01 |0010: move-result-object v1
+006182: 6e10 bb00 0100 |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006188: 0c01 |0014: move-result-object v1
+00618a: 6e20 b100 1000 |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006190: 0e00 |0018: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=95
+ 0x0018 line=96
+ locals :
+ 0x0000 - 0x0019 reg=3 (null) Ljava/lang/String;
+
+ #16 : (in Linvokecustom/InvokeCustom5;)
+ name : 'targetMethodTest9'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+006194: |[006194] invokecustom.InvokeCustom5.targetMethodTest9:()V
+0061a4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0061a8: 1a01 8200 |0002: const-string v1, "targetMethodTest9()" // string@0082
+0061ac: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0061b2: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=129
+ 0x0007 line=130
+ locals :
+
+ #17 : (in Linvokecustom/InvokeCustom5;)
+ name : 'test5'
+ type : '()V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 4
+ ins : 0
+ outs : 3
+ insns size : 35 16-bit code units
+0061b4: |[0061b4] invokecustom.InvokeCustom5.test5:()V
+0061c4: 1300 e803 |0000: const/16 v0, #int 1000 // #3e8
+0061c8: 1301 65fc |0002: const/16 v1, #int -923 // #fc65
+0061cc: 1302 4d00 |0004: const/16 v2, #int 77 // #4d
+0061d0: fc30 0700 1002 |0006: invoke-custom {v0, v1, v2}, call_site@0007
+0061d6: 0a00 |0009: move-result v0
+0061d8: 6201 1000 |000a: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0061dc: 2202 1700 |000c: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+0061e0: 7010 b400 0200 |000e: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0061e6: 1a03 7900 |0011: const-string v3, "targetMethodTest5 returned: " // string@0079
+0061ea: 6e20 ba00 3200 |0013: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0061f0: 0c02 |0016: move-result-object v2
+0061f2: 6e20 b700 0200 |0017: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0061f8: 0c00 |001a: move-result-object v0
+0061fa: 6e10 bb00 0000 |001b: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006200: 0c00 |001e: move-result-object v0
+006202: 6e20 b100 0100 |001f: invoke-virtual {v1, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006208: 0e00 |0022: return-void
+ catches : (none)
+ positions :
+ locals :
+
+ Virtual methods -
+ #0 : (in Linvokecustom/InvokeCustom5;)
+ name : 'helperMethodTest9'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 27 16-bit code units
+00620c: |[00620c] invokecustom.InvokeCustom5.helperMethodTest9:()V
+00621c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006220: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006224: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00622a: 1a02 6400 |0007: const-string v2, "helperMethodTest9 in " // string@0064
+00622e: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006234: 0c01 |000c: move-result-object v1
+006236: 1c02 0e00 |000d: const-class v2, Linvokecustom/InvokeCustom; // type@000e
+00623a: 6e20 b900 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006240: 0c01 |0012: move-result-object v1
+006242: 6e10 bb00 0100 |0013: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006248: 0c01 |0016: move-result-object v1
+00624a: 6e20 b100 1000 |0017: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006250: 0e00 |001a: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=125
+ 0x001a line=126
+ locals :
+ 0x0000 - 0x001b reg=3 this Linvokecustom/InvokeCustom5;
+
+ #1 : (in Linvokecustom/InvokeCustom5;)
+ name : 'run'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+006254: |[006254] invokecustom.InvokeCustom5.run:()V
+006264: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006268: 1a01 6e00 |0002: const-string v1, "run() for Test9" // string@006e
+00626c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006272: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=133
+ 0x0007 line=134
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom5;
+
+ #2 : (in Linvokecustom/InvokeCustom5;)
+ name : 'targetMethodTest4'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+006274: |[006274] invokecustom.InvokeCustom5.targetMethodTest4:()V
+006284: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006288: 1a01 7500 |0002: const-string v1, "targetMethodTest4 from InvokeCustom (oops!)" // string@0075
+00628c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006292: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=64
+ 0x0007 line=65
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom5;
+
+ source_file_idx : 25 (InvokeCustom.java)
+
+Class #5 -
+ Class descriptor : 'Linvokecustom/InvokeCustom6;'
+ Access flags : 0x0001 (PUBLIC)
+ Superclass : 'Linvokecustom/Super;'
+ Interfaces -
+ #0 : 'Ljava/lang/Runnable;'
+ Static fields -
+ #0 : (in Linvokecustom/InvokeCustom6;)
+ name : 'staticFieldTest9'
+ type : 'I'
+ access : 0x000a (PRIVATE STATIC)
+ Instance fields -
+ #0 : (in Linvokecustom/InvokeCustom6;)
+ name : 'fieldTest9'
+ type : 'F'
+ access : 0x0002 (PRIVATE)
+ Direct methods -
+ #0 : (in Linvokecustom/InvokeCustom6;)
+ name : '<clinit>'
+ type : '()V'
+ access : 0x10008 (STATIC CONSTRUCTOR)
+ code -
+ registers : 1
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+006294: |[006294] invokecustom.InvokeCustom6.<clinit>:()V
+0062a4: 1200 |0000: const/4 v0, #int 0 // #0
+0062a6: 6700 0f00 |0001: sput v0, Linvokecustom/InvokeCustom;.staticFieldTest9:I // field@000f
+0062aa: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=98
+ locals :
+
+ #1 : (in Linvokecustom/InvokeCustom6;)
+ name : '<init>'
+ type : '()V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 2
+ ins : 1
+ outs : 1
+ insns size : 7 16-bit code units
+0062ac: |[0062ac] invokecustom.InvokeCustom6.<init>:()V
+0062bc: 7010 a800 0100 |0000: invoke-direct {v1}, Linvokecustom/Super;.<init>:()V // method@00a8
+0062c2: 1200 |0003: const/4 v0, #int 0 // #0
+0062c4: 5910 0e00 |0004: iput v0, v1, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+0062c8: 0e00 |0006: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=35
+ 0x0003 line=111
+ 0x0006 line=35
+ locals :
+ 0x0000 - 0x0007 reg=1 this Linvokecustom/InvokeCustom6;
+
+ #2 : (in Linvokecustom/InvokeCustom6;)
+ name : '<init>'
+ type : '(I)V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 5
+ ins : 2
+ outs : 2
+ insns size : 37 16-bit code units
+0062cc: |[0062cc] invokecustom.InvokeCustom6.<init>:(I)V
+0062dc: 7010 a800 0300 |0000: invoke-direct {v3}, Linvokecustom/Super;.<init>:()V // method@00a8
+0062e2: 1200 |0003: const/4 v0, #int 0 // #0
+0062e4: 5930 0e00 |0004: iput v0, v3, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+0062e8: 6200 1000 |0006: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0062ec: 2201 1700 |0008: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+0062f0: 7010 b400 0100 |000a: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0062f6: 1a02 1800 |000d: const-string v2, "InvokeCustom.<init>(" // string@0018
+0062fa: 6e20 ba00 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006300: 0c01 |0012: move-result-object v1
+006302: 6e20 b700 4100 |0013: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+006308: 0c01 |0016: move-result-object v1
+00630a: 1a02 0700 |0017: const-string v2, ")" // string@0007
+00630e: 6e20 ba00 2100 |0019: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006314: 0c01 |001c: move-result-object v1
+006316: 6e10 bb00 0100 |001d: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00631c: 0c01 |0020: move-result-object v1
+00631e: 6e20 b100 1000 |0021: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006324: 0e00 |0024: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=36
+ 0x0003 line=111
+ 0x0006 line=37
+ 0x0024 line=38
+ locals :
+ 0x0000 - 0x0025 reg=3 this Linvokecustom/InvokeCustom6;
+ 0x0000 - 0x0025 reg=4 (null) I
+
+ #3 : (in Linvokecustom/InvokeCustom6;)
+ name : 'bsmCreateCallSite'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 4
+ outs : 2
+ insns size : 36 16-bit code units
+006328: |[006328] invokecustom.InvokeCustom6.bsmCreateCallSite:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+006338: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00633c: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006340: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006346: 1a02 5600 |0007: const-string v2, "bsmCreateCallSite [" // string@0056
+00634a: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006350: 0c01 |000c: move-result-object v1
+006352: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006358: 0c01 |0010: move-result-object v1
+00635a: 1a02 5200 |0011: const-string v2, "]" // string@0052
+00635e: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006364: 0c01 |0016: move-result-object v1
+006366: 6e10 bb00 0100 |0017: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00636c: 0c01 |001a: move-result-object v1
+00636e: 6e20 b100 1000 |001b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006374: 2200 1b00 |001e: new-instance v0, Ljava/lang/invoke/ConstantCallSite; // type@001b
+006378: 7020 bc00 6000 |0020: invoke-direct {v0, v6}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+00637e: 1100 |0023: return-object v0
+ catches : (none)
+ positions :
+ 0x0000 line=156
+ 0x001e line=157
+ locals :
+ 0x0000 - 0x0024 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0024 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0024 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0024 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+
+ #4 : (in Linvokecustom/InvokeCustom6;)
+ name : 'bsmLookupStatic'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 5
+ ins : 3
+ outs : 4
+ insns size : 29 16-bit code units
+006380: |[006380] invokecustom.InvokeCustom6.bsmLookupStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+006390: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006394: 1a01 5800 |0002: const-string v1, "bsmLookupStatic []" // string@0058
+006398: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00639e: 7100 c900 0000 |0007: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+0063a4: 0c00 |000a: move-result-object v0
+0063a6: 6e10 c800 0000 |000b: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+0063ac: 0c01 |000e: move-result-object v1
+0063ae: 6e40 c700 1043 |000f: invoke-virtual {v0, v1, v3, v4}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+0063b4: 0c00 |0012: move-result-object v0
+0063b6: 2201 1b00 |0013: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0063ba: 6e20 bd00 4000 |0015: invoke-virtual {v0, v4}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+0063c0: 0c00 |0018: move-result-object v0
+0063c2: 7020 bc00 0100 |0019: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+0063c8: 1101 |001c: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=138
+ 0x0007 line=139
+ 0x000b line=140
+ 0x0013 line=141
+ locals :
+ 0x0000 - 0x001d reg=2 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x001d reg=3 (null) Ljava/lang/String;
+ 0x0000 - 0x001d reg=4 (null) Ljava/lang/invoke/MethodType;
+
+ #5 : (in Linvokecustom/InvokeCustom6;)
+ name : 'bsmLookupStaticWithExtraArgs'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 9
+ outs : 4
+ insns size : 82 16-bit code units
+0063cc: |[0063cc] invokecustom.InvokeCustom6.bsmLookupStaticWithExtraArgs:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;
+0063dc: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0063e0: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+0063e4: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0063ea: 1a02 5a00 |0007: const-string v2, "bsmLookupStaticWithExtraArgs [" // string@005a
+0063ee: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0063f4: 0c01 |000c: move-result-object v1
+0063f6: 6e20 b700 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0063fc: 0c01 |0010: move-result-object v1
+0063fe: 1a02 0800 |0011: const-string v2, ", " // string@0008
+006402: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006408: 0c01 |0016: move-result-object v1
+00640a: 6e30 b800 7108 |0017: invoke-virtual {v1, v7, v8}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+006410: 0c01 |001a: move-result-object v1
+006412: 1a02 0800 |001b: const-string v2, ", " // string@0008
+006416: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00641c: 0c01 |0020: move-result-object v1
+00641e: 6e20 b600 9100 |0021: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+006424: 0c01 |0024: move-result-object v1
+006426: 1a02 0800 |0025: const-string v2, ", " // string@0008
+00642a: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006430: 0c01 |002a: move-result-object v1
+006432: 6e30 b500 a10b |002b: invoke-virtual {v1, v10, v11}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+006438: 0c01 |002e: move-result-object v1
+00643a: 1a02 5200 |002f: const-string v2, "]" // string@0052
+00643e: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006444: 0c01 |0034: move-result-object v1
+006446: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00644c: 0c01 |0038: move-result-object v1
+00644e: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006454: 7100 c900 0000 |003c: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+00645a: 0c00 |003f: move-result-object v0
+00645c: 6e10 c800 0000 |0040: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+006462: 0c01 |0043: move-result-object v1
+006464: 6e40 c700 1054 |0044: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+00646a: 0c00 |0047: move-result-object v0
+00646c: 2201 1b00 |0048: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+006470: 6e20 bd00 5000 |004a: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+006476: 0c00 |004d: move-result-object v0
+006478: 7020 bc00 0100 |004e: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+00647e: 1101 |0051: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=147
+ 0x003c line=148
+ 0x0040 line=149
+ 0x0048 line=150
+ locals :
+ 0x0000 - 0x0052 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0052 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0052 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0052 reg=6 (null) I
+ 0x0000 - 0x0052 reg=7 (null) J
+ 0x0000 - 0x0052 reg=9 (null) F
+ 0x0000 - 0x0052 reg=10 (null) D
+
+ #6 : (in Linvokecustom/InvokeCustom6;)
+ name : 'bsmLookupTest9'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 13
+ ins : 10
+ outs : 4
+ insns size : 135 16-bit code units
+006480: |[006480] invokecustom.InvokeCustom6.bsmLookupTest9:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+006490: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006494: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006498: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00649e: 1a02 5c00 |0007: const-string v2, "bsmLookupTest9 [" // string@005c
+0064a2: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0064a8: 0c01 |000c: move-result-object v1
+0064aa: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0064b0: 0c01 |0010: move-result-object v1
+0064b2: 1a02 0800 |0011: const-string v2, ", " // string@0008
+0064b6: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0064bc: 0c01 |0016: move-result-object v1
+0064be: 6e20 b900 7100 |0017: invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0064c4: 0c01 |001a: move-result-object v1
+0064c6: 1a02 0800 |001b: const-string v2, ", " // string@0008
+0064ca: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0064d0: 0c01 |0020: move-result-object v1
+0064d2: 6e20 b900 8100 |0021: invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0064d8: 0c01 |0024: move-result-object v1
+0064da: 1a02 0800 |0025: const-string v2, ", " // string@0008
+0064de: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0064e4: 0c01 |002a: move-result-object v1
+0064e6: 6e20 b900 9100 |002b: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0064ec: 0c01 |002e: move-result-object v1
+0064ee: 1a02 5200 |002f: const-string v2, "]" // string@0052
+0064f2: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0064f8: 0c01 |0034: move-result-object v1
+0064fa: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006500: 0c01 |0038: move-result-object v1
+006502: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006508: 6200 1000 |003c: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00650c: 2201 1700 |003e: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006510: 7010 b400 0100 |0040: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006516: 6e20 ba00 4100 |0043: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00651c: 0c01 |0046: move-result-object v1
+00651e: 1a02 0000 |0047: const-string v2, " " // string@0000
+006522: 6e20 ba00 2100 |0049: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006528: 0c01 |004c: move-result-object v1
+00652a: 6e20 b900 5100 |004d: invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006530: 0c01 |0050: move-result-object v1
+006532: 6e10 bb00 0100 |0051: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006538: 0c01 |0054: move-result-object v1
+00653a: 6e20 b100 1000 |0055: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006540: 7120 9b00 7600 |0058: invoke-static {v6, v7}, Linvokecustom/InvokeCustom;.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009b
+006546: 2200 0e00 |005b: new-instance v0, Linvokecustom/InvokeCustom; // type@000e
+00654a: 7010 9400 0000 |005d: invoke-direct {v0}, Linvokecustom/InvokeCustom;.<init>:()V // method@0094
+006550: 6f30 9a00 8009 |0060: invoke-super {v0, v8, v9}, Linvokecustom/InvokeCustom;.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009a
+006556: fa20 c300 0a00 1c00 |0063: invoke-polymorphic {v10, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00c3, proto@001c
+00655e: 1230 |0067: const/4 v0, #int 3 // #3
+006560: fa20 c300 0b00 0500 |0068: invoke-polymorphic {v11, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)Linvokecustom/InvokeCustom; // method@00c3, proto@0005
+006568: 0c00 |006c: move-result-object v0
+00656a: fa20 be00 0c00 1c00 |006d: invoke-polymorphic {v12, v0}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00be, proto@001c
+006572: 7100 c900 0000 |0071: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+006578: 0c00 |0074: move-result-object v0
+00657a: 6e10 c800 0000 |0075: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+006580: 0c01 |0078: move-result-object v1
+006582: 6e40 c700 1054 |0079: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+006588: 0c00 |007c: move-result-object v0
+00658a: 2201 1b00 |007d: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+00658e: 6e20 bd00 5000 |007f: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+006594: 0c00 |0082: move-result-object v0
+006596: 7020 bc00 0100 |0083: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+00659c: 1101 |0086: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=166
+ 0x003c line=168
+ 0x0058 line=171
+ 0x005b line=172
+ 0x0060 line=173
+ 0x0063 line=176
+ 0x0067 line=178
+ 0x006d line=179
+ 0x0071 line=181
+ 0x0075 line=182
+ 0x007d line=183
+ locals :
+ 0x0000 - 0x0087 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0087 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0087 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0087 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=9 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=10 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=11 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=12 (null) Ljava/lang/invoke/MethodHandle;
+
+ #7 : (in Linvokecustom/InvokeCustom6;)
+ name : 'checkFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x0002 (PRIVATE)
+ code -
+ registers : 9
+ ins : 3
+ outs : 3
+ insns size : 82 16-bit code units
+0065a0: |[0065a0] invokecustom.InvokeCustom6.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+0065b0: 1405 0ff0 6a20 |0000: const v5, #float 1.99e-19 // #206af00f
+0065b6: fa20 c300 6700 0100 |0003: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+0065be: 0a00 |0007: move-result v0
+0065c0: fa30 c300 6805 1d00 |0008: invoke-polymorphic {v8, v6, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;F)V // method@00c3, proto@001d
+0065c8: fa20 c300 6700 0100 |000c: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+0065d0: 0a01 |0010: move-result v1
+0065d2: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0065d6: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0065da: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0065e0: 1a04 5e00 |0018: const-string v4, "checkFieldTest9: old " // string@005e
+0065e4: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0065ea: 0c03 |001d: move-result-object v3
+0065ec: 6e20 b600 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+0065f2: 0c00 |0021: move-result-object v0
+0065f4: 1a03 0600 |0022: const-string v3, " new " // string@0006
+0065f8: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0065fe: 0c00 |0027: move-result-object v0
+006600: 6e20 b600 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+006606: 0c00 |002b: move-result-object v0
+006608: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+00660c: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006612: 0c00 |0031: move-result-object v0
+006614: 6e20 b600 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00661a: 0c00 |0035: move-result-object v0
+00661c: 1a03 0000 |0036: const-string v3, " " // string@0000
+006620: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006626: 0c00 |003b: move-result-object v0
+006628: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00662e: 0c00 |003f: move-result-object v0
+006630: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+006636: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00663a: 2d00 0105 |0045: cmpl-float v0, v1, v5
+00663e: 3900 0800 |0047: if-nez v0, 004f // +0008
+006642: 1a00 4000 |0049: const-string v0, "OK" // string@0040
+006646: 6e20 b100 0200 |004b: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00664c: 0e00 |004e: return-void
+00664e: 1a00 1000 |004f: const-string v0, "ERROR" // string@0010
+006652: 28fa |0051: goto 004b // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=116
+ 0x0008 line=117
+ 0x000c line=118
+ 0x0011 line=119
+ 0x0043 line=121
+ 0x004e line=122
+ 0x004f line=121
+ locals :
+ 0x0000 - 0x0052 reg=6 this Linvokecustom/InvokeCustom6;
+ 0x0000 - 0x0052 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0052 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+
+ #8 : (in Linvokecustom/InvokeCustom6;)
+ name : 'checkStaticFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 8
+ ins : 2
+ outs : 2
+ insns size : 80 16-bit code units
+006654: |[006654] invokecustom.InvokeCustom6.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+006664: 1405 1032 5476 |0000: const v5, #float 1.07596e+33 // #76543210
+00666a: fa10 c300 0600 0200 |0003: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+006672: 0a00 |0007: move-result v0
+006674: fa20 c300 5700 1a00 |0008: invoke-polymorphic {v7, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)V // method@00c3, proto@001a
+00667c: fa10 c300 0600 0200 |000c: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+006684: 0a01 |0010: move-result v1
+006686: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00668a: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+00668e: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006694: 1a04 6000 |0018: const-string v4, "checkStaticFieldTest9: old " // string@0060
+006698: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00669e: 0c03 |001d: move-result-object v3
+0066a0: 6e20 b700 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0066a6: 0c00 |0021: move-result-object v0
+0066a8: 1a03 0600 |0022: const-string v3, " new " // string@0006
+0066ac: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0066b2: 0c00 |0027: move-result-object v0
+0066b4: 6e20 b700 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0066ba: 0c00 |002b: move-result-object v0
+0066bc: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+0066c0: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0066c6: 0c00 |0031: move-result-object v0
+0066c8: 6e20 b700 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0066ce: 0c00 |0035: move-result-object v0
+0066d0: 1a03 0000 |0036: const-string v3, " " // string@0000
+0066d4: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0066da: 0c00 |003b: move-result-object v0
+0066dc: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0066e2: 0c00 |003f: move-result-object v0
+0066e4: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+0066ea: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0066ee: 3351 0800 |0045: if-ne v1, v5, 004d // +0008
+0066f2: 1a00 4000 |0047: const-string v0, "OK" // string@0040
+0066f6: 6e20 b100 0200 |0049: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0066fc: 0e00 |004c: return-void
+0066fe: 1a00 1000 |004d: const-string v0, "ERROR" // string@0010
+006702: 28fa |004f: goto 0049 // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=103
+ 0x0008 line=104
+ 0x000c line=105
+ 0x0011 line=106
+ 0x0043 line=108
+ 0x004c line=109
+ 0x004d line=108
+ locals :
+ 0x0000 - 0x0050 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0050 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+
+ #9 : (in Linvokecustom/InvokeCustom6;)
+ name : 'targetMethodTest1'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+006704: |[006704] invokecustom.InvokeCustom6.targetMethodTest1:()V
+006714: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006718: 1a01 1500 |0002: const-string v1, "Hello World!" // string@0015
+00671c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006722: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=41
+ 0x0007 line=42
+ locals :
+
+ #10 : (in Linvokecustom/InvokeCustom6;)
+ name : 'targetMethodTest2'
+ type : '(ZBCSIFJDLjava/lang/String;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 13
+ ins : 11
+ outs : 3
+ insns size : 46 16-bit code units
+006724: |[006724] invokecustom.InvokeCustom6.targetMethodTest2:(ZBCSIFJDLjava/lang/String;)V
+006734: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006738: 6e20 b200 2000 |0002: invoke-virtual {v0, v2}, Ljava/io/PrintStream;.println:(Z)V // method@00b2
+00673e: 6200 1000 |0005: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006742: 6e20 af00 3000 |0007: invoke-virtual {v0, v3}, Ljava/io/PrintStream;.println:(I)V // method@00af
+006748: 6200 1000 |000a: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00674c: 6e20 ac00 4000 |000c: invoke-virtual {v0, v4}, Ljava/io/PrintStream;.println:(C)V // method@00ac
+006752: 6200 1000 |000f: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006756: 6e20 af00 5000 |0011: invoke-virtual {v0, v5}, Ljava/io/PrintStream;.println:(I)V // method@00af
+00675c: 6200 1000 |0014: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006760: 6e20 af00 6000 |0016: invoke-virtual {v0, v6}, Ljava/io/PrintStream;.println:(I)V // method@00af
+006766: 6200 1000 |0019: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00676a: 6e20 ae00 7000 |001b: invoke-virtual {v0, v7}, Ljava/io/PrintStream;.println:(F)V // method@00ae
+006770: 6200 1000 |001e: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006774: 6e30 b000 8009 |0020: invoke-virtual {v0, v8, v9}, Ljava/io/PrintStream;.println:(J)V // method@00b0
+00677a: 6200 1000 |0023: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00677e: 6e30 ad00 a00b |0025: invoke-virtual {v0, v10, v11}, Ljava/io/PrintStream;.println:(D)V // method@00ad
+006784: 6200 1000 |0028: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006788: 6e20 b100 c000 |002a: invoke-virtual {v0, v12}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00678e: 0e00 |002d: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=46
+ 0x0005 line=47
+ 0x000a line=48
+ 0x000f line=49
+ 0x0014 line=50
+ 0x0019 line=51
+ 0x001e line=52
+ 0x0023 line=53
+ 0x0028 line=54
+ 0x002d line=55
+ locals :
+ 0x0000 - 0x002e reg=2 (null) Z
+ 0x0000 - 0x002e reg=3 (null) B
+ 0x0000 - 0x002e reg=4 (null) C
+ 0x0000 - 0x002e reg=5 (null) S
+ 0x0000 - 0x002e reg=6 (null) I
+ 0x0000 - 0x002e reg=7 (null) F
+ 0x0000 - 0x002e reg=8 (null) J
+ 0x0000 - 0x002e reg=10 (null) D
+ 0x0000 - 0x002e reg=12 (null) Ljava/lang/String;
+
+ #11 : (in Linvokecustom/InvokeCustom6;)
+ name : 'targetMethodTest3'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+006790: |[006790] invokecustom.InvokeCustom6.targetMethodTest3:()V
+0067a0: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0067a4: 1a01 7300 |0002: const-string v1, "targetMethodTest3 from InvokeCustom" // string@0073
+0067a8: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0067ae: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=58
+ 0x0007 line=59
+ locals :
+
+ #12 : (in Linvokecustom/InvokeCustom6;)
+ name : 'targetMethodTest5'
+ type : '(III)I'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 3
+ outs : 2
+ insns size : 83 16-bit code units
+0067b0: |[0067b0] invokecustom.InvokeCustom6.targetMethodTest5:(III)I
+0067c0: 9000 0405 |0000: add-int v0, v4, v5
+0067c4: 6201 1000 |0002: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0067c8: 2202 1700 |0004: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+0067cc: 7010 b400 0200 |0006: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0067d2: 1a03 7800 |0009: const-string v3, "targetMethodTest5 " // string@0078
+0067d6: 6e20 ba00 3200 |000b: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0067dc: 0c02 |000e: move-result-object v2
+0067de: 6e20 b700 4200 |000f: invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0067e4: 0c02 |0012: move-result-object v2
+0067e6: 1a03 0300 |0013: const-string v3, " + " // string@0003
+0067ea: 6e20 ba00 3200 |0015: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0067f0: 0c02 |0018: move-result-object v2
+0067f2: 6e20 b700 5200 |0019: invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0067f8: 0c02 |001c: move-result-object v2
+0067fa: 1a03 0400 |001d: const-string v3, " = " // string@0004
+0067fe: 6e20 ba00 3200 |001f: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006804: 0c02 |0022: move-result-object v2
+006806: 6e20 b700 0200 |0023: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00680c: 0c02 |0026: move-result-object v2
+00680e: 6e10 bb00 0200 |0027: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006814: 0c02 |002a: move-result-object v2
+006816: 6e20 b100 2100 |002b: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00681c: 3260 2400 |002e: if-eq v0, v6, 0052 // +0024
+006820: 6201 1000 |0030: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006824: 2202 1700 |0032: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+006828: 7010 b400 0200 |0034: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00682e: 1a03 1300 |0037: const-string v3, "Failed " // string@0013
+006832: 6e20 ba00 3200 |0039: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006838: 0c02 |003c: move-result-object v2
+00683a: 6e20 b700 0200 |003d: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+006840: 0c02 |0040: move-result-object v2
+006842: 1a03 0100 |0041: const-string v3, " != " // string@0001
+006846: 6e20 ba00 3200 |0043: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00684c: 0c02 |0046: move-result-object v2
+00684e: 6e20 b700 6200 |0047: invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+006854: 0c02 |004a: move-result-object v2
+006856: 6e10 bb00 0200 |004b: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00685c: 0c02 |004e: move-result-object v2
+00685e: 6e20 b100 2100 |004f: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006864: 0f00 |0052: return v0
+ catches : (none)
+ positions :
+ 0x0000 line=68
+ 0x0002 line=69
+ 0x002e line=70
+ 0x0030 line=71
+ 0x0052 line=73
+ locals :
+ 0x0000 - 0x0053 reg=4 (null) I
+ 0x0000 - 0x0053 reg=5 (null) I
+ 0x0000 - 0x0053 reg=6 (null) I
+
+ #13 : (in Linvokecustom/InvokeCustom6;)
+ name : 'targetMethodTest6'
+ type : '(JJJ)J'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 6
+ outs : 3
+ insns size : 85 16-bit code units
+006868: |[006868] invokecustom.InvokeCustom6.targetMethodTest6:(JJJ)J
+006878: 9b00 0608 |0000: add-long v0, v6, v8
+00687c: 6202 1000 |0002: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006880: 2203 1700 |0004: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+006884: 7010 b400 0300 |0006: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00688a: 1a04 7b00 |0009: const-string v4, "targetMethodTest6 " // string@007b
+00688e: 6e20 ba00 4300 |000b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006894: 0c03 |000e: move-result-object v3
+006896: 6e30 b800 6307 |000f: invoke-virtual {v3, v6, v7}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+00689c: 0c03 |0012: move-result-object v3
+00689e: 1a04 0300 |0013: const-string v4, " + " // string@0003
+0068a2: 6e20 ba00 4300 |0015: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0068a8: 0c03 |0018: move-result-object v3
+0068aa: 6e30 b800 8309 |0019: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0068b0: 0c03 |001c: move-result-object v3
+0068b2: 1a04 0400 |001d: const-string v4, " = " // string@0004
+0068b6: 6e20 ba00 4300 |001f: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0068bc: 0c03 |0022: move-result-object v3
+0068be: 6e30 b800 0301 |0023: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0068c4: 0c03 |0026: move-result-object v3
+0068c6: 6e10 bb00 0300 |0027: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0068cc: 0c03 |002a: move-result-object v3
+0068ce: 6e20 b100 3200 |002b: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0068d4: 3102 000a |002e: cmp-long v2, v0, v10
+0068d8: 3802 2400 |0030: if-eqz v2, 0054 // +0024
+0068dc: 6202 1000 |0032: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0068e0: 2203 1700 |0034: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0068e4: 7010 b400 0300 |0036: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0068ea: 1a04 1300 |0039: const-string v4, "Failed " // string@0013
+0068ee: 6e20 ba00 4300 |003b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0068f4: 0c03 |003e: move-result-object v3
+0068f6: 6e30 b800 0301 |003f: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0068fc: 0c03 |0042: move-result-object v3
+0068fe: 1a04 0100 |0043: const-string v4, " != " // string@0001
+006902: 6e20 ba00 4300 |0045: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006908: 0c03 |0048: move-result-object v3
+00690a: 6e30 b800 a30b |0049: invoke-virtual {v3, v10, v11}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+006910: 0c03 |004c: move-result-object v3
+006912: 6e10 bb00 0300 |004d: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006918: 0c03 |0050: move-result-object v3
+00691a: 6e20 b100 3200 |0051: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006920: 1000 |0054: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=77
+ 0x0002 line=78
+ 0x002e line=79
+ 0x0032 line=80
+ 0x0054 line=82
+ locals :
+ 0x0000 - 0x0055 reg=6 (null) J
+ 0x0000 - 0x0055 reg=8 (null) J
+ 0x0000 - 0x0055 reg=10 (null) J
+
+ #14 : (in Linvokecustom/InvokeCustom6;)
+ name : 'targetMethodTest7'
+ type : '(FFD)D'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 10
+ ins : 4
+ outs : 3
+ insns size : 86 16-bit code units
+006924: |[006924] invokecustom.InvokeCustom6.targetMethodTest7:(FFD)D
+006934: a800 0607 |0000: mul-float v0, v6, v7
+006938: 8900 |0002: float-to-double v0, v0
+00693a: 6202 1000 |0003: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00693e: 2203 1700 |0005: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+006942: 7010 b400 0300 |0007: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006948: 1a04 7e00 |000a: const-string v4, "targetMethodTest7 " // string@007e
+00694c: 6e20 ba00 4300 |000c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006952: 0c03 |000f: move-result-object v3
+006954: 6e20 b600 6300 |0010: invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00695a: 0c03 |0013: move-result-object v3
+00695c: 1a04 0200 |0014: const-string v4, " * " // string@0002
+006960: 6e20 ba00 4300 |0016: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006966: 0c03 |0019: move-result-object v3
+006968: 6e20 b600 7300 |001a: invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00696e: 0c03 |001d: move-result-object v3
+006970: 1a04 0400 |001e: const-string v4, " = " // string@0004
+006974: 6e20 ba00 4300 |0020: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00697a: 0c03 |0023: move-result-object v3
+00697c: 6e30 b500 0301 |0024: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+006982: 0c03 |0027: move-result-object v3
+006984: 6e10 bb00 0300 |0028: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00698a: 0c03 |002b: move-result-object v3
+00698c: 6e20 b100 3200 |002c: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006992: 2f02 0008 |002f: cmpl-double v2, v0, v8
+006996: 3802 2400 |0031: if-eqz v2, 0055 // +0024
+00699a: 6202 1000 |0033: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00699e: 2203 1700 |0035: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0069a2: 7010 b400 0300 |0037: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0069a8: 1a04 1300 |003a: const-string v4, "Failed " // string@0013
+0069ac: 6e20 ba00 4300 |003c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0069b2: 0c03 |003f: move-result-object v3
+0069b4: 6e30 b500 0301 |0040: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+0069ba: 0c03 |0043: move-result-object v3
+0069bc: 1a04 0100 |0044: const-string v4, " != " // string@0001
+0069c0: 6e20 ba00 4300 |0046: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0069c6: 0c03 |0049: move-result-object v3
+0069c8: 6e30 b500 8309 |004a: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+0069ce: 0c03 |004d: move-result-object v3
+0069d0: 6e10 bb00 0300 |004e: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0069d6: 0c03 |0051: move-result-object v3
+0069d8: 6e20 b100 3200 |0052: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0069de: 1000 |0055: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=86
+ 0x0003 line=87
+ 0x002f line=88
+ 0x0033 line=89
+ 0x0055 line=91
+ locals :
+ 0x0000 - 0x0056 reg=6 (null) F
+ 0x0000 - 0x0056 reg=7 (null) F
+ 0x0000 - 0x0056 reg=8 (null) D
+
+ #15 : (in Linvokecustom/InvokeCustom6;)
+ name : 'targetMethodTest8'
+ type : '(Ljava/lang/String;)V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 25 16-bit code units
+0069e0: |[0069e0] invokecustom.InvokeCustom6.targetMethodTest8:(Ljava/lang/String;)V
+0069f0: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0069f4: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+0069f8: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0069fe: 1a02 8000 |0007: const-string v2, "targetMethodTest8 " // string@0080
+006a02: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006a08: 0c01 |000c: move-result-object v1
+006a0a: 6e20 ba00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006a10: 0c01 |0010: move-result-object v1
+006a12: 6e10 bb00 0100 |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006a18: 0c01 |0014: move-result-object v1
+006a1a: 6e20 b100 1000 |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006a20: 0e00 |0018: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=95
+ 0x0018 line=96
+ locals :
+ 0x0000 - 0x0019 reg=3 (null) Ljava/lang/String;
+
+ #16 : (in Linvokecustom/InvokeCustom6;)
+ name : 'targetMethodTest9'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+006a24: |[006a24] invokecustom.InvokeCustom6.targetMethodTest9:()V
+006a34: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006a38: 1a01 8200 |0002: const-string v1, "targetMethodTest9()" // string@0082
+006a3c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006a42: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=129
+ 0x0007 line=130
+ locals :
+
+ #17 : (in Linvokecustom/InvokeCustom6;)
+ name : 'test6'
+ type : '()V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 6
+ ins : 0
+ outs : 6
+ insns size : 44 16-bit code units
+006a44: |[006a44] invokecustom.InvokeCustom6.test6:()V
+006a54: 1800 7777 7777 7707 0000 |0000: const-wide v0, #double 4.05612e-311 // #0000077777777777
+006a5e: 1802 efee eeee eefe ffff |0005: const-wide v2, #double -nan // #fffffeeeeeeeeeef
+006a68: 1804 6666 6666 6606 0000 |000a: const-wide v4, #double 3.47668e-311 // #0000066666666666
+006a72: fd06 0900 0000 |000f: invoke-custom/range {v0, v1, v2, v3, v4, v5}, call_site@0009
+006a78: 0b00 |0012: move-result-wide v0
+006a7a: 6202 1000 |0013: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006a7e: 2203 1700 |0015: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+006a82: 7010 b400 0300 |0017: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006a88: 1a04 7c00 |001a: const-string v4, "targetMethodTest6 returned: " // string@007c
+006a8c: 6e20 ba00 4300 |001c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006a92: 0c03 |001f: move-result-object v3
+006a94: 6e30 b800 0301 |0020: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+006a9a: 0c00 |0023: move-result-object v0
+006a9c: 6e10 bb00 0000 |0024: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006aa2: 0c00 |0027: move-result-object v0
+006aa4: 6e20 b100 0200 |0028: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006aaa: 0e00 |002b: return-void
+ catches : (none)
+ positions :
+ locals :
+
+ Virtual methods -
+ #0 : (in Linvokecustom/InvokeCustom6;)
+ name : 'helperMethodTest9'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 27 16-bit code units
+006aac: |[006aac] invokecustom.InvokeCustom6.helperMethodTest9:()V
+006abc: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006ac0: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006ac4: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006aca: 1a02 6400 |0007: const-string v2, "helperMethodTest9 in " // string@0064
+006ace: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006ad4: 0c01 |000c: move-result-object v1
+006ad6: 1c02 0e00 |000d: const-class v2, Linvokecustom/InvokeCustom; // type@000e
+006ada: 6e20 b900 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006ae0: 0c01 |0012: move-result-object v1
+006ae2: 6e10 bb00 0100 |0013: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006ae8: 0c01 |0016: move-result-object v1
+006aea: 6e20 b100 1000 |0017: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006af0: 0e00 |001a: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=125
+ 0x001a line=126
+ locals :
+ 0x0000 - 0x001b reg=3 this Linvokecustom/InvokeCustom6;
+
+ #1 : (in Linvokecustom/InvokeCustom6;)
+ name : 'run'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+006af4: |[006af4] invokecustom.InvokeCustom6.run:()V
+006b04: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006b08: 1a01 6e00 |0002: const-string v1, "run() for Test9" // string@006e
+006b0c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006b12: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=133
+ 0x0007 line=134
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom6;
+
+ #2 : (in Linvokecustom/InvokeCustom6;)
+ name : 'targetMethodTest4'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+006b14: |[006b14] invokecustom.InvokeCustom6.targetMethodTest4:()V
+006b24: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006b28: 1a01 7500 |0002: const-string v1, "targetMethodTest4 from InvokeCustom (oops!)" // string@0075
+006b2c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006b32: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=64
+ 0x0007 line=65
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom6;
+
+ source_file_idx : 25 (InvokeCustom.java)
+
+Class #6 -
+ Class descriptor : 'Linvokecustom/InvokeCustom7;'
+ Access flags : 0x0001 (PUBLIC)
+ Superclass : 'Linvokecustom/Super;'
+ Interfaces -
+ #0 : 'Ljava/lang/Runnable;'
+ Static fields -
+ #0 : (in Linvokecustom/InvokeCustom7;)
+ name : 'staticFieldTest9'
+ type : 'I'
+ access : 0x000a (PRIVATE STATIC)
+ Instance fields -
+ #0 : (in Linvokecustom/InvokeCustom7;)
+ name : 'fieldTest9'
+ type : 'F'
+ access : 0x0002 (PRIVATE)
+ Direct methods -
+ #0 : (in Linvokecustom/InvokeCustom7;)
+ name : '<clinit>'
+ type : '()V'
+ access : 0x10008 (STATIC CONSTRUCTOR)
+ code -
+ registers : 1
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+006b34: |[006b34] invokecustom.InvokeCustom7.<clinit>:()V
+006b44: 1200 |0000: const/4 v0, #int 0 // #0
+006b46: 6700 0f00 |0001: sput v0, Linvokecustom/InvokeCustom;.staticFieldTest9:I // field@000f
+006b4a: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=98
+ locals :
+
+ #1 : (in Linvokecustom/InvokeCustom7;)
+ name : '<init>'
+ type : '()V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 2
+ ins : 1
+ outs : 1
+ insns size : 7 16-bit code units
+006b4c: |[006b4c] invokecustom.InvokeCustom7.<init>:()V
+006b5c: 7010 a800 0100 |0000: invoke-direct {v1}, Linvokecustom/Super;.<init>:()V // method@00a8
+006b62: 1200 |0003: const/4 v0, #int 0 // #0
+006b64: 5910 0e00 |0004: iput v0, v1, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+006b68: 0e00 |0006: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=35
+ 0x0003 line=111
+ 0x0006 line=35
+ locals :
+ 0x0000 - 0x0007 reg=1 this Linvokecustom/InvokeCustom7;
+
+ #2 : (in Linvokecustom/InvokeCustom7;)
+ name : '<init>'
+ type : '(I)V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 5
+ ins : 2
+ outs : 2
+ insns size : 37 16-bit code units
+006b6c: |[006b6c] invokecustom.InvokeCustom7.<init>:(I)V
+006b7c: 7010 a800 0300 |0000: invoke-direct {v3}, Linvokecustom/Super;.<init>:()V // method@00a8
+006b82: 1200 |0003: const/4 v0, #int 0 // #0
+006b84: 5930 0e00 |0004: iput v0, v3, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+006b88: 6200 1000 |0006: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006b8c: 2201 1700 |0008: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006b90: 7010 b400 0100 |000a: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006b96: 1a02 1800 |000d: const-string v2, "InvokeCustom.<init>(" // string@0018
+006b9a: 6e20 ba00 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006ba0: 0c01 |0012: move-result-object v1
+006ba2: 6e20 b700 4100 |0013: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+006ba8: 0c01 |0016: move-result-object v1
+006baa: 1a02 0700 |0017: const-string v2, ")" // string@0007
+006bae: 6e20 ba00 2100 |0019: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006bb4: 0c01 |001c: move-result-object v1
+006bb6: 6e10 bb00 0100 |001d: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006bbc: 0c01 |0020: move-result-object v1
+006bbe: 6e20 b100 1000 |0021: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006bc4: 0e00 |0024: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=36
+ 0x0003 line=111
+ 0x0006 line=37
+ 0x0024 line=38
+ locals :
+ 0x0000 - 0x0025 reg=3 this Linvokecustom/InvokeCustom7;
+ 0x0000 - 0x0025 reg=4 (null) I
+
+ #3 : (in Linvokecustom/InvokeCustom7;)
+ name : 'bsmCreateCallSite'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 4
+ outs : 2
+ insns size : 36 16-bit code units
+006bc8: |[006bc8] invokecustom.InvokeCustom7.bsmCreateCallSite:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+006bd8: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006bdc: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006be0: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006be6: 1a02 5600 |0007: const-string v2, "bsmCreateCallSite [" // string@0056
+006bea: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006bf0: 0c01 |000c: move-result-object v1
+006bf2: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006bf8: 0c01 |0010: move-result-object v1
+006bfa: 1a02 5200 |0011: const-string v2, "]" // string@0052
+006bfe: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006c04: 0c01 |0016: move-result-object v1
+006c06: 6e10 bb00 0100 |0017: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006c0c: 0c01 |001a: move-result-object v1
+006c0e: 6e20 b100 1000 |001b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006c14: 2200 1b00 |001e: new-instance v0, Ljava/lang/invoke/ConstantCallSite; // type@001b
+006c18: 7020 bc00 6000 |0020: invoke-direct {v0, v6}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+006c1e: 1100 |0023: return-object v0
+ catches : (none)
+ positions :
+ 0x0000 line=156
+ 0x001e line=157
+ locals :
+ 0x0000 - 0x0024 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0024 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0024 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0024 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+
+ #4 : (in Linvokecustom/InvokeCustom7;)
+ name : 'bsmLookupStatic'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 5
+ ins : 3
+ outs : 4
+ insns size : 29 16-bit code units
+006c20: |[006c20] invokecustom.InvokeCustom7.bsmLookupStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+006c30: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006c34: 1a01 5800 |0002: const-string v1, "bsmLookupStatic []" // string@0058
+006c38: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006c3e: 7100 c900 0000 |0007: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+006c44: 0c00 |000a: move-result-object v0
+006c46: 6e10 c800 0000 |000b: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+006c4c: 0c01 |000e: move-result-object v1
+006c4e: 6e40 c700 1043 |000f: invoke-virtual {v0, v1, v3, v4}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+006c54: 0c00 |0012: move-result-object v0
+006c56: 2201 1b00 |0013: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+006c5a: 6e20 bd00 4000 |0015: invoke-virtual {v0, v4}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+006c60: 0c00 |0018: move-result-object v0
+006c62: 7020 bc00 0100 |0019: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+006c68: 1101 |001c: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=138
+ 0x0007 line=139
+ 0x000b line=140
+ 0x0013 line=141
+ locals :
+ 0x0000 - 0x001d reg=2 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x001d reg=3 (null) Ljava/lang/String;
+ 0x0000 - 0x001d reg=4 (null) Ljava/lang/invoke/MethodType;
+
+ #5 : (in Linvokecustom/InvokeCustom7;)
+ name : 'bsmLookupStaticWithExtraArgs'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 9
+ outs : 4
+ insns size : 82 16-bit code units
+006c6c: |[006c6c] invokecustom.InvokeCustom7.bsmLookupStaticWithExtraArgs:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;
+006c7c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006c80: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006c84: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006c8a: 1a02 5a00 |0007: const-string v2, "bsmLookupStaticWithExtraArgs [" // string@005a
+006c8e: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006c94: 0c01 |000c: move-result-object v1
+006c96: 6e20 b700 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+006c9c: 0c01 |0010: move-result-object v1
+006c9e: 1a02 0800 |0011: const-string v2, ", " // string@0008
+006ca2: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006ca8: 0c01 |0016: move-result-object v1
+006caa: 6e30 b800 7108 |0017: invoke-virtual {v1, v7, v8}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+006cb0: 0c01 |001a: move-result-object v1
+006cb2: 1a02 0800 |001b: const-string v2, ", " // string@0008
+006cb6: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006cbc: 0c01 |0020: move-result-object v1
+006cbe: 6e20 b600 9100 |0021: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+006cc4: 0c01 |0024: move-result-object v1
+006cc6: 1a02 0800 |0025: const-string v2, ", " // string@0008
+006cca: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006cd0: 0c01 |002a: move-result-object v1
+006cd2: 6e30 b500 a10b |002b: invoke-virtual {v1, v10, v11}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+006cd8: 0c01 |002e: move-result-object v1
+006cda: 1a02 5200 |002f: const-string v2, "]" // string@0052
+006cde: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006ce4: 0c01 |0034: move-result-object v1
+006ce6: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006cec: 0c01 |0038: move-result-object v1
+006cee: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006cf4: 7100 c900 0000 |003c: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+006cfa: 0c00 |003f: move-result-object v0
+006cfc: 6e10 c800 0000 |0040: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+006d02: 0c01 |0043: move-result-object v1
+006d04: 6e40 c700 1054 |0044: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+006d0a: 0c00 |0047: move-result-object v0
+006d0c: 2201 1b00 |0048: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+006d10: 6e20 bd00 5000 |004a: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+006d16: 0c00 |004d: move-result-object v0
+006d18: 7020 bc00 0100 |004e: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+006d1e: 1101 |0051: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=147
+ 0x003c line=148
+ 0x0040 line=149
+ 0x0048 line=150
+ locals :
+ 0x0000 - 0x0052 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0052 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0052 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0052 reg=6 (null) I
+ 0x0000 - 0x0052 reg=7 (null) J
+ 0x0000 - 0x0052 reg=9 (null) F
+ 0x0000 - 0x0052 reg=10 (null) D
+
+ #6 : (in Linvokecustom/InvokeCustom7;)
+ name : 'bsmLookupTest9'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 13
+ ins : 10
+ outs : 4
+ insns size : 135 16-bit code units
+006d20: |[006d20] invokecustom.InvokeCustom7.bsmLookupTest9:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+006d30: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006d34: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006d38: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006d3e: 1a02 5c00 |0007: const-string v2, "bsmLookupTest9 [" // string@005c
+006d42: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006d48: 0c01 |000c: move-result-object v1
+006d4a: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006d50: 0c01 |0010: move-result-object v1
+006d52: 1a02 0800 |0011: const-string v2, ", " // string@0008
+006d56: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006d5c: 0c01 |0016: move-result-object v1
+006d5e: 6e20 b900 7100 |0017: invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006d64: 0c01 |001a: move-result-object v1
+006d66: 1a02 0800 |001b: const-string v2, ", " // string@0008
+006d6a: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006d70: 0c01 |0020: move-result-object v1
+006d72: 6e20 b900 8100 |0021: invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006d78: 0c01 |0024: move-result-object v1
+006d7a: 1a02 0800 |0025: const-string v2, ", " // string@0008
+006d7e: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006d84: 0c01 |002a: move-result-object v1
+006d86: 6e20 b900 9100 |002b: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006d8c: 0c01 |002e: move-result-object v1
+006d8e: 1a02 5200 |002f: const-string v2, "]" // string@0052
+006d92: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006d98: 0c01 |0034: move-result-object v1
+006d9a: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006da0: 0c01 |0038: move-result-object v1
+006da2: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006da8: 6200 1000 |003c: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006dac: 2201 1700 |003e: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+006db0: 7010 b400 0100 |0040: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006db6: 6e20 ba00 4100 |0043: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006dbc: 0c01 |0046: move-result-object v1
+006dbe: 1a02 0000 |0047: const-string v2, " " // string@0000
+006dc2: 6e20 ba00 2100 |0049: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006dc8: 0c01 |004c: move-result-object v1
+006dca: 6e20 b900 5100 |004d: invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+006dd0: 0c01 |0050: move-result-object v1
+006dd2: 6e10 bb00 0100 |0051: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006dd8: 0c01 |0054: move-result-object v1
+006dda: 6e20 b100 1000 |0055: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006de0: 7120 9b00 7600 |0058: invoke-static {v6, v7}, Linvokecustom/InvokeCustom;.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009b
+006de6: 2200 0e00 |005b: new-instance v0, Linvokecustom/InvokeCustom; // type@000e
+006dea: 7010 9400 0000 |005d: invoke-direct {v0}, Linvokecustom/InvokeCustom;.<init>:()V // method@0094
+006df0: 6f30 9a00 8009 |0060: invoke-super {v0, v8, v9}, Linvokecustom/InvokeCustom;.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009a
+006df6: fa20 c300 0a00 1c00 |0063: invoke-polymorphic {v10, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00c3, proto@001c
+006dfe: 1230 |0067: const/4 v0, #int 3 // #3
+006e00: fa20 c300 0b00 0500 |0068: invoke-polymorphic {v11, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)Linvokecustom/InvokeCustom; // method@00c3, proto@0005
+006e08: 0c00 |006c: move-result-object v0
+006e0a: fa20 be00 0c00 1c00 |006d: invoke-polymorphic {v12, v0}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00be, proto@001c
+006e12: 7100 c900 0000 |0071: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+006e18: 0c00 |0074: move-result-object v0
+006e1a: 6e10 c800 0000 |0075: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+006e20: 0c01 |0078: move-result-object v1
+006e22: 6e40 c700 1054 |0079: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+006e28: 0c00 |007c: move-result-object v0
+006e2a: 2201 1b00 |007d: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+006e2e: 6e20 bd00 5000 |007f: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+006e34: 0c00 |0082: move-result-object v0
+006e36: 7020 bc00 0100 |0083: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+006e3c: 1101 |0086: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=166
+ 0x003c line=168
+ 0x0058 line=171
+ 0x005b line=172
+ 0x0060 line=173
+ 0x0063 line=176
+ 0x0067 line=178
+ 0x006d line=179
+ 0x0071 line=181
+ 0x0075 line=182
+ 0x007d line=183
+ locals :
+ 0x0000 - 0x0087 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0087 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0087 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0087 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=9 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=10 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=11 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=12 (null) Ljava/lang/invoke/MethodHandle;
+
+ #7 : (in Linvokecustom/InvokeCustom7;)
+ name : 'checkFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x0002 (PRIVATE)
+ code -
+ registers : 9
+ ins : 3
+ outs : 3
+ insns size : 82 16-bit code units
+006e40: |[006e40] invokecustom.InvokeCustom7.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+006e50: 1405 0ff0 6a20 |0000: const v5, #float 1.99e-19 // #206af00f
+006e56: fa20 c300 6700 0100 |0003: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+006e5e: 0a00 |0007: move-result v0
+006e60: fa30 c300 6805 1d00 |0008: invoke-polymorphic {v8, v6, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;F)V // method@00c3, proto@001d
+006e68: fa20 c300 6700 0100 |000c: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+006e70: 0a01 |0010: move-result v1
+006e72: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006e76: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+006e7a: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006e80: 1a04 5e00 |0018: const-string v4, "checkFieldTest9: old " // string@005e
+006e84: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006e8a: 0c03 |001d: move-result-object v3
+006e8c: 6e20 b600 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+006e92: 0c00 |0021: move-result-object v0
+006e94: 1a03 0600 |0022: const-string v3, " new " // string@0006
+006e98: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006e9e: 0c00 |0027: move-result-object v0
+006ea0: 6e20 b600 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+006ea6: 0c00 |002b: move-result-object v0
+006ea8: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+006eac: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006eb2: 0c00 |0031: move-result-object v0
+006eb4: 6e20 b600 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+006eba: 0c00 |0035: move-result-object v0
+006ebc: 1a03 0000 |0036: const-string v3, " " // string@0000
+006ec0: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006ec6: 0c00 |003b: move-result-object v0
+006ec8: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006ece: 0c00 |003f: move-result-object v0
+006ed0: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+006ed6: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006eda: 2d00 0105 |0045: cmpl-float v0, v1, v5
+006ede: 3900 0800 |0047: if-nez v0, 004f // +0008
+006ee2: 1a00 4000 |0049: const-string v0, "OK" // string@0040
+006ee6: 6e20 b100 0200 |004b: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006eec: 0e00 |004e: return-void
+006eee: 1a00 1000 |004f: const-string v0, "ERROR" // string@0010
+006ef2: 28fa |0051: goto 004b // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=116
+ 0x0008 line=117
+ 0x000c line=118
+ 0x0011 line=119
+ 0x0043 line=121
+ 0x004e line=122
+ 0x004f line=121
+ locals :
+ 0x0000 - 0x0052 reg=6 this Linvokecustom/InvokeCustom7;
+ 0x0000 - 0x0052 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0052 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+
+ #8 : (in Linvokecustom/InvokeCustom7;)
+ name : 'checkStaticFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 8
+ ins : 2
+ outs : 2
+ insns size : 80 16-bit code units
+006ef4: |[006ef4] invokecustom.InvokeCustom7.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+006f04: 1405 1032 5476 |0000: const v5, #float 1.07596e+33 // #76543210
+006f0a: fa10 c300 0600 0200 |0003: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+006f12: 0a00 |0007: move-result v0
+006f14: fa20 c300 5700 1a00 |0008: invoke-polymorphic {v7, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)V // method@00c3, proto@001a
+006f1c: fa10 c300 0600 0200 |000c: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+006f24: 0a01 |0010: move-result v1
+006f26: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006f2a: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+006f2e: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+006f34: 1a04 6000 |0018: const-string v4, "checkStaticFieldTest9: old " // string@0060
+006f38: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006f3e: 0c03 |001d: move-result-object v3
+006f40: 6e20 b700 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+006f46: 0c00 |0021: move-result-object v0
+006f48: 1a03 0600 |0022: const-string v3, " new " // string@0006
+006f4c: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006f52: 0c00 |0027: move-result-object v0
+006f54: 6e20 b700 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+006f5a: 0c00 |002b: move-result-object v0
+006f5c: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+006f60: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006f66: 0c00 |0031: move-result-object v0
+006f68: 6e20 b700 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+006f6e: 0c00 |0035: move-result-object v0
+006f70: 1a03 0000 |0036: const-string v3, " " // string@0000
+006f74: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+006f7a: 0c00 |003b: move-result-object v0
+006f7c: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+006f82: 0c00 |003f: move-result-object v0
+006f84: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+006f8a: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006f8e: 3351 0800 |0045: if-ne v1, v5, 004d // +0008
+006f92: 1a00 4000 |0047: const-string v0, "OK" // string@0040
+006f96: 6e20 b100 0200 |0049: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006f9c: 0e00 |004c: return-void
+006f9e: 1a00 1000 |004d: const-string v0, "ERROR" // string@0010
+006fa2: 28fa |004f: goto 0049 // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=103
+ 0x0008 line=104
+ 0x000c line=105
+ 0x0011 line=106
+ 0x0043 line=108
+ 0x004c line=109
+ 0x004d line=108
+ locals :
+ 0x0000 - 0x0050 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0050 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+
+ #9 : (in Linvokecustom/InvokeCustom7;)
+ name : 'targetMethodTest1'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+006fa4: |[006fa4] invokecustom.InvokeCustom7.targetMethodTest1:()V
+006fb4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006fb8: 1a01 1500 |0002: const-string v1, "Hello World!" // string@0015
+006fbc: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+006fc2: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=41
+ 0x0007 line=42
+ locals :
+
+ #10 : (in Linvokecustom/InvokeCustom7;)
+ name : 'targetMethodTest2'
+ type : '(ZBCSIFJDLjava/lang/String;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 13
+ ins : 11
+ outs : 3
+ insns size : 46 16-bit code units
+006fc4: |[006fc4] invokecustom.InvokeCustom7.targetMethodTest2:(ZBCSIFJDLjava/lang/String;)V
+006fd4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006fd8: 6e20 b200 2000 |0002: invoke-virtual {v0, v2}, Ljava/io/PrintStream;.println:(Z)V // method@00b2
+006fde: 6200 1000 |0005: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006fe2: 6e20 af00 3000 |0007: invoke-virtual {v0, v3}, Ljava/io/PrintStream;.println:(I)V // method@00af
+006fe8: 6200 1000 |000a: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006fec: 6e20 ac00 4000 |000c: invoke-virtual {v0, v4}, Ljava/io/PrintStream;.println:(C)V // method@00ac
+006ff2: 6200 1000 |000f: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+006ff6: 6e20 af00 5000 |0011: invoke-virtual {v0, v5}, Ljava/io/PrintStream;.println:(I)V // method@00af
+006ffc: 6200 1000 |0014: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007000: 6e20 af00 6000 |0016: invoke-virtual {v0, v6}, Ljava/io/PrintStream;.println:(I)V // method@00af
+007006: 6200 1000 |0019: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00700a: 6e20 ae00 7000 |001b: invoke-virtual {v0, v7}, Ljava/io/PrintStream;.println:(F)V // method@00ae
+007010: 6200 1000 |001e: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007014: 6e30 b000 8009 |0020: invoke-virtual {v0, v8, v9}, Ljava/io/PrintStream;.println:(J)V // method@00b0
+00701a: 6200 1000 |0023: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00701e: 6e30 ad00 a00b |0025: invoke-virtual {v0, v10, v11}, Ljava/io/PrintStream;.println:(D)V // method@00ad
+007024: 6200 1000 |0028: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007028: 6e20 b100 c000 |002a: invoke-virtual {v0, v12}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00702e: 0e00 |002d: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=46
+ 0x0005 line=47
+ 0x000a line=48
+ 0x000f line=49
+ 0x0014 line=50
+ 0x0019 line=51
+ 0x001e line=52
+ 0x0023 line=53
+ 0x0028 line=54
+ 0x002d line=55
+ locals :
+ 0x0000 - 0x002e reg=2 (null) Z
+ 0x0000 - 0x002e reg=3 (null) B
+ 0x0000 - 0x002e reg=4 (null) C
+ 0x0000 - 0x002e reg=5 (null) S
+ 0x0000 - 0x002e reg=6 (null) I
+ 0x0000 - 0x002e reg=7 (null) F
+ 0x0000 - 0x002e reg=8 (null) J
+ 0x0000 - 0x002e reg=10 (null) D
+ 0x0000 - 0x002e reg=12 (null) Ljava/lang/String;
+
+ #11 : (in Linvokecustom/InvokeCustom7;)
+ name : 'targetMethodTest3'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+007030: |[007030] invokecustom.InvokeCustom7.targetMethodTest3:()V
+007040: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007044: 1a01 7300 |0002: const-string v1, "targetMethodTest3 from InvokeCustom" // string@0073
+007048: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00704e: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=58
+ 0x0007 line=59
+ locals :
+
+ #12 : (in Linvokecustom/InvokeCustom7;)
+ name : 'targetMethodTest5'
+ type : '(III)I'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 3
+ outs : 2
+ insns size : 83 16-bit code units
+007050: |[007050] invokecustom.InvokeCustom7.targetMethodTest5:(III)I
+007060: 9000 0405 |0000: add-int v0, v4, v5
+007064: 6201 1000 |0002: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007068: 2202 1700 |0004: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+00706c: 7010 b400 0200 |0006: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007072: 1a03 7800 |0009: const-string v3, "targetMethodTest5 " // string@0078
+007076: 6e20 ba00 3200 |000b: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00707c: 0c02 |000e: move-result-object v2
+00707e: 6e20 b700 4200 |000f: invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007084: 0c02 |0012: move-result-object v2
+007086: 1a03 0300 |0013: const-string v3, " + " // string@0003
+00708a: 6e20 ba00 3200 |0015: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007090: 0c02 |0018: move-result-object v2
+007092: 6e20 b700 5200 |0019: invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007098: 0c02 |001c: move-result-object v2
+00709a: 1a03 0400 |001d: const-string v3, " = " // string@0004
+00709e: 6e20 ba00 3200 |001f: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0070a4: 0c02 |0022: move-result-object v2
+0070a6: 6e20 b700 0200 |0023: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0070ac: 0c02 |0026: move-result-object v2
+0070ae: 6e10 bb00 0200 |0027: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0070b4: 0c02 |002a: move-result-object v2
+0070b6: 6e20 b100 2100 |002b: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0070bc: 3260 2400 |002e: if-eq v0, v6, 0052 // +0024
+0070c0: 6201 1000 |0030: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0070c4: 2202 1700 |0032: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+0070c8: 7010 b400 0200 |0034: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0070ce: 1a03 1300 |0037: const-string v3, "Failed " // string@0013
+0070d2: 6e20 ba00 3200 |0039: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0070d8: 0c02 |003c: move-result-object v2
+0070da: 6e20 b700 0200 |003d: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0070e0: 0c02 |0040: move-result-object v2
+0070e2: 1a03 0100 |0041: const-string v3, " != " // string@0001
+0070e6: 6e20 ba00 3200 |0043: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0070ec: 0c02 |0046: move-result-object v2
+0070ee: 6e20 b700 6200 |0047: invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0070f4: 0c02 |004a: move-result-object v2
+0070f6: 6e10 bb00 0200 |004b: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0070fc: 0c02 |004e: move-result-object v2
+0070fe: 6e20 b100 2100 |004f: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007104: 0f00 |0052: return v0
+ catches : (none)
+ positions :
+ 0x0000 line=68
+ 0x0002 line=69
+ 0x002e line=70
+ 0x0030 line=71
+ 0x0052 line=73
+ locals :
+ 0x0000 - 0x0053 reg=4 (null) I
+ 0x0000 - 0x0053 reg=5 (null) I
+ 0x0000 - 0x0053 reg=6 (null) I
+
+ #13 : (in Linvokecustom/InvokeCustom7;)
+ name : 'targetMethodTest6'
+ type : '(JJJ)J'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 6
+ outs : 3
+ insns size : 85 16-bit code units
+007108: |[007108] invokecustom.InvokeCustom7.targetMethodTest6:(JJJ)J
+007118: 9b00 0608 |0000: add-long v0, v6, v8
+00711c: 6202 1000 |0002: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007120: 2203 1700 |0004: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+007124: 7010 b400 0300 |0006: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00712a: 1a04 7b00 |0009: const-string v4, "targetMethodTest6 " // string@007b
+00712e: 6e20 ba00 4300 |000b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007134: 0c03 |000e: move-result-object v3
+007136: 6e30 b800 6307 |000f: invoke-virtual {v3, v6, v7}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+00713c: 0c03 |0012: move-result-object v3
+00713e: 1a04 0300 |0013: const-string v4, " + " // string@0003
+007142: 6e20 ba00 4300 |0015: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007148: 0c03 |0018: move-result-object v3
+00714a: 6e30 b800 8309 |0019: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+007150: 0c03 |001c: move-result-object v3
+007152: 1a04 0400 |001d: const-string v4, " = " // string@0004
+007156: 6e20 ba00 4300 |001f: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00715c: 0c03 |0022: move-result-object v3
+00715e: 6e30 b800 0301 |0023: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+007164: 0c03 |0026: move-result-object v3
+007166: 6e10 bb00 0300 |0027: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00716c: 0c03 |002a: move-result-object v3
+00716e: 6e20 b100 3200 |002b: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007174: 3102 000a |002e: cmp-long v2, v0, v10
+007178: 3802 2400 |0030: if-eqz v2, 0054 // +0024
+00717c: 6202 1000 |0032: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007180: 2203 1700 |0034: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+007184: 7010 b400 0300 |0036: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00718a: 1a04 1300 |0039: const-string v4, "Failed " // string@0013
+00718e: 6e20 ba00 4300 |003b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007194: 0c03 |003e: move-result-object v3
+007196: 6e30 b800 0301 |003f: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+00719c: 0c03 |0042: move-result-object v3
+00719e: 1a04 0100 |0043: const-string v4, " != " // string@0001
+0071a2: 6e20 ba00 4300 |0045: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0071a8: 0c03 |0048: move-result-object v3
+0071aa: 6e30 b800 a30b |0049: invoke-virtual {v3, v10, v11}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0071b0: 0c03 |004c: move-result-object v3
+0071b2: 6e10 bb00 0300 |004d: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0071b8: 0c03 |0050: move-result-object v3
+0071ba: 6e20 b100 3200 |0051: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0071c0: 1000 |0054: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=77
+ 0x0002 line=78
+ 0x002e line=79
+ 0x0032 line=80
+ 0x0054 line=82
+ locals :
+ 0x0000 - 0x0055 reg=6 (null) J
+ 0x0000 - 0x0055 reg=8 (null) J
+ 0x0000 - 0x0055 reg=10 (null) J
+
+ #14 : (in Linvokecustom/InvokeCustom7;)
+ name : 'targetMethodTest7'
+ type : '(FFD)D'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 10
+ ins : 4
+ outs : 3
+ insns size : 86 16-bit code units
+0071c4: |[0071c4] invokecustom.InvokeCustom7.targetMethodTest7:(FFD)D
+0071d4: a800 0607 |0000: mul-float v0, v6, v7
+0071d8: 8900 |0002: float-to-double v0, v0
+0071da: 6202 1000 |0003: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0071de: 2203 1700 |0005: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0071e2: 7010 b400 0300 |0007: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0071e8: 1a04 7e00 |000a: const-string v4, "targetMethodTest7 " // string@007e
+0071ec: 6e20 ba00 4300 |000c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0071f2: 0c03 |000f: move-result-object v3
+0071f4: 6e20 b600 6300 |0010: invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+0071fa: 0c03 |0013: move-result-object v3
+0071fc: 1a04 0200 |0014: const-string v4, " * " // string@0002
+007200: 6e20 ba00 4300 |0016: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007206: 0c03 |0019: move-result-object v3
+007208: 6e20 b600 7300 |001a: invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00720e: 0c03 |001d: move-result-object v3
+007210: 1a04 0400 |001e: const-string v4, " = " // string@0004
+007214: 6e20 ba00 4300 |0020: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00721a: 0c03 |0023: move-result-object v3
+00721c: 6e30 b500 0301 |0024: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+007222: 0c03 |0027: move-result-object v3
+007224: 6e10 bb00 0300 |0028: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00722a: 0c03 |002b: move-result-object v3
+00722c: 6e20 b100 3200 |002c: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007232: 2f02 0008 |002f: cmpl-double v2, v0, v8
+007236: 3802 2400 |0031: if-eqz v2, 0055 // +0024
+00723a: 6202 1000 |0033: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00723e: 2203 1700 |0035: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+007242: 7010 b400 0300 |0037: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007248: 1a04 1300 |003a: const-string v4, "Failed " // string@0013
+00724c: 6e20 ba00 4300 |003c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007252: 0c03 |003f: move-result-object v3
+007254: 6e30 b500 0301 |0040: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+00725a: 0c03 |0043: move-result-object v3
+00725c: 1a04 0100 |0044: const-string v4, " != " // string@0001
+007260: 6e20 ba00 4300 |0046: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007266: 0c03 |0049: move-result-object v3
+007268: 6e30 b500 8309 |004a: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+00726e: 0c03 |004d: move-result-object v3
+007270: 6e10 bb00 0300 |004e: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007276: 0c03 |0051: move-result-object v3
+007278: 6e20 b100 3200 |0052: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00727e: 1000 |0055: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=86
+ 0x0003 line=87
+ 0x002f line=88
+ 0x0033 line=89
+ 0x0055 line=91
+ locals :
+ 0x0000 - 0x0056 reg=6 (null) F
+ 0x0000 - 0x0056 reg=7 (null) F
+ 0x0000 - 0x0056 reg=8 (null) D
+
+ #15 : (in Linvokecustom/InvokeCustom7;)
+ name : 'targetMethodTest8'
+ type : '(Ljava/lang/String;)V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 25 16-bit code units
+007280: |[007280] invokecustom.InvokeCustom7.targetMethodTest8:(Ljava/lang/String;)V
+007290: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007294: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007298: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00729e: 1a02 8000 |0007: const-string v2, "targetMethodTest8 " // string@0080
+0072a2: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0072a8: 0c01 |000c: move-result-object v1
+0072aa: 6e20 ba00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0072b0: 0c01 |0010: move-result-object v1
+0072b2: 6e10 bb00 0100 |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0072b8: 0c01 |0014: move-result-object v1
+0072ba: 6e20 b100 1000 |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0072c0: 0e00 |0018: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=95
+ 0x0018 line=96
+ locals :
+ 0x0000 - 0x0019 reg=3 (null) Ljava/lang/String;
+
+ #16 : (in Linvokecustom/InvokeCustom7;)
+ name : 'targetMethodTest9'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+0072c4: |[0072c4] invokecustom.InvokeCustom7.targetMethodTest9:()V
+0072d4: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0072d8: 1a01 8200 |0002: const-string v1, "targetMethodTest9()" // string@0082
+0072dc: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0072e2: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=129
+ 0x0007 line=130
+ locals :
+
+ #17 : (in Linvokecustom/InvokeCustom7;)
+ name : 'test7'
+ type : '()V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 5
+ ins : 0
+ outs : 4
+ insns size : 40 16-bit code units
+0072e4: |[0072e4] invokecustom.InvokeCustom7.test7:()V
+0072f4: 1400 0040 003f |0000: const v0, #float 0.500977 // #3f004000
+0072fa: 1401 0040 00bf |0003: const v1, #float -0.500977 // #bf004000
+007300: 1802 0000 0000 0410 d0bf |0006: const-wide v2, #double -0.250978 // #bfd0100400000000
+00730a: fc40 0b00 1032 |000b: invoke-custom {v0, v1, v2, v3}, call_site@000b
+007310: 0b00 |000e: move-result-wide v0
+007312: 6202 1000 |000f: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007316: 2203 1700 |0011: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+00731a: 7010 b400 0300 |0013: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007320: 1a04 7c00 |0016: const-string v4, "targetMethodTest6 returned: " // string@007c
+007324: 6e20 ba00 4300 |0018: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00732a: 0c03 |001b: move-result-object v3
+00732c: 6e30 b500 0301 |001c: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+007332: 0c00 |001f: move-result-object v0
+007334: 6e10 bb00 0000 |0020: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00733a: 0c00 |0023: move-result-object v0
+00733c: 6e20 b100 0200 |0024: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007342: 0e00 |0027: return-void
+ catches : (none)
+ positions :
+ locals :
+
+ Virtual methods -
+ #0 : (in Linvokecustom/InvokeCustom7;)
+ name : 'helperMethodTest9'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 27 16-bit code units
+007344: |[007344] invokecustom.InvokeCustom7.helperMethodTest9:()V
+007354: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007358: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+00735c: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007362: 1a02 6400 |0007: const-string v2, "helperMethodTest9 in " // string@0064
+007366: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00736c: 0c01 |000c: move-result-object v1
+00736e: 1c02 0e00 |000d: const-class v2, Linvokecustom/InvokeCustom; // type@000e
+007372: 6e20 b900 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007378: 0c01 |0012: move-result-object v1
+00737a: 6e10 bb00 0100 |0013: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007380: 0c01 |0016: move-result-object v1
+007382: 6e20 b100 1000 |0017: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007388: 0e00 |001a: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=125
+ 0x001a line=126
+ locals :
+ 0x0000 - 0x001b reg=3 this Linvokecustom/InvokeCustom7;
+
+ #1 : (in Linvokecustom/InvokeCustom7;)
+ name : 'run'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+00738c: |[00738c] invokecustom.InvokeCustom7.run:()V
+00739c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0073a0: 1a01 6e00 |0002: const-string v1, "run() for Test9" // string@006e
+0073a4: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0073aa: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=133
+ 0x0007 line=134
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom7;
+
+ #2 : (in Linvokecustom/InvokeCustom7;)
+ name : 'targetMethodTest4'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+0073ac: |[0073ac] invokecustom.InvokeCustom7.targetMethodTest4:()V
+0073bc: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0073c0: 1a01 7500 |0002: const-string v1, "targetMethodTest4 from InvokeCustom (oops!)" // string@0075
+0073c4: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0073ca: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=64
+ 0x0007 line=65
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom7;
+
+ source_file_idx : 25 (InvokeCustom.java)
+
+Class #7 -
+ Class descriptor : 'Linvokecustom/InvokeCustom8;'
+ Access flags : 0x0001 (PUBLIC)
+ Superclass : 'Linvokecustom/Super;'
+ Interfaces -
+ #0 : 'Ljava/lang/Runnable;'
+ Static fields -
+ #0 : (in Linvokecustom/InvokeCustom8;)
+ name : 'staticFieldTest9'
+ type : 'I'
+ access : 0x000a (PRIVATE STATIC)
+ Instance fields -
+ #0 : (in Linvokecustom/InvokeCustom8;)
+ name : 'fieldTest9'
+ type : 'F'
+ access : 0x0002 (PRIVATE)
+ Direct methods -
+ #0 : (in Linvokecustom/InvokeCustom8;)
+ name : '<clinit>'
+ type : '()V'
+ access : 0x10008 (STATIC CONSTRUCTOR)
+ code -
+ registers : 1
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+0073cc: |[0073cc] invokecustom.InvokeCustom8.<clinit>:()V
+0073dc: 1200 |0000: const/4 v0, #int 0 // #0
+0073de: 6700 0f00 |0001: sput v0, Linvokecustom/InvokeCustom;.staticFieldTest9:I // field@000f
+0073e2: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=98
+ locals :
+
+ #1 : (in Linvokecustom/InvokeCustom8;)
+ name : '<init>'
+ type : '()V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 2
+ ins : 1
+ outs : 1
+ insns size : 7 16-bit code units
+0073e4: |[0073e4] invokecustom.InvokeCustom8.<init>:()V
+0073f4: 7010 a800 0100 |0000: invoke-direct {v1}, Linvokecustom/Super;.<init>:()V // method@00a8
+0073fa: 1200 |0003: const/4 v0, #int 0 // #0
+0073fc: 5910 0e00 |0004: iput v0, v1, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+007400: 0e00 |0006: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=35
+ 0x0003 line=111
+ 0x0006 line=35
+ locals :
+ 0x0000 - 0x0007 reg=1 this Linvokecustom/InvokeCustom8;
+
+ #2 : (in Linvokecustom/InvokeCustom8;)
+ name : '<init>'
+ type : '(I)V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 5
+ ins : 2
+ outs : 2
+ insns size : 37 16-bit code units
+007404: |[007404] invokecustom.InvokeCustom8.<init>:(I)V
+007414: 7010 a800 0300 |0000: invoke-direct {v3}, Linvokecustom/Super;.<init>:()V // method@00a8
+00741a: 1200 |0003: const/4 v0, #int 0 // #0
+00741c: 5930 0e00 |0004: iput v0, v3, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+007420: 6200 1000 |0006: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007424: 2201 1700 |0008: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007428: 7010 b400 0100 |000a: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00742e: 1a02 1800 |000d: const-string v2, "InvokeCustom.<init>(" // string@0018
+007432: 6e20 ba00 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007438: 0c01 |0012: move-result-object v1
+00743a: 6e20 b700 4100 |0013: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007440: 0c01 |0016: move-result-object v1
+007442: 1a02 0700 |0017: const-string v2, ")" // string@0007
+007446: 6e20 ba00 2100 |0019: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00744c: 0c01 |001c: move-result-object v1
+00744e: 6e10 bb00 0100 |001d: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007454: 0c01 |0020: move-result-object v1
+007456: 6e20 b100 1000 |0021: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00745c: 0e00 |0024: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=36
+ 0x0003 line=111
+ 0x0006 line=37
+ 0x0024 line=38
+ locals :
+ 0x0000 - 0x0025 reg=3 this Linvokecustom/InvokeCustom8;
+ 0x0000 - 0x0025 reg=4 (null) I
+
+ #3 : (in Linvokecustom/InvokeCustom8;)
+ name : 'bsmCreateCallSite'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 4
+ outs : 2
+ insns size : 36 16-bit code units
+007460: |[007460] invokecustom.InvokeCustom8.bsmCreateCallSite:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+007470: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007474: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007478: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00747e: 1a02 5600 |0007: const-string v2, "bsmCreateCallSite [" // string@0056
+007482: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007488: 0c01 |000c: move-result-object v1
+00748a: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007490: 0c01 |0010: move-result-object v1
+007492: 1a02 5200 |0011: const-string v2, "]" // string@0052
+007496: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00749c: 0c01 |0016: move-result-object v1
+00749e: 6e10 bb00 0100 |0017: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0074a4: 0c01 |001a: move-result-object v1
+0074a6: 6e20 b100 1000 |001b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0074ac: 2200 1b00 |001e: new-instance v0, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0074b0: 7020 bc00 6000 |0020: invoke-direct {v0, v6}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+0074b6: 1100 |0023: return-object v0
+ catches : (none)
+ positions :
+ 0x0000 line=156
+ 0x001e line=157
+ locals :
+ 0x0000 - 0x0024 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0024 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0024 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0024 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+
+ #4 : (in Linvokecustom/InvokeCustom8;)
+ name : 'bsmLookupStatic'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 5
+ ins : 3
+ outs : 4
+ insns size : 29 16-bit code units
+0074b8: |[0074b8] invokecustom.InvokeCustom8.bsmLookupStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+0074c8: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0074cc: 1a01 5800 |0002: const-string v1, "bsmLookupStatic []" // string@0058
+0074d0: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0074d6: 7100 c900 0000 |0007: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+0074dc: 0c00 |000a: move-result-object v0
+0074de: 6e10 c800 0000 |000b: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+0074e4: 0c01 |000e: move-result-object v1
+0074e6: 6e40 c700 1043 |000f: invoke-virtual {v0, v1, v3, v4}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+0074ec: 0c00 |0012: move-result-object v0
+0074ee: 2201 1b00 |0013: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0074f2: 6e20 bd00 4000 |0015: invoke-virtual {v0, v4}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+0074f8: 0c00 |0018: move-result-object v0
+0074fa: 7020 bc00 0100 |0019: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+007500: 1101 |001c: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=138
+ 0x0007 line=139
+ 0x000b line=140
+ 0x0013 line=141
+ locals :
+ 0x0000 - 0x001d reg=2 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x001d reg=3 (null) Ljava/lang/String;
+ 0x0000 - 0x001d reg=4 (null) Ljava/lang/invoke/MethodType;
+
+ #5 : (in Linvokecustom/InvokeCustom8;)
+ name : 'bsmLookupStaticWithExtraArgs'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 9
+ outs : 4
+ insns size : 82 16-bit code units
+007504: |[007504] invokecustom.InvokeCustom8.bsmLookupStaticWithExtraArgs:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;
+007514: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007518: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+00751c: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007522: 1a02 5a00 |0007: const-string v2, "bsmLookupStaticWithExtraArgs [" // string@005a
+007526: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00752c: 0c01 |000c: move-result-object v1
+00752e: 6e20 b700 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007534: 0c01 |0010: move-result-object v1
+007536: 1a02 0800 |0011: const-string v2, ", " // string@0008
+00753a: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007540: 0c01 |0016: move-result-object v1
+007542: 6e30 b800 7108 |0017: invoke-virtual {v1, v7, v8}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+007548: 0c01 |001a: move-result-object v1
+00754a: 1a02 0800 |001b: const-string v2, ", " // string@0008
+00754e: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007554: 0c01 |0020: move-result-object v1
+007556: 6e20 b600 9100 |0021: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00755c: 0c01 |0024: move-result-object v1
+00755e: 1a02 0800 |0025: const-string v2, ", " // string@0008
+007562: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007568: 0c01 |002a: move-result-object v1
+00756a: 6e30 b500 a10b |002b: invoke-virtual {v1, v10, v11}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+007570: 0c01 |002e: move-result-object v1
+007572: 1a02 5200 |002f: const-string v2, "]" // string@0052
+007576: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00757c: 0c01 |0034: move-result-object v1
+00757e: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007584: 0c01 |0038: move-result-object v1
+007586: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00758c: 7100 c900 0000 |003c: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+007592: 0c00 |003f: move-result-object v0
+007594: 6e10 c800 0000 |0040: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+00759a: 0c01 |0043: move-result-object v1
+00759c: 6e40 c700 1054 |0044: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+0075a2: 0c00 |0047: move-result-object v0
+0075a4: 2201 1b00 |0048: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0075a8: 6e20 bd00 5000 |004a: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+0075ae: 0c00 |004d: move-result-object v0
+0075b0: 7020 bc00 0100 |004e: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+0075b6: 1101 |0051: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=147
+ 0x003c line=148
+ 0x0040 line=149
+ 0x0048 line=150
+ locals :
+ 0x0000 - 0x0052 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0052 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0052 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0052 reg=6 (null) I
+ 0x0000 - 0x0052 reg=7 (null) J
+ 0x0000 - 0x0052 reg=9 (null) F
+ 0x0000 - 0x0052 reg=10 (null) D
+
+ #6 : (in Linvokecustom/InvokeCustom8;)
+ name : 'bsmLookupTest9'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 13
+ ins : 10
+ outs : 4
+ insns size : 135 16-bit code units
+0075b8: |[0075b8] invokecustom.InvokeCustom8.bsmLookupTest9:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+0075c8: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0075cc: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+0075d0: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0075d6: 1a02 5c00 |0007: const-string v2, "bsmLookupTest9 [" // string@005c
+0075da: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0075e0: 0c01 |000c: move-result-object v1
+0075e2: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0075e8: 0c01 |0010: move-result-object v1
+0075ea: 1a02 0800 |0011: const-string v2, ", " // string@0008
+0075ee: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0075f4: 0c01 |0016: move-result-object v1
+0075f6: 6e20 b900 7100 |0017: invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+0075fc: 0c01 |001a: move-result-object v1
+0075fe: 1a02 0800 |001b: const-string v2, ", " // string@0008
+007602: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007608: 0c01 |0020: move-result-object v1
+00760a: 6e20 b900 8100 |0021: invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007610: 0c01 |0024: move-result-object v1
+007612: 1a02 0800 |0025: const-string v2, ", " // string@0008
+007616: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00761c: 0c01 |002a: move-result-object v1
+00761e: 6e20 b900 9100 |002b: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007624: 0c01 |002e: move-result-object v1
+007626: 1a02 5200 |002f: const-string v2, "]" // string@0052
+00762a: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007630: 0c01 |0034: move-result-object v1
+007632: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007638: 0c01 |0038: move-result-object v1
+00763a: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007640: 6200 1000 |003c: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007644: 2201 1700 |003e: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007648: 7010 b400 0100 |0040: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00764e: 6e20 ba00 4100 |0043: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007654: 0c01 |0046: move-result-object v1
+007656: 1a02 0000 |0047: const-string v2, " " // string@0000
+00765a: 6e20 ba00 2100 |0049: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007660: 0c01 |004c: move-result-object v1
+007662: 6e20 b900 5100 |004d: invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007668: 0c01 |0050: move-result-object v1
+00766a: 6e10 bb00 0100 |0051: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007670: 0c01 |0054: move-result-object v1
+007672: 6e20 b100 1000 |0055: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007678: 7120 9b00 7600 |0058: invoke-static {v6, v7}, Linvokecustom/InvokeCustom;.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009b
+00767e: 2200 0e00 |005b: new-instance v0, Linvokecustom/InvokeCustom; // type@000e
+007682: 7010 9400 0000 |005d: invoke-direct {v0}, Linvokecustom/InvokeCustom;.<init>:()V // method@0094
+007688: 6f30 9a00 8009 |0060: invoke-super {v0, v8, v9}, Linvokecustom/InvokeCustom;.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009a
+00768e: fa20 c300 0a00 1c00 |0063: invoke-polymorphic {v10, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00c3, proto@001c
+007696: 1230 |0067: const/4 v0, #int 3 // #3
+007698: fa20 c300 0b00 0500 |0068: invoke-polymorphic {v11, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)Linvokecustom/InvokeCustom; // method@00c3, proto@0005
+0076a0: 0c00 |006c: move-result-object v0
+0076a2: fa20 be00 0c00 1c00 |006d: invoke-polymorphic {v12, v0}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00be, proto@001c
+0076aa: 7100 c900 0000 |0071: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+0076b0: 0c00 |0074: move-result-object v0
+0076b2: 6e10 c800 0000 |0075: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+0076b8: 0c01 |0078: move-result-object v1
+0076ba: 6e40 c700 1054 |0079: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+0076c0: 0c00 |007c: move-result-object v0
+0076c2: 2201 1b00 |007d: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+0076c6: 6e20 bd00 5000 |007f: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+0076cc: 0c00 |0082: move-result-object v0
+0076ce: 7020 bc00 0100 |0083: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+0076d4: 1101 |0086: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=166
+ 0x003c line=168
+ 0x0058 line=171
+ 0x005b line=172
+ 0x0060 line=173
+ 0x0063 line=176
+ 0x0067 line=178
+ 0x006d line=179
+ 0x0071 line=181
+ 0x0075 line=182
+ 0x007d line=183
+ locals :
+ 0x0000 - 0x0087 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0087 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0087 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0087 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=9 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=10 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=11 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=12 (null) Ljava/lang/invoke/MethodHandle;
+
+ #7 : (in Linvokecustom/InvokeCustom8;)
+ name : 'checkFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x0002 (PRIVATE)
+ code -
+ registers : 9
+ ins : 3
+ outs : 3
+ insns size : 82 16-bit code units
+0076d8: |[0076d8] invokecustom.InvokeCustom8.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+0076e8: 1405 0ff0 6a20 |0000: const v5, #float 1.99e-19 // #206af00f
+0076ee: fa20 c300 6700 0100 |0003: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+0076f6: 0a00 |0007: move-result v0
+0076f8: fa30 c300 6805 1d00 |0008: invoke-polymorphic {v8, v6, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;F)V // method@00c3, proto@001d
+007700: fa20 c300 6700 0100 |000c: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+007708: 0a01 |0010: move-result v1
+00770a: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00770e: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+007712: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007718: 1a04 5e00 |0018: const-string v4, "checkFieldTest9: old " // string@005e
+00771c: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007722: 0c03 |001d: move-result-object v3
+007724: 6e20 b600 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00772a: 0c00 |0021: move-result-object v0
+00772c: 1a03 0600 |0022: const-string v3, " new " // string@0006
+007730: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007736: 0c00 |0027: move-result-object v0
+007738: 6e20 b600 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00773e: 0c00 |002b: move-result-object v0
+007740: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+007744: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00774a: 0c00 |0031: move-result-object v0
+00774c: 6e20 b600 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+007752: 0c00 |0035: move-result-object v0
+007754: 1a03 0000 |0036: const-string v3, " " // string@0000
+007758: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00775e: 0c00 |003b: move-result-object v0
+007760: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007766: 0c00 |003f: move-result-object v0
+007768: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+00776e: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007772: 2d00 0105 |0045: cmpl-float v0, v1, v5
+007776: 3900 0800 |0047: if-nez v0, 004f // +0008
+00777a: 1a00 4000 |0049: const-string v0, "OK" // string@0040
+00777e: 6e20 b100 0200 |004b: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007784: 0e00 |004e: return-void
+007786: 1a00 1000 |004f: const-string v0, "ERROR" // string@0010
+00778a: 28fa |0051: goto 004b // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=116
+ 0x0008 line=117
+ 0x000c line=118
+ 0x0011 line=119
+ 0x0043 line=121
+ 0x004e line=122
+ 0x004f line=121
+ locals :
+ 0x0000 - 0x0052 reg=6 this Linvokecustom/InvokeCustom8;
+ 0x0000 - 0x0052 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0052 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+
+ #8 : (in Linvokecustom/InvokeCustom8;)
+ name : 'checkStaticFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 8
+ ins : 2
+ outs : 2
+ insns size : 80 16-bit code units
+00778c: |[00778c] invokecustom.InvokeCustom8.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+00779c: 1405 1032 5476 |0000: const v5, #float 1.07596e+33 // #76543210
+0077a2: fa10 c300 0600 0200 |0003: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+0077aa: 0a00 |0007: move-result v0
+0077ac: fa20 c300 5700 1a00 |0008: invoke-polymorphic {v7, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)V // method@00c3, proto@001a
+0077b4: fa10 c300 0600 0200 |000c: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+0077bc: 0a01 |0010: move-result v1
+0077be: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0077c2: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0077c6: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0077cc: 1a04 6000 |0018: const-string v4, "checkStaticFieldTest9: old " // string@0060
+0077d0: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0077d6: 0c03 |001d: move-result-object v3
+0077d8: 6e20 b700 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0077de: 0c00 |0021: move-result-object v0
+0077e0: 1a03 0600 |0022: const-string v3, " new " // string@0006
+0077e4: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0077ea: 0c00 |0027: move-result-object v0
+0077ec: 6e20 b700 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0077f2: 0c00 |002b: move-result-object v0
+0077f4: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+0077f8: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0077fe: 0c00 |0031: move-result-object v0
+007800: 6e20 b700 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007806: 0c00 |0035: move-result-object v0
+007808: 1a03 0000 |0036: const-string v3, " " // string@0000
+00780c: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007812: 0c00 |003b: move-result-object v0
+007814: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00781a: 0c00 |003f: move-result-object v0
+00781c: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+007822: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007826: 3351 0800 |0045: if-ne v1, v5, 004d // +0008
+00782a: 1a00 4000 |0047: const-string v0, "OK" // string@0040
+00782e: 6e20 b100 0200 |0049: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007834: 0e00 |004c: return-void
+007836: 1a00 1000 |004d: const-string v0, "ERROR" // string@0010
+00783a: 28fa |004f: goto 0049 // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=103
+ 0x0008 line=104
+ 0x000c line=105
+ 0x0011 line=106
+ 0x0043 line=108
+ 0x004c line=109
+ 0x004d line=108
+ locals :
+ 0x0000 - 0x0050 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0050 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+
+ #9 : (in Linvokecustom/InvokeCustom8;)
+ name : 'targetMethodTest1'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+00783c: |[00783c] invokecustom.InvokeCustom8.targetMethodTest1:()V
+00784c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007850: 1a01 1500 |0002: const-string v1, "Hello World!" // string@0015
+007854: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00785a: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=41
+ 0x0007 line=42
+ locals :
+
+ #10 : (in Linvokecustom/InvokeCustom8;)
+ name : 'targetMethodTest2'
+ type : '(ZBCSIFJDLjava/lang/String;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 13
+ ins : 11
+ outs : 3
+ insns size : 46 16-bit code units
+00785c: |[00785c] invokecustom.InvokeCustom8.targetMethodTest2:(ZBCSIFJDLjava/lang/String;)V
+00786c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007870: 6e20 b200 2000 |0002: invoke-virtual {v0, v2}, Ljava/io/PrintStream;.println:(Z)V // method@00b2
+007876: 6200 1000 |0005: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00787a: 6e20 af00 3000 |0007: invoke-virtual {v0, v3}, Ljava/io/PrintStream;.println:(I)V // method@00af
+007880: 6200 1000 |000a: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007884: 6e20 ac00 4000 |000c: invoke-virtual {v0, v4}, Ljava/io/PrintStream;.println:(C)V // method@00ac
+00788a: 6200 1000 |000f: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00788e: 6e20 af00 5000 |0011: invoke-virtual {v0, v5}, Ljava/io/PrintStream;.println:(I)V // method@00af
+007894: 6200 1000 |0014: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007898: 6e20 af00 6000 |0016: invoke-virtual {v0, v6}, Ljava/io/PrintStream;.println:(I)V // method@00af
+00789e: 6200 1000 |0019: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0078a2: 6e20 ae00 7000 |001b: invoke-virtual {v0, v7}, Ljava/io/PrintStream;.println:(F)V // method@00ae
+0078a8: 6200 1000 |001e: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0078ac: 6e30 b000 8009 |0020: invoke-virtual {v0, v8, v9}, Ljava/io/PrintStream;.println:(J)V // method@00b0
+0078b2: 6200 1000 |0023: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0078b6: 6e30 ad00 a00b |0025: invoke-virtual {v0, v10, v11}, Ljava/io/PrintStream;.println:(D)V // method@00ad
+0078bc: 6200 1000 |0028: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0078c0: 6e20 b100 c000 |002a: invoke-virtual {v0, v12}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0078c6: 0e00 |002d: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=46
+ 0x0005 line=47
+ 0x000a line=48
+ 0x000f line=49
+ 0x0014 line=50
+ 0x0019 line=51
+ 0x001e line=52
+ 0x0023 line=53
+ 0x0028 line=54
+ 0x002d line=55
+ locals :
+ 0x0000 - 0x002e reg=2 (null) Z
+ 0x0000 - 0x002e reg=3 (null) B
+ 0x0000 - 0x002e reg=4 (null) C
+ 0x0000 - 0x002e reg=5 (null) S
+ 0x0000 - 0x002e reg=6 (null) I
+ 0x0000 - 0x002e reg=7 (null) F
+ 0x0000 - 0x002e reg=8 (null) J
+ 0x0000 - 0x002e reg=10 (null) D
+ 0x0000 - 0x002e reg=12 (null) Ljava/lang/String;
+
+ #11 : (in Linvokecustom/InvokeCustom8;)
+ name : 'targetMethodTest3'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+0078c8: |[0078c8] invokecustom.InvokeCustom8.targetMethodTest3:()V
+0078d8: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0078dc: 1a01 7300 |0002: const-string v1, "targetMethodTest3 from InvokeCustom" // string@0073
+0078e0: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0078e6: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=58
+ 0x0007 line=59
+ locals :
+
+ #12 : (in Linvokecustom/InvokeCustom8;)
+ name : 'targetMethodTest5'
+ type : '(III)I'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 3
+ outs : 2
+ insns size : 83 16-bit code units
+0078e8: |[0078e8] invokecustom.InvokeCustom8.targetMethodTest5:(III)I
+0078f8: 9000 0405 |0000: add-int v0, v4, v5
+0078fc: 6201 1000 |0002: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007900: 2202 1700 |0004: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+007904: 7010 b400 0200 |0006: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00790a: 1a03 7800 |0009: const-string v3, "targetMethodTest5 " // string@0078
+00790e: 6e20 ba00 3200 |000b: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007914: 0c02 |000e: move-result-object v2
+007916: 6e20 b700 4200 |000f: invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00791c: 0c02 |0012: move-result-object v2
+00791e: 1a03 0300 |0013: const-string v3, " + " // string@0003
+007922: 6e20 ba00 3200 |0015: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007928: 0c02 |0018: move-result-object v2
+00792a: 6e20 b700 5200 |0019: invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007930: 0c02 |001c: move-result-object v2
+007932: 1a03 0400 |001d: const-string v3, " = " // string@0004
+007936: 6e20 ba00 3200 |001f: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00793c: 0c02 |0022: move-result-object v2
+00793e: 6e20 b700 0200 |0023: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007944: 0c02 |0026: move-result-object v2
+007946: 6e10 bb00 0200 |0027: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00794c: 0c02 |002a: move-result-object v2
+00794e: 6e20 b100 2100 |002b: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007954: 3260 2400 |002e: if-eq v0, v6, 0052 // +0024
+007958: 6201 1000 |0030: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00795c: 2202 1700 |0032: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+007960: 7010 b400 0200 |0034: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007966: 1a03 1300 |0037: const-string v3, "Failed " // string@0013
+00796a: 6e20 ba00 3200 |0039: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007970: 0c02 |003c: move-result-object v2
+007972: 6e20 b700 0200 |003d: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007978: 0c02 |0040: move-result-object v2
+00797a: 1a03 0100 |0041: const-string v3, " != " // string@0001
+00797e: 6e20 ba00 3200 |0043: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007984: 0c02 |0046: move-result-object v2
+007986: 6e20 b700 6200 |0047: invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00798c: 0c02 |004a: move-result-object v2
+00798e: 6e10 bb00 0200 |004b: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007994: 0c02 |004e: move-result-object v2
+007996: 6e20 b100 2100 |004f: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00799c: 0f00 |0052: return v0
+ catches : (none)
+ positions :
+ 0x0000 line=68
+ 0x0002 line=69
+ 0x002e line=70
+ 0x0030 line=71
+ 0x0052 line=73
+ locals :
+ 0x0000 - 0x0053 reg=4 (null) I
+ 0x0000 - 0x0053 reg=5 (null) I
+ 0x0000 - 0x0053 reg=6 (null) I
+
+ #13 : (in Linvokecustom/InvokeCustom8;)
+ name : 'targetMethodTest6'
+ type : '(JJJ)J'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 6
+ outs : 3
+ insns size : 85 16-bit code units
+0079a0: |[0079a0] invokecustom.InvokeCustom8.targetMethodTest6:(JJJ)J
+0079b0: 9b00 0608 |0000: add-long v0, v6, v8
+0079b4: 6202 1000 |0002: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0079b8: 2203 1700 |0004: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0079bc: 7010 b400 0300 |0006: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0079c2: 1a04 7b00 |0009: const-string v4, "targetMethodTest6 " // string@007b
+0079c6: 6e20 ba00 4300 |000b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0079cc: 0c03 |000e: move-result-object v3
+0079ce: 6e30 b800 6307 |000f: invoke-virtual {v3, v6, v7}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0079d4: 0c03 |0012: move-result-object v3
+0079d6: 1a04 0300 |0013: const-string v4, " + " // string@0003
+0079da: 6e20 ba00 4300 |0015: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0079e0: 0c03 |0018: move-result-object v3
+0079e2: 6e30 b800 8309 |0019: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0079e8: 0c03 |001c: move-result-object v3
+0079ea: 1a04 0400 |001d: const-string v4, " = " // string@0004
+0079ee: 6e20 ba00 4300 |001f: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0079f4: 0c03 |0022: move-result-object v3
+0079f6: 6e30 b800 0301 |0023: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0079fc: 0c03 |0026: move-result-object v3
+0079fe: 6e10 bb00 0300 |0027: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007a04: 0c03 |002a: move-result-object v3
+007a06: 6e20 b100 3200 |002b: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007a0c: 3102 000a |002e: cmp-long v2, v0, v10
+007a10: 3802 2400 |0030: if-eqz v2, 0054 // +0024
+007a14: 6202 1000 |0032: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007a18: 2203 1700 |0034: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+007a1c: 7010 b400 0300 |0036: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007a22: 1a04 1300 |0039: const-string v4, "Failed " // string@0013
+007a26: 6e20 ba00 4300 |003b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007a2c: 0c03 |003e: move-result-object v3
+007a2e: 6e30 b800 0301 |003f: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+007a34: 0c03 |0042: move-result-object v3
+007a36: 1a04 0100 |0043: const-string v4, " != " // string@0001
+007a3a: 6e20 ba00 4300 |0045: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007a40: 0c03 |0048: move-result-object v3
+007a42: 6e30 b800 a30b |0049: invoke-virtual {v3, v10, v11}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+007a48: 0c03 |004c: move-result-object v3
+007a4a: 6e10 bb00 0300 |004d: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007a50: 0c03 |0050: move-result-object v3
+007a52: 6e20 b100 3200 |0051: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007a58: 1000 |0054: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=77
+ 0x0002 line=78
+ 0x002e line=79
+ 0x0032 line=80
+ 0x0054 line=82
+ locals :
+ 0x0000 - 0x0055 reg=6 (null) J
+ 0x0000 - 0x0055 reg=8 (null) J
+ 0x0000 - 0x0055 reg=10 (null) J
+
+ #14 : (in Linvokecustom/InvokeCustom8;)
+ name : 'targetMethodTest7'
+ type : '(FFD)D'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 10
+ ins : 4
+ outs : 3
+ insns size : 86 16-bit code units
+007a5c: |[007a5c] invokecustom.InvokeCustom8.targetMethodTest7:(FFD)D
+007a6c: a800 0607 |0000: mul-float v0, v6, v7
+007a70: 8900 |0002: float-to-double v0, v0
+007a72: 6202 1000 |0003: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007a76: 2203 1700 |0005: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+007a7a: 7010 b400 0300 |0007: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007a80: 1a04 7e00 |000a: const-string v4, "targetMethodTest7 " // string@007e
+007a84: 6e20 ba00 4300 |000c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007a8a: 0c03 |000f: move-result-object v3
+007a8c: 6e20 b600 6300 |0010: invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+007a92: 0c03 |0013: move-result-object v3
+007a94: 1a04 0200 |0014: const-string v4, " * " // string@0002
+007a98: 6e20 ba00 4300 |0016: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007a9e: 0c03 |0019: move-result-object v3
+007aa0: 6e20 b600 7300 |001a: invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+007aa6: 0c03 |001d: move-result-object v3
+007aa8: 1a04 0400 |001e: const-string v4, " = " // string@0004
+007aac: 6e20 ba00 4300 |0020: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007ab2: 0c03 |0023: move-result-object v3
+007ab4: 6e30 b500 0301 |0024: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+007aba: 0c03 |0027: move-result-object v3
+007abc: 6e10 bb00 0300 |0028: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007ac2: 0c03 |002b: move-result-object v3
+007ac4: 6e20 b100 3200 |002c: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007aca: 2f02 0008 |002f: cmpl-double v2, v0, v8
+007ace: 3802 2400 |0031: if-eqz v2, 0055 // +0024
+007ad2: 6202 1000 |0033: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007ad6: 2203 1700 |0035: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+007ada: 7010 b400 0300 |0037: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007ae0: 1a04 1300 |003a: const-string v4, "Failed " // string@0013
+007ae4: 6e20 ba00 4300 |003c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007aea: 0c03 |003f: move-result-object v3
+007aec: 6e30 b500 0301 |0040: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+007af2: 0c03 |0043: move-result-object v3
+007af4: 1a04 0100 |0044: const-string v4, " != " // string@0001
+007af8: 6e20 ba00 4300 |0046: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007afe: 0c03 |0049: move-result-object v3
+007b00: 6e30 b500 8309 |004a: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+007b06: 0c03 |004d: move-result-object v3
+007b08: 6e10 bb00 0300 |004e: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007b0e: 0c03 |0051: move-result-object v3
+007b10: 6e20 b100 3200 |0052: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007b16: 1000 |0055: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=86
+ 0x0003 line=87
+ 0x002f line=88
+ 0x0033 line=89
+ 0x0055 line=91
+ locals :
+ 0x0000 - 0x0056 reg=6 (null) F
+ 0x0000 - 0x0056 reg=7 (null) F
+ 0x0000 - 0x0056 reg=8 (null) D
+
+ #15 : (in Linvokecustom/InvokeCustom8;)
+ name : 'targetMethodTest8'
+ type : '(Ljava/lang/String;)V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 25 16-bit code units
+007b18: |[007b18] invokecustom.InvokeCustom8.targetMethodTest8:(Ljava/lang/String;)V
+007b28: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007b2c: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007b30: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007b36: 1a02 8000 |0007: const-string v2, "targetMethodTest8 " // string@0080
+007b3a: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007b40: 0c01 |000c: move-result-object v1
+007b42: 6e20 ba00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007b48: 0c01 |0010: move-result-object v1
+007b4a: 6e10 bb00 0100 |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007b50: 0c01 |0014: move-result-object v1
+007b52: 6e20 b100 1000 |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007b58: 0e00 |0018: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=95
+ 0x0018 line=96
+ locals :
+ 0x0000 - 0x0019 reg=3 (null) Ljava/lang/String;
+
+ #16 : (in Linvokecustom/InvokeCustom8;)
+ name : 'targetMethodTest9'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+007b5c: |[007b5c] invokecustom.InvokeCustom8.targetMethodTest9:()V
+007b6c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007b70: 1a01 8200 |0002: const-string v1, "targetMethodTest9()" // string@0082
+007b74: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007b7a: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=129
+ 0x0007 line=130
+ locals :
+
+ #17 : (in Linvokecustom/InvokeCustom8;)
+ name : 'test8'
+ type : '()V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 1
+ ins : 0
+ outs : 1
+ insns size : 16 16-bit code units
+007b7c: |[007b7c] invokecustom.InvokeCustom8.test8:()V
+007b8c: 1a00 1400 |0000: const-string v0, "First invokedynamic invocation" // string@0014
+007b90: fc10 0f00 0000 |0002: invoke-custom {v0}, call_site@000f
+007b96: 1a00 4200 |0005: const-string v0, "Second invokedynamic invocation" // string@0042
+007b9a: fc10 1000 0000 |0007: invoke-custom {v0}, call_site@0010
+007ba0: 1a00 0f00 |000a: const-string v0, "Dupe first invokedynamic invocation" // string@000f
+007ba4: fc10 1100 0000 |000c: invoke-custom {v0}, call_site@0011
+007baa: 0e00 |000f: return-void
+ catches : (none)
+ positions :
+ locals :
+
+ Virtual methods -
+ #0 : (in Linvokecustom/InvokeCustom8;)
+ name : 'helperMethodTest9'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 27 16-bit code units
+007bac: |[007bac] invokecustom.InvokeCustom8.helperMethodTest9:()V
+007bbc: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007bc0: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007bc4: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007bca: 1a02 6400 |0007: const-string v2, "helperMethodTest9 in " // string@0064
+007bce: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007bd4: 0c01 |000c: move-result-object v1
+007bd6: 1c02 0e00 |000d: const-class v2, Linvokecustom/InvokeCustom; // type@000e
+007bda: 6e20 b900 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007be0: 0c01 |0012: move-result-object v1
+007be2: 6e10 bb00 0100 |0013: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007be8: 0c01 |0016: move-result-object v1
+007bea: 6e20 b100 1000 |0017: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007bf0: 0e00 |001a: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=125
+ 0x001a line=126
+ locals :
+ 0x0000 - 0x001b reg=3 this Linvokecustom/InvokeCustom8;
+
+ #1 : (in Linvokecustom/InvokeCustom8;)
+ name : 'run'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+007bf4: |[007bf4] invokecustom.InvokeCustom8.run:()V
+007c04: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007c08: 1a01 6e00 |0002: const-string v1, "run() for Test9" // string@006e
+007c0c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007c12: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=133
+ 0x0007 line=134
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom8;
+
+ #2 : (in Linvokecustom/InvokeCustom8;)
+ name : 'targetMethodTest4'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+007c14: |[007c14] invokecustom.InvokeCustom8.targetMethodTest4:()V
+007c24: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007c28: 1a01 7500 |0002: const-string v1, "targetMethodTest4 from InvokeCustom (oops!)" // string@0075
+007c2c: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007c32: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=64
+ 0x0007 line=65
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom8;
+
+ source_file_idx : 25 (InvokeCustom.java)
+
+Class #8 -
+ Class descriptor : 'Linvokecustom/InvokeCustom;'
+ Access flags : 0x0001 (PUBLIC)
+ Superclass : 'Linvokecustom/Super;'
+ Interfaces -
+ #0 : 'Ljava/lang/Runnable;'
+ Static fields -
+ #0 : (in Linvokecustom/InvokeCustom;)
+ name : 'staticFieldTest9'
+ type : 'I'
+ access : 0x000a (PRIVATE STATIC)
+ Instance fields -
+ #0 : (in Linvokecustom/InvokeCustom;)
+ name : 'fieldTest9'
+ type : 'F'
+ access : 0x0002 (PRIVATE)
+ Direct methods -
+ #0 : (in Linvokecustom/InvokeCustom;)
+ name : '<clinit>'
+ type : '()V'
+ access : 0x10008 (STATIC CONSTRUCTOR)
+ code -
+ registers : 1
+ ins : 0
+ outs : 0
+ insns size : 4 16-bit code units
+007c34: |[007c34] invokecustom.InvokeCustom.<clinit>:()V
+007c44: 1200 |0000: const/4 v0, #int 0 // #0
+007c46: 6700 0f00 |0001: sput v0, Linvokecustom/InvokeCustom;.staticFieldTest9:I // field@000f
+007c4a: 0e00 |0003: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=98
+ locals :
+
+ #1 : (in Linvokecustom/InvokeCustom;)
+ name : '<init>'
+ type : '()V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 2
+ ins : 1
+ outs : 1
+ insns size : 7 16-bit code units
+007c4c: |[007c4c] invokecustom.InvokeCustom.<init>:()V
+007c5c: 7010 a800 0100 |0000: invoke-direct {v1}, Linvokecustom/Super;.<init>:()V // method@00a8
+007c62: 1200 |0003: const/4 v0, #int 0 // #0
+007c64: 5910 0e00 |0004: iput v0, v1, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+007c68: 0e00 |0006: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=35
+ 0x0003 line=111
+ 0x0006 line=35
+ locals :
+ 0x0000 - 0x0007 reg=1 this Linvokecustom/InvokeCustom;
+
+ #2 : (in Linvokecustom/InvokeCustom;)
+ name : '<init>'
+ type : '(I)V'
+ access : 0x10001 (PUBLIC CONSTRUCTOR)
+ code -
+ registers : 5
+ ins : 2
+ outs : 2
+ insns size : 37 16-bit code units
+007c6c: |[007c6c] invokecustom.InvokeCustom.<init>:(I)V
+007c7c: 7010 a800 0300 |0000: invoke-direct {v3}, Linvokecustom/Super;.<init>:()V // method@00a8
+007c82: 1200 |0003: const/4 v0, #int 0 // #0
+007c84: 5930 0e00 |0004: iput v0, v3, Linvokecustom/InvokeCustom;.fieldTest9:F // field@000e
+007c88: 6200 1000 |0006: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007c8c: 2201 1700 |0008: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007c90: 7010 b400 0100 |000a: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007c96: 1a02 1800 |000d: const-string v2, "InvokeCustom.<init>(" // string@0018
+007c9a: 6e20 ba00 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007ca0: 0c01 |0012: move-result-object v1
+007ca2: 6e20 b700 4100 |0013: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007ca8: 0c01 |0016: move-result-object v1
+007caa: 1a02 0700 |0017: const-string v2, ")" // string@0007
+007cae: 6e20 ba00 2100 |0019: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007cb4: 0c01 |001c: move-result-object v1
+007cb6: 6e10 bb00 0100 |001d: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007cbc: 0c01 |0020: move-result-object v1
+007cbe: 6e20 b100 1000 |0021: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007cc4: 0e00 |0024: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=36
+ 0x0003 line=111
+ 0x0006 line=37
+ 0x0024 line=38
+ locals :
+ 0x0000 - 0x0025 reg=3 this Linvokecustom/InvokeCustom;
+ 0x0000 - 0x0025 reg=4 (null) I
+
+ #3 : (in Linvokecustom/InvokeCustom;)
+ name : 'bsmCreateCallSite'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 4
+ outs : 2
+ insns size : 36 16-bit code units
+007cc8: |[007cc8] invokecustom.InvokeCustom.bsmCreateCallSite:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+007cd8: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007cdc: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007ce0: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007ce6: 1a02 5600 |0007: const-string v2, "bsmCreateCallSite [" // string@0056
+007cea: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007cf0: 0c01 |000c: move-result-object v1
+007cf2: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007cf8: 0c01 |0010: move-result-object v1
+007cfa: 1a02 5200 |0011: const-string v2, "]" // string@0052
+007cfe: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007d04: 0c01 |0016: move-result-object v1
+007d06: 6e10 bb00 0100 |0017: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007d0c: 0c01 |001a: move-result-object v1
+007d0e: 6e20 b100 1000 |001b: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007d14: 2200 1b00 |001e: new-instance v0, Ljava/lang/invoke/ConstantCallSite; // type@001b
+007d18: 7020 bc00 6000 |0020: invoke-direct {v0, v6}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+007d1e: 1100 |0023: return-object v0
+ catches : (none)
+ positions :
+ 0x0000 line=156
+ 0x001e line=157
+ locals :
+ 0x0000 - 0x0024 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0024 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0024 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0024 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+
+ #4 : (in Linvokecustom/InvokeCustom;)
+ name : 'bsmLookupStatic'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 5
+ ins : 3
+ outs : 4
+ insns size : 29 16-bit code units
+007d20: |[007d20] invokecustom.InvokeCustom.bsmLookupStatic:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+007d30: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007d34: 1a01 5800 |0002: const-string v1, "bsmLookupStatic []" // string@0058
+007d38: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007d3e: 7100 c900 0000 |0007: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+007d44: 0c00 |000a: move-result-object v0
+007d46: 6e10 c800 0000 |000b: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+007d4c: 0c01 |000e: move-result-object v1
+007d4e: 6e40 c700 1043 |000f: invoke-virtual {v0, v1, v3, v4}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+007d54: 0c00 |0012: move-result-object v0
+007d56: 2201 1b00 |0013: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+007d5a: 6e20 bd00 4000 |0015: invoke-virtual {v0, v4}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+007d60: 0c00 |0018: move-result-object v0
+007d62: 7020 bc00 0100 |0019: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+007d68: 1101 |001c: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=138
+ 0x0007 line=139
+ 0x000b line=140
+ 0x0013 line=141
+ locals :
+ 0x0000 - 0x001d reg=2 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x001d reg=3 (null) Ljava/lang/String;
+ 0x0000 - 0x001d reg=4 (null) Ljava/lang/invoke/MethodType;
+
+ #5 : (in Linvokecustom/InvokeCustom;)
+ name : 'bsmLookupStaticWithExtraArgs'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 9
+ outs : 4
+ insns size : 82 16-bit code units
+007d6c: |[007d6c] invokecustom.InvokeCustom.bsmLookupStaticWithExtraArgs:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;
+007d7c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007d80: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007d84: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007d8a: 1a02 5a00 |0007: const-string v2, "bsmLookupStaticWithExtraArgs [" // string@005a
+007d8e: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007d94: 0c01 |000c: move-result-object v1
+007d96: 6e20 b700 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+007d9c: 0c01 |0010: move-result-object v1
+007d9e: 1a02 0800 |0011: const-string v2, ", " // string@0008
+007da2: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007da8: 0c01 |0016: move-result-object v1
+007daa: 6e30 b800 7108 |0017: invoke-virtual {v1, v7, v8}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+007db0: 0c01 |001a: move-result-object v1
+007db2: 1a02 0800 |001b: const-string v2, ", " // string@0008
+007db6: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007dbc: 0c01 |0020: move-result-object v1
+007dbe: 6e20 b600 9100 |0021: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+007dc4: 0c01 |0024: move-result-object v1
+007dc6: 1a02 0800 |0025: const-string v2, ", " // string@0008
+007dca: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007dd0: 0c01 |002a: move-result-object v1
+007dd2: 6e30 b500 a10b |002b: invoke-virtual {v1, v10, v11}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+007dd8: 0c01 |002e: move-result-object v1
+007dda: 1a02 5200 |002f: const-string v2, "]" // string@0052
+007dde: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007de4: 0c01 |0034: move-result-object v1
+007de6: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007dec: 0c01 |0038: move-result-object v1
+007dee: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007df4: 7100 c900 0000 |003c: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+007dfa: 0c00 |003f: move-result-object v0
+007dfc: 6e10 c800 0000 |0040: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+007e02: 0c01 |0043: move-result-object v1
+007e04: 6e40 c700 1054 |0044: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+007e0a: 0c00 |0047: move-result-object v0
+007e0c: 2201 1b00 |0048: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+007e10: 6e20 bd00 5000 |004a: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+007e16: 0c00 |004d: move-result-object v0
+007e18: 7020 bc00 0100 |004e: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+007e1e: 1101 |0051: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=147
+ 0x003c line=148
+ 0x0040 line=149
+ 0x0048 line=150
+ locals :
+ 0x0000 - 0x0052 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0052 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0052 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0052 reg=6 (null) I
+ 0x0000 - 0x0052 reg=7 (null) J
+ 0x0000 - 0x0052 reg=9 (null) F
+ 0x0000 - 0x0052 reg=10 (null) D
+
+ #6 : (in Linvokecustom/InvokeCustom;)
+ name : 'bsmLookupTest9'
+ type : '(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 13
+ ins : 10
+ outs : 4
+ insns size : 135 16-bit code units
+007e20: |[007e20] invokecustom.InvokeCustom.bsmLookupTest9:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/CallSite;
+007e30: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007e34: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007e38: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007e3e: 1a02 5c00 |0007: const-string v2, "bsmLookupTest9 [" // string@005c
+007e42: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007e48: 0c01 |000c: move-result-object v1
+007e4a: 6e20 b900 6100 |000d: invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007e50: 0c01 |0010: move-result-object v1
+007e52: 1a02 0800 |0011: const-string v2, ", " // string@0008
+007e56: 6e20 ba00 2100 |0013: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007e5c: 0c01 |0016: move-result-object v1
+007e5e: 6e20 b900 7100 |0017: invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007e64: 0c01 |001a: move-result-object v1
+007e66: 1a02 0800 |001b: const-string v2, ", " // string@0008
+007e6a: 6e20 ba00 2100 |001d: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007e70: 0c01 |0020: move-result-object v1
+007e72: 6e20 b900 8100 |0021: invoke-virtual {v1, v8}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007e78: 0c01 |0024: move-result-object v1
+007e7a: 1a02 0800 |0025: const-string v2, ", " // string@0008
+007e7e: 6e20 ba00 2100 |0027: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007e84: 0c01 |002a: move-result-object v1
+007e86: 6e20 b900 9100 |002b: invoke-virtual {v1, v9}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007e8c: 0c01 |002e: move-result-object v1
+007e8e: 1a02 5200 |002f: const-string v2, "]" // string@0052
+007e92: 6e20 ba00 2100 |0031: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007e98: 0c01 |0034: move-result-object v1
+007e9a: 6e10 bb00 0100 |0035: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007ea0: 0c01 |0038: move-result-object v1
+007ea2: 6e20 b100 1000 |0039: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007ea8: 6200 1000 |003c: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007eac: 2201 1700 |003e: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+007eb0: 7010 b400 0100 |0040: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007eb6: 6e20 ba00 4100 |0043: invoke-virtual {v1, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007ebc: 0c01 |0046: move-result-object v1
+007ebe: 1a02 0000 |0047: const-string v2, " " // string@0000
+007ec2: 6e20 ba00 2100 |0049: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007ec8: 0c01 |004c: move-result-object v1
+007eca: 6e20 b900 5100 |004d: invoke-virtual {v1, v5}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+007ed0: 0c01 |0050: move-result-object v1
+007ed2: 6e10 bb00 0100 |0051: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007ed8: 0c01 |0054: move-result-object v1
+007eda: 6e20 b100 1000 |0055: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007ee0: 7120 9b00 7600 |0058: invoke-static {v6, v7}, Linvokecustom/InvokeCustom;.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009b
+007ee6: 2200 0e00 |005b: new-instance v0, Linvokecustom/InvokeCustom; // type@000e
+007eea: 7010 9400 0000 |005d: invoke-direct {v0}, Linvokecustom/InvokeCustom;.<init>:()V // method@0094
+007ef0: 7030 9a00 8009 |0060: invoke-direct {v0, v8, v9}, Linvokecustom/InvokeCustom;.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V // method@009a
+007ef6: fa20 c300 0a00 1c00 |0063: invoke-polymorphic {v10, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00c3, proto@001c
+007efe: 1230 |0067: const/4 v0, #int 3 // #3
+007f00: fa20 c300 0b00 0500 |0068: invoke-polymorphic {v11, v0}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)Linvokecustom/InvokeCustom; // method@00c3, proto@0005
+007f08: 0c00 |006c: move-result-object v0
+007f0a: fa20 be00 0c00 1c00 |006d: invoke-polymorphic {v12, v0}, Ljava/lang/invoke/MethodHandle;.invoke:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)V // method@00be, proto@001c
+007f12: 7100 c900 0000 |0071: invoke-static {}, Ljava/lang/invoke/MethodHandles;.lookup:()Ljava/lang/invoke/MethodHandles$Lookup; // method@00c9
+007f18: 0c00 |0074: move-result-object v0
+007f1a: 6e10 c800 0000 |0075: invoke-virtual {v0}, Ljava/lang/invoke/MethodHandles$Lookup;.lookupClass:()Ljava/lang/Class; // method@00c8
+007f20: 0c01 |0078: move-result-object v1
+007f22: 6e40 c700 1054 |0079: invoke-virtual {v0, v1, v4, v5}, Ljava/lang/invoke/MethodHandles$Lookup;.findStatic:(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00c7
+007f28: 0c00 |007c: move-result-object v0
+007f2a: 2201 1b00 |007d: new-instance v1, Ljava/lang/invoke/ConstantCallSite; // type@001b
+007f2e: 6e20 bd00 5000 |007f: invoke-virtual {v0, v5}, Ljava/lang/invoke/MethodHandle;.asType:(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; // method@00bd
+007f34: 0c00 |0082: move-result-object v0
+007f36: 7020 bc00 0100 |0083: invoke-direct {v1, v0}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00bc
+007f3c: 1101 |0086: return-object v1
+ catches : (none)
+ positions :
+ 0x0000 line=166
+ 0x003c line=168
+ 0x0058 line=171
+ 0x005b line=172
+ 0x0060 line=173
+ 0x0063 line=176
+ 0x0067 line=178
+ 0x006d line=179
+ 0x0071 line=181
+ 0x0075 line=182
+ 0x007d line=183
+ locals :
+ 0x0000 - 0x0087 reg=3 (null) Ljava/lang/invoke/MethodHandles$Lookup;
+ 0x0000 - 0x0087 reg=4 (null) Ljava/lang/String;
+ 0x0000 - 0x0087 reg=5 (null) Ljava/lang/invoke/MethodType;
+ 0x0000 - 0x0087 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=9 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=10 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=11 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0087 reg=12 (null) Ljava/lang/invoke/MethodHandle;
+
+ #7 : (in Linvokecustom/InvokeCustom;)
+ name : 'checkFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x0002 (PRIVATE)
+ code -
+ registers : 9
+ ins : 3
+ outs : 3
+ insns size : 82 16-bit code units
+007f40: |[007f40] invokecustom.InvokeCustom.checkFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+007f50: 1405 0ff0 6a20 |0000: const v5, #float 1.99e-19 // #206af00f
+007f56: fa20 c300 6700 0100 |0003: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+007f5e: 0a00 |0007: move-result v0
+007f60: fa30 c300 6805 1d00 |0008: invoke-polymorphic {v8, v6, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;F)V // method@00c3, proto@001d
+007f68: fa20 c300 6700 0100 |000c: invoke-polymorphic {v7, v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (Linvokecustom/InvokeCustom;)F // method@00c3, proto@0001
+007f70: 0a01 |0010: move-result v1
+007f72: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007f76: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+007f7a: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+007f80: 1a04 5e00 |0018: const-string v4, "checkFieldTest9: old " // string@005e
+007f84: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007f8a: 0c03 |001d: move-result-object v3
+007f8c: 6e20 b600 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+007f92: 0c00 |0021: move-result-object v0
+007f94: 1a03 0600 |0022: const-string v3, " new " // string@0006
+007f98: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007f9e: 0c00 |0027: move-result-object v0
+007fa0: 6e20 b600 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+007fa6: 0c00 |002b: move-result-object v0
+007fa8: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+007fac: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007fb2: 0c00 |0031: move-result-object v0
+007fb4: 6e20 b600 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+007fba: 0c00 |0035: move-result-object v0
+007fbc: 1a03 0000 |0036: const-string v3, " " // string@0000
+007fc0: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+007fc6: 0c00 |003b: move-result-object v0
+007fc8: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+007fce: 0c00 |003f: move-result-object v0
+007fd0: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+007fd6: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+007fda: 2d00 0105 |0045: cmpl-float v0, v1, v5
+007fde: 3900 0800 |0047: if-nez v0, 004f // +0008
+007fe2: 1a00 4000 |0049: const-string v0, "OK" // string@0040
+007fe6: 6e20 b100 0200 |004b: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+007fec: 0e00 |004e: return-void
+007fee: 1a00 1000 |004f: const-string v0, "ERROR" // string@0010
+007ff2: 28fa |0051: goto 004b // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=116
+ 0x0008 line=117
+ 0x000c line=118
+ 0x0011 line=119
+ 0x0043 line=121
+ 0x004e line=122
+ 0x004f line=121
+ locals :
+ 0x0000 - 0x0052 reg=6 this Linvokecustom/InvokeCustom;
+ 0x0000 - 0x0052 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0052 reg=8 (null) Ljava/lang/invoke/MethodHandle;
+
+ #8 : (in Linvokecustom/InvokeCustom;)
+ name : 'checkStaticFieldTest9'
+ type : '(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 8
+ ins : 2
+ outs : 2
+ insns size : 80 16-bit code units
+007ff4: |[007ff4] invokecustom.InvokeCustom.checkStaticFieldTest9:(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V
+008004: 1405 1032 5476 |0000: const v5, #float 1.07596e+33 // #76543210
+00800a: fa10 c300 0600 0200 |0003: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+008012: 0a00 |0007: move-result v0
+008014: fa20 c300 5700 1a00 |0008: invoke-polymorphic {v7, v5}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, (I)V // method@00c3, proto@001a
+00801c: fa10 c300 0600 0200 |000c: invoke-polymorphic {v6}, Ljava/lang/invoke/MethodHandle;.invokeExact:([Ljava/lang/Object;)Ljava/lang/Object;, ()I // method@00c3, proto@0002
+008024: 0a01 |0010: move-result v1
+008026: 6202 1000 |0011: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00802a: 2203 1700 |0013: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+00802e: 7010 b400 0300 |0015: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+008034: 1a04 6000 |0018: const-string v4, "checkStaticFieldTest9: old " // string@0060
+008038: 6e20 ba00 4300 |001a: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00803e: 0c03 |001d: move-result-object v3
+008040: 6e20 b700 0300 |001e: invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+008046: 0c00 |0021: move-result-object v0
+008048: 1a03 0600 |0022: const-string v3, " new " // string@0006
+00804c: 6e20 ba00 3000 |0024: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008052: 0c00 |0027: move-result-object v0
+008054: 6e20 b700 1000 |0028: invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00805a: 0c00 |002b: move-result-object v0
+00805c: 1a03 0500 |002c: const-string v3, " expected " // string@0005
+008060: 6e20 ba00 3000 |002e: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008066: 0c00 |0031: move-result-object v0
+008068: 6e20 b700 5000 |0032: invoke-virtual {v0, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00806e: 0c00 |0035: move-result-object v0
+008070: 1a03 0000 |0036: const-string v3, " " // string@0000
+008074: 6e20 ba00 3000 |0038: invoke-virtual {v0, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00807a: 0c00 |003b: move-result-object v0
+00807c: 6e10 bb00 0000 |003c: invoke-virtual {v0}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+008082: 0c00 |003f: move-result-object v0
+008084: 6e20 ab00 0200 |0040: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.print:(Ljava/lang/String;)V // method@00ab
+00808a: 6202 1000 |0043: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00808e: 3351 0800 |0045: if-ne v1, v5, 004d // +0008
+008092: 1a00 4000 |0047: const-string v0, "OK" // string@0040
+008096: 6e20 b100 0200 |0049: invoke-virtual {v2, v0}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00809c: 0e00 |004c: return-void
+00809e: 1a00 1000 |004d: const-string v0, "ERROR" // string@0010
+0080a2: 28fa |004f: goto 0049 // -0006
+ catches : (none)
+ positions :
+ 0x0003 line=103
+ 0x0008 line=104
+ 0x000c line=105
+ 0x0011 line=106
+ 0x0043 line=108
+ 0x004c line=109
+ 0x004d line=108
+ locals :
+ 0x0000 - 0x0050 reg=6 (null) Ljava/lang/invoke/MethodHandle;
+ 0x0000 - 0x0050 reg=7 (null) Ljava/lang/invoke/MethodHandle;
+
+ #9 : (in Linvokecustom/InvokeCustom;)
+ name : 'main'
+ type : '([Ljava/lang/String;)V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 1
+ ins : 1
+ outs : 0
+ insns size : 22 16-bit code units
+0080a4: |[0080a4] invokecustom.InvokeCustom.main:([Ljava/lang/String;)V
+0080b4: 7100 1400 0000 |0000: invoke-static {}, Linvokecustom/InvokeCustom1;.test1:()V // method@0014
+0080ba: 7100 2900 0000 |0003: invoke-static {}, Linvokecustom/InvokeCustom2;.test2:()V // method@0029
+0080c0: 7100 3e00 0000 |0006: invoke-static {}, Linvokecustom/InvokeCustom3;.test3:()V // method@003e
+0080c6: 7100 5300 0000 |0009: invoke-static {}, Linvokecustom/InvokeCustom5;.test5:()V // method@0053
+0080cc: 7100 6800 0000 |000c: invoke-static {}, Linvokecustom/InvokeCustom6;.test6:()V // method@0068
+0080d2: 7100 7d00 0000 |000f: invoke-static {}, Linvokecustom/InvokeCustom7;.test7:()V // method@007d
+0080d8: 7100 9200 0000 |0012: invoke-static {}, Linvokecustom/InvokeCustom8;.test8:()V // method@0092
+0080de: 0e00 |0015: return-void
+ catches : (none)
+ positions :
+ locals :
+
+ #10 : (in Linvokecustom/InvokeCustom;)
+ name : 'targetMethodTest1'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+0080e0: |[0080e0] invokecustom.InvokeCustom.targetMethodTest1:()V
+0080f0: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0080f4: 1a01 1500 |0002: const-string v1, "Hello World!" // string@0015
+0080f8: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0080fe: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=41
+ 0x0007 line=42
+ locals :
+
+ #11 : (in Linvokecustom/InvokeCustom;)
+ name : 'targetMethodTest2'
+ type : '(ZBCSIFJDLjava/lang/String;)V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 13
+ ins : 11
+ outs : 3
+ insns size : 46 16-bit code units
+008100: |[008100] invokecustom.InvokeCustom.targetMethodTest2:(ZBCSIFJDLjava/lang/String;)V
+008110: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008114: 6e20 b200 2000 |0002: invoke-virtual {v0, v2}, Ljava/io/PrintStream;.println:(Z)V // method@00b2
+00811a: 6200 1000 |0005: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00811e: 6e20 af00 3000 |0007: invoke-virtual {v0, v3}, Ljava/io/PrintStream;.println:(I)V // method@00af
+008124: 6200 1000 |000a: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008128: 6e20 ac00 4000 |000c: invoke-virtual {v0, v4}, Ljava/io/PrintStream;.println:(C)V // method@00ac
+00812e: 6200 1000 |000f: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008132: 6e20 af00 5000 |0011: invoke-virtual {v0, v5}, Ljava/io/PrintStream;.println:(I)V // method@00af
+008138: 6200 1000 |0014: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00813c: 6e20 af00 6000 |0016: invoke-virtual {v0, v6}, Ljava/io/PrintStream;.println:(I)V // method@00af
+008142: 6200 1000 |0019: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008146: 6e20 ae00 7000 |001b: invoke-virtual {v0, v7}, Ljava/io/PrintStream;.println:(F)V // method@00ae
+00814c: 6200 1000 |001e: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008150: 6e30 b000 8009 |0020: invoke-virtual {v0, v8, v9}, Ljava/io/PrintStream;.println:(J)V // method@00b0
+008156: 6200 1000 |0023: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00815a: 6e30 ad00 a00b |0025: invoke-virtual {v0, v10, v11}, Ljava/io/PrintStream;.println:(D)V // method@00ad
+008160: 6200 1000 |0028: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008164: 6e20 b100 c000 |002a: invoke-virtual {v0, v12}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00816a: 0e00 |002d: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=46
+ 0x0005 line=47
+ 0x000a line=48
+ 0x000f line=49
+ 0x0014 line=50
+ 0x0019 line=51
+ 0x001e line=52
+ 0x0023 line=53
+ 0x0028 line=54
+ 0x002d line=55
+ locals :
+ 0x0000 - 0x002e reg=2 (null) Z
+ 0x0000 - 0x002e reg=3 (null) B
+ 0x0000 - 0x002e reg=4 (null) C
+ 0x0000 - 0x002e reg=5 (null) S
+ 0x0000 - 0x002e reg=6 (null) I
+ 0x0000 - 0x002e reg=7 (null) F
+ 0x0000 - 0x002e reg=8 (null) J
+ 0x0000 - 0x002e reg=10 (null) D
+ 0x0000 - 0x002e reg=12 (null) Ljava/lang/String;
+
+ #12 : (in Linvokecustom/InvokeCustom;)
+ name : 'targetMethodTest3'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+00816c: |[00816c] invokecustom.InvokeCustom.targetMethodTest3:()V
+00817c: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008180: 1a01 7300 |0002: const-string v1, "targetMethodTest3 from InvokeCustom" // string@0073
+008184: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00818a: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=58
+ 0x0007 line=59
+ locals :
+
+ #13 : (in Linvokecustom/InvokeCustom;)
+ name : 'targetMethodTest5'
+ type : '(III)I'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 7
+ ins : 3
+ outs : 2
+ insns size : 83 16-bit code units
+00818c: |[00818c] invokecustom.InvokeCustom.targetMethodTest5:(III)I
+00819c: 9000 0405 |0000: add-int v0, v4, v5
+0081a0: 6201 1000 |0002: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0081a4: 2202 1700 |0004: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+0081a8: 7010 b400 0200 |0006: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0081ae: 1a03 7800 |0009: const-string v3, "targetMethodTest5 " // string@0078
+0081b2: 6e20 ba00 3200 |000b: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0081b8: 0c02 |000e: move-result-object v2
+0081ba: 6e20 b700 4200 |000f: invoke-virtual {v2, v4}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0081c0: 0c02 |0012: move-result-object v2
+0081c2: 1a03 0300 |0013: const-string v3, " + " // string@0003
+0081c6: 6e20 ba00 3200 |0015: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0081cc: 0c02 |0018: move-result-object v2
+0081ce: 6e20 b700 5200 |0019: invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0081d4: 0c02 |001c: move-result-object v2
+0081d6: 1a03 0400 |001d: const-string v3, " = " // string@0004
+0081da: 6e20 ba00 3200 |001f: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0081e0: 0c02 |0022: move-result-object v2
+0081e2: 6e20 b700 0200 |0023: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+0081e8: 0c02 |0026: move-result-object v2
+0081ea: 6e10 bb00 0200 |0027: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0081f0: 0c02 |002a: move-result-object v2
+0081f2: 6e20 b100 2100 |002b: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0081f8: 3260 2400 |002e: if-eq v0, v6, 0052 // +0024
+0081fc: 6201 1000 |0030: sget-object v1, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008200: 2202 1700 |0032: new-instance v2, Ljava/lang/StringBuilder; // type@0017
+008204: 7010 b400 0200 |0034: invoke-direct {v2}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00820a: 1a03 1300 |0037: const-string v3, "Failed " // string@0013
+00820e: 6e20 ba00 3200 |0039: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008214: 0c02 |003c: move-result-object v2
+008216: 6e20 b700 0200 |003d: invoke-virtual {v2, v0}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+00821c: 0c02 |0040: move-result-object v2
+00821e: 1a03 0100 |0041: const-string v3, " != " // string@0001
+008222: 6e20 ba00 3200 |0043: invoke-virtual {v2, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008228: 0c02 |0046: move-result-object v2
+00822a: 6e20 b700 6200 |0047: invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;.append:(I)Ljava/lang/StringBuilder; // method@00b7
+008230: 0c02 |004a: move-result-object v2
+008232: 6e10 bb00 0200 |004b: invoke-virtual {v2}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+008238: 0c02 |004e: move-result-object v2
+00823a: 6e20 b100 2100 |004f: invoke-virtual {v1, v2}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+008240: 0f00 |0052: return v0
+ catches : (none)
+ positions :
+ 0x0000 line=68
+ 0x0002 line=69
+ 0x002e line=70
+ 0x0030 line=71
+ 0x0052 line=73
+ locals :
+ 0x0000 - 0x0053 reg=4 (null) I
+ 0x0000 - 0x0053 reg=5 (null) I
+ 0x0000 - 0x0053 reg=6 (null) I
+
+ #14 : (in Linvokecustom/InvokeCustom;)
+ name : 'targetMethodTest6'
+ type : '(JJJ)J'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 12
+ ins : 6
+ outs : 3
+ insns size : 85 16-bit code units
+008244: |[008244] invokecustom.InvokeCustom.targetMethodTest6:(JJJ)J
+008254: 9b00 0608 |0000: add-long v0, v6, v8
+008258: 6202 1000 |0002: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00825c: 2203 1700 |0004: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+008260: 7010 b400 0300 |0006: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+008266: 1a04 7b00 |0009: const-string v4, "targetMethodTest6 " // string@007b
+00826a: 6e20 ba00 4300 |000b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008270: 0c03 |000e: move-result-object v3
+008272: 6e30 b800 6307 |000f: invoke-virtual {v3, v6, v7}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+008278: 0c03 |0012: move-result-object v3
+00827a: 1a04 0300 |0013: const-string v4, " + " // string@0003
+00827e: 6e20 ba00 4300 |0015: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008284: 0c03 |0018: move-result-object v3
+008286: 6e30 b800 8309 |0019: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+00828c: 0c03 |001c: move-result-object v3
+00828e: 1a04 0400 |001d: const-string v4, " = " // string@0004
+008292: 6e20 ba00 4300 |001f: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008298: 0c03 |0022: move-result-object v3
+00829a: 6e30 b800 0301 |0023: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0082a0: 0c03 |0026: move-result-object v3
+0082a2: 6e10 bb00 0300 |0027: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0082a8: 0c03 |002a: move-result-object v3
+0082aa: 6e20 b100 3200 |002b: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0082b0: 3102 000a |002e: cmp-long v2, v0, v10
+0082b4: 3802 2400 |0030: if-eqz v2, 0054 // +0024
+0082b8: 6202 1000 |0032: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0082bc: 2203 1700 |0034: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+0082c0: 7010 b400 0300 |0036: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0082c6: 1a04 1300 |0039: const-string v4, "Failed " // string@0013
+0082ca: 6e20 ba00 4300 |003b: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0082d0: 0c03 |003e: move-result-object v3
+0082d2: 6e30 b800 0301 |003f: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0082d8: 0c03 |0042: move-result-object v3
+0082da: 1a04 0100 |0043: const-string v4, " != " // string@0001
+0082de: 6e20 ba00 4300 |0045: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0082e4: 0c03 |0048: move-result-object v3
+0082e6: 6e30 b800 a30b |0049: invoke-virtual {v3, v10, v11}, Ljava/lang/StringBuilder;.append:(J)Ljava/lang/StringBuilder; // method@00b8
+0082ec: 0c03 |004c: move-result-object v3
+0082ee: 6e10 bb00 0300 |004d: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0082f4: 0c03 |0050: move-result-object v3
+0082f6: 6e20 b100 3200 |0051: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0082fc: 1000 |0054: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=77
+ 0x0002 line=78
+ 0x002e line=79
+ 0x0032 line=80
+ 0x0054 line=82
+ locals :
+ 0x0000 - 0x0055 reg=6 (null) J
+ 0x0000 - 0x0055 reg=8 (null) J
+ 0x0000 - 0x0055 reg=10 (null) J
+
+ #15 : (in Linvokecustom/InvokeCustom;)
+ name : 'targetMethodTest7'
+ type : '(FFD)D'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 10
+ ins : 4
+ outs : 3
+ insns size : 86 16-bit code units
+008300: |[008300] invokecustom.InvokeCustom.targetMethodTest7:(FFD)D
+008310: a800 0607 |0000: mul-float v0, v6, v7
+008314: 8900 |0002: float-to-double v0, v0
+008316: 6202 1000 |0003: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00831a: 2203 1700 |0005: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+00831e: 7010 b400 0300 |0007: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+008324: 1a04 7e00 |000a: const-string v4, "targetMethodTest7 " // string@007e
+008328: 6e20 ba00 4300 |000c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00832e: 0c03 |000f: move-result-object v3
+008330: 6e20 b600 6300 |0010: invoke-virtual {v3, v6}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+008336: 0c03 |0013: move-result-object v3
+008338: 1a04 0200 |0014: const-string v4, " * " // string@0002
+00833c: 6e20 ba00 4300 |0016: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008342: 0c03 |0019: move-result-object v3
+008344: 6e20 b600 7300 |001a: invoke-virtual {v3, v7}, Ljava/lang/StringBuilder;.append:(F)Ljava/lang/StringBuilder; // method@00b6
+00834a: 0c03 |001d: move-result-object v3
+00834c: 1a04 0400 |001e: const-string v4, " = " // string@0004
+008350: 6e20 ba00 4300 |0020: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008356: 0c03 |0023: move-result-object v3
+008358: 6e30 b500 0301 |0024: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+00835e: 0c03 |0027: move-result-object v3
+008360: 6e10 bb00 0300 |0028: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+008366: 0c03 |002b: move-result-object v3
+008368: 6e20 b100 3200 |002c: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00836e: 2f02 0008 |002f: cmpl-double v2, v0, v8
+008372: 3802 2400 |0031: if-eqz v2, 0055 // +0024
+008376: 6202 1000 |0033: sget-object v2, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00837a: 2203 1700 |0035: new-instance v3, Ljava/lang/StringBuilder; // type@0017
+00837e: 7010 b400 0300 |0037: invoke-direct {v3}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+008384: 1a04 1300 |003a: const-string v4, "Failed " // string@0013
+008388: 6e20 ba00 4300 |003c: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+00838e: 0c03 |003f: move-result-object v3
+008390: 6e30 b500 0301 |0040: invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+008396: 0c03 |0043: move-result-object v3
+008398: 1a04 0100 |0044: const-string v4, " != " // string@0001
+00839c: 6e20 ba00 4300 |0046: invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0083a2: 0c03 |0049: move-result-object v3
+0083a4: 6e30 b500 8309 |004a: invoke-virtual {v3, v8, v9}, Ljava/lang/StringBuilder;.append:(D)Ljava/lang/StringBuilder; // method@00b5
+0083aa: 0c03 |004d: move-result-object v3
+0083ac: 6e10 bb00 0300 |004e: invoke-virtual {v3}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0083b2: 0c03 |0051: move-result-object v3
+0083b4: 6e20 b100 3200 |0052: invoke-virtual {v2, v3}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0083ba: 1000 |0055: return-wide v0
+ catches : (none)
+ positions :
+ 0x0000 line=86
+ 0x0003 line=87
+ 0x002f line=88
+ 0x0033 line=89
+ 0x0055 line=91
+ locals :
+ 0x0000 - 0x0056 reg=6 (null) F
+ 0x0000 - 0x0056 reg=7 (null) F
+ 0x0000 - 0x0056 reg=8 (null) D
+
+ #16 : (in Linvokecustom/InvokeCustom;)
+ name : 'targetMethodTest8'
+ type : '(Ljava/lang/String;)V'
+ access : 0x0009 (PUBLIC STATIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 25 16-bit code units
+0083bc: |[0083bc] invokecustom.InvokeCustom.targetMethodTest8:(Ljava/lang/String;)V
+0083cc: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+0083d0: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+0083d4: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+0083da: 1a02 8000 |0007: const-string v2, "targetMethodTest8 " // string@0080
+0083de: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0083e4: 0c01 |000c: move-result-object v1
+0083e6: 6e20 ba00 3100 |000d: invoke-virtual {v1, v3}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+0083ec: 0c01 |0010: move-result-object v1
+0083ee: 6e10 bb00 0100 |0011: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+0083f4: 0c01 |0014: move-result-object v1
+0083f6: 6e20 b100 1000 |0015: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0083fc: 0e00 |0018: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=95
+ 0x0018 line=96
+ locals :
+ 0x0000 - 0x0019 reg=3 (null) Ljava/lang/String;
+
+ #17 : (in Linvokecustom/InvokeCustom;)
+ name : 'targetMethodTest9'
+ type : '()V'
+ access : 0x000a (PRIVATE STATIC)
+ code -
+ registers : 2
+ ins : 0
+ outs : 2
+ insns size : 8 16-bit code units
+008400: |[008400] invokecustom.InvokeCustom.targetMethodTest9:()V
+008410: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008414: 1a01 8200 |0002: const-string v1, "targetMethodTest9()" // string@0082
+008418: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+00841e: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=129
+ 0x0007 line=130
+ locals :
+
+ Virtual methods -
+ #0 : (in Linvokecustom/InvokeCustom;)
+ name : 'helperMethodTest9'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 4
+ ins : 1
+ outs : 2
+ insns size : 27 16-bit code units
+008420: |[008420] invokecustom.InvokeCustom.helperMethodTest9:()V
+008430: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+008434: 2201 1700 |0002: new-instance v1, Ljava/lang/StringBuilder; // type@0017
+008438: 7010 b400 0100 |0004: invoke-direct {v1}, Ljava/lang/StringBuilder;.<init>:()V // method@00b4
+00843e: 1a02 6400 |0007: const-string v2, "helperMethodTest9 in " // string@0064
+008442: 6e20 ba00 2100 |0009: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; // method@00ba
+008448: 0c01 |000c: move-result-object v1
+00844a: 1c02 0e00 |000d: const-class v2, Linvokecustom/InvokeCustom; // type@000e
+00844e: 6e20 b900 2100 |000f: invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder; // method@00b9
+008454: 0c01 |0012: move-result-object v1
+008456: 6e10 bb00 0100 |0013: invoke-virtual {v1}, Ljava/lang/StringBuilder;.toString:()Ljava/lang/String; // method@00bb
+00845c: 0c01 |0016: move-result-object v1
+00845e: 6e20 b100 1000 |0017: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+008464: 0e00 |001a: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=125
+ 0x001a line=126
+ locals :
+ 0x0000 - 0x001b reg=3 this Linvokecustom/InvokeCustom;
+
+ #1 : (in Linvokecustom/InvokeCustom;)
+ name : 'run'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+008468: |[008468] invokecustom.InvokeCustom.run:()V
+008478: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00847c: 1a01 6e00 |0002: const-string v1, "run() for Test9" // string@006e
+008480: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+008486: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=133
+ 0x0007 line=134
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom;
+
+ #2 : (in Linvokecustom/InvokeCustom;)
+ name : 'targetMethodTest4'
+ type : '()V'
+ access : 0x0001 (PUBLIC)
+ code -
+ registers : 3
+ ins : 1
+ outs : 2
+ insns size : 8 16-bit code units
+008488: |[008488] invokecustom.InvokeCustom.targetMethodTest4:()V
+008498: 6200 1000 |0000: sget-object v0, Ljava/lang/System;.out:Ljava/io/PrintStream; // field@0010
+00849c: 1a01 7500 |0002: const-string v1, "targetMethodTest4 from InvokeCustom (oops!)" // string@0075
+0084a0: 6e20 b100 1000 |0004: invoke-virtual {v0, v1}, Ljava/io/PrintStream;.println:(Ljava/lang/String;)V // method@00b1
+0084a6: 0e00 |0007: return-void
+ catches : (none)
+ positions :
+ 0x0000 line=64
+ 0x0007 line=65
+ locals :
+ 0x0000 - 0x0008 reg=2 this Linvokecustom/InvokeCustom;
+
+ source_file_idx : 25 (InvokeCustom.java)
+
+Method handle #0:
+ type : invoke-static
+ target : Linvokecustom/InvokeCustom; bsmLookupStatic
+ target_type : (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
+Method handle #1:
+ type : invoke-static
+ target : Linvokecustom/InvokeCustom; bsmLookupStaticWithExtraArgs
+ target_type : (Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;IJFD)Ljava/lang/invoke/CallSite;
+Call site #0:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest1 (String)
+ link_argument[2] : ()V (MethodType)
+Call site #1:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest1 (String)
+ link_argument[2] : ()V (MethodType)
+Call site #2:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest2 (String)
+ link_argument[2] : (ZBCSIFJDLjava/lang/String;)V (MethodType)
+Call site #3:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest2 (String)
+ link_argument[2] : (ZBCSIFJDLjava/lang/String;)V (MethodType)
+Call site #4:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest3 (String)
+ link_argument[2] : ()V (MethodType)
+ link_argument[3] : 1 (int)
+ link_argument[4] : 123456789 (long)
+ link_argument[5] : 123.456 (float)
+ link_argument[6] : 123457 (double)
+Call site #5:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest3 (String)
+ link_argument[2] : ()V (MethodType)
+ link_argument[3] : 1 (int)
+ link_argument[4] : 123456789 (long)
+ link_argument[5] : 123.456 (float)
+ link_argument[6] : 123457 (double)
+Call site #6:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest5 (String)
+ link_argument[2] : (III)I (MethodType)
+Call site #7:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest5 (String)
+ link_argument[2] : (III)I (MethodType)
+Call site #8:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest6 (String)
+ link_argument[2] : (JJJ)J (MethodType)
+Call site #9:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest6 (String)
+ link_argument[2] : (JJJ)J (MethodType)
+Call site #10:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest7 (String)
+ link_argument[2] : (FFD)D (MethodType)
+Call site #11:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest7 (String)
+ link_argument[2] : (FFD)D (MethodType)
+Call site #12:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest8 (String)
+ link_argument[2] : (Ljava/lang/String;)V (MethodType)
+Call site #13:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest8 (String)
+ link_argument[2] : (Ljava/lang/String;)V (MethodType)
+Call site #14:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest8 (String)
+ link_argument[2] : (Ljava/lang/String;)V (MethodType)
+Call site #15:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest8 (String)
+ link_argument[2] : (Ljava/lang/String;)V (MethodType)
+Call site #16:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest8 (String)
+ link_argument[2] : (Ljava/lang/String;)V (MethodType)
+Call site #17:
+ link_argument[0] : 0 (MethodHandle)
+ link_argument[1] : targetMethodTest8 (String)
+ link_argument[2] : (Ljava/lang/String;)V (MethodType)
diff --git a/dx/tests/137-dexmerger-dex38/generate-test b/dx/tests/137-dexmerger-dex38/generate-test
new file mode 100755
index 0000000..3a89199
--- /dev/null
+++ b/dx/tests/137-dexmerger-dex38/generate-test
@@ -0,0 +1,38 @@
+#!/bin/bash
+#
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+function fail() {
+ echo Build failed: $1 1>&2
+ exit 1
+}
+
+if [[ -z "${ANDROID_BUILD_TOP}" ]]; then
+ fail "ANDROID_BUILD_TOP is not defined. Try running 'lunch' first."
+fi
+
+SCRIPT_PATH=$( cd $(dirname $0) ; pwd -P )
+ASM_CLASSPATH="${ANDROID_BUILD_TOP}/prebuilts/misc/common/asm/asm-5.2.jar"
+SRC_PATH="${SCRIPT_PATH}/src"
+BUILD_PATH="${SCRIPT_PATH}/classes"
+JAR_FILE="${SCRIPT_PATH}/invokecustom.jar"
+
+if [[ ! -d "${BUILD_PATH}" ]]; then
+ mkdir "$BUILD_PATH" || exit 1
+fi
+
+(cd "${SRC_PATH}" && javac -cp "${ASM_CLASSPATH}" -d "${BUILD_PATH}" invokecustom/*.java) || fail "javac error"
+(cd "${SCRIPT_PATH}" && java -cp "${ASM_CLASSPATH}:${BUILD_PATH}" invokecustom.TestGenerator "${BUILD_PATH}") || fail "generator failure"
+(cd "${BUILD_PATH}" && jar cf "${JAR_FILE}" invokecustom/InvokeCustom*.class invokecustom/Super.class ) || fail "jar creation error"
diff --git a/dx/tests/137-dexmerger-dex38/info.txt b/dx/tests/137-dexmerger-dex38/info.txt
new file mode 100644
index 0000000..be5c0e9
--- /dev/null
+++ b/dx/tests/137-dexmerger-dex38/info.txt
@@ -0,0 +1 @@
+This test checks that dexmerger supports dex 38 features.
diff --git a/dx/tests/137-dexmerger-dex38/invokecustom.jar b/dx/tests/137-dexmerger-dex38/invokecustom.jar
new file mode 100644
index 0000000..ac56f78
--- /dev/null
+++ b/dx/tests/137-dexmerger-dex38/invokecustom.jar
Binary files differ
diff --git a/dx/tests/137-dexmerger-dex38/run b/dx/tests/137-dexmerger-dex38/run
new file mode 100755
index 0000000..af1dc9e
--- /dev/null
+++ b/dx/tests/137-dexmerger-dex38/run
@@ -0,0 +1,26 @@
+#!/bin/bash
+#
+# Copyright (C) 2017 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+jar xf invokecustom.jar
+(
+ CLASSES=(invokecustom/Super.class invokecustom/InvokeCustom*.class)
+ for CLASS in "${CLASSES[@]}"; do
+ dx --min-sdk-version=26 --dex --output="${CLASS/%.class/.dex}" "${CLASS}" 2>&1
+ done
+)
+java -cp $(dirname $(which dx))/../framework/dx.jar com.android.dx.merge.DexMerger \
+ out.dex invokecustom/*.dex >& /dev/null
+dexdump2 -d out.dex
diff --git a/dx/tests/137-dexmerger-dex38/src/invokecustom/InvokeCustom.java b/dx/tests/137-dexmerger-dex38/src/invokecustom/InvokeCustom.java
new file mode 100644
index 0000000..c6cd3c3
--- /dev/null
+++ b/dx/tests/137-dexmerger-dex38/src/invokecustom/InvokeCustom.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package invokecustom;
+
+import java.lang.invoke.CallSite;
+import java.lang.invoke.ConstantCallSite;
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+
+abstract class Super {
+ public void targetMethodTest4() {
+ System.out.println("targetMethodTest4 from Super");
+ }
+
+ public abstract void helperMethodTest9();
+}
+
+public class InvokeCustom extends Super implements Runnable {
+
+ public InvokeCustom() {}
+ public InvokeCustom(int i) {
+ System.out.println("InvokeCustom.<init>(" + i + ")");
+ }
+
+ private static void targetMethodTest1() {
+ System.out.println("Hello World!");
+ }
+
+ private static void targetMethodTest2(boolean z, byte b, char c, short s, int i, float f, long l,
+ double d, String str) {
+ System.out.println(z);
+ System.out.println(b);
+ System.out.println(c);
+ System.out.println(s);
+ System.out.println(i);
+ System.out.println(f);
+ System.out.println(l);
+ System.out.println(d);
+ System.out.println(str);
+ }
+
+ private static void targetMethodTest3() {
+ System.out.println("targetMethodTest3 from InvokeCustom");
+ }
+
+ @Override
+ public void targetMethodTest4() {
+ // The generated code should be calling Super.targetMethodTest4.
+ System.out.println("targetMethodTest4 from InvokeCustom (oops!)");
+ }
+
+ public static int targetMethodTest5(int x, int y, int total) {
+ int calculated = x + y;
+ System.out.println("targetMethodTest5 " + x + " + " + y + " = " + calculated);
+ if (calculated != total) {
+ System.out.println("Failed " + calculated + " != " + total);
+ }
+ return calculated;
+ }
+
+ public static long targetMethodTest6(long x, long y, long total) {
+ long calculated = x + y;
+ System.out.println("targetMethodTest6 " + x + " + " + y + " = " + calculated);
+ if (calculated != total) {
+ System.out.println("Failed " + calculated + " != " + total);
+ }
+ return calculated;
+ }
+
+ public static double targetMethodTest7(float x, float y, double product) {
+ double calculated = x * y;
+ System.out.println("targetMethodTest7 " + x + " * " + y + " = " + calculated);
+ if (calculated != product) {
+ System.out.println("Failed " + calculated + " != " + product);
+ }
+ return calculated;
+ }
+
+ public static void targetMethodTest8(String s) {
+ System.out.println("targetMethodTest8 " + s);
+ }
+
+ private static int staticFieldTest9 = 0;
+
+ private static void checkStaticFieldTest9(MethodHandle getter, MethodHandle setter)
+ throws Throwable {
+ final int NEW_VALUE = 0x76543210;
+ int oldValue = (int) getter.invokeExact();
+ setter.invokeExact(NEW_VALUE);
+ int newValue = (int) getter.invokeExact();
+ System.out.print("checkStaticFieldTest9: old " + oldValue + " new " + newValue +
+ " expected " + NEW_VALUE + " ");
+ System.out.println((newValue == NEW_VALUE) ? "OK" : "ERROR");
+ }
+
+ private float fieldTest9 = 0.0f;
+
+ private void checkFieldTest9(MethodHandle getter, MethodHandle setter)
+ throws Throwable {
+ final float NEW_VALUE = 1.99e-19f;
+ float oldValue = (float) getter.invokeExact(this);
+ setter.invokeExact(this, NEW_VALUE);
+ float newValue = (float) getter.invokeExact(this);
+ System.out.print("checkFieldTest9: old " + oldValue + " new " + newValue +
+ " expected " + NEW_VALUE + " ");
+ System.out.println((newValue == NEW_VALUE) ? "OK" : "ERROR");
+ }
+
+ public void helperMethodTest9() {
+ System.out.println("helperMethodTest9 in " + InvokeCustom.class);
+ }
+
+ private static void targetMethodTest9() {
+ System.out.println("targetMethodTest9()");
+ }
+
+ public void run() {
+ System.out.println("run() for Test9");
+ }
+
+ public static CallSite bsmLookupStatic(MethodHandles.Lookup caller, String name, MethodType type)
+ throws NoSuchMethodException, IllegalAccessException {
+ System.out.println("bsmLookupStatic []");
+ final MethodHandles.Lookup lookup = MethodHandles.lookup();
+ final MethodHandle targetMH = lookup.findStatic(lookup.lookupClass(), name, type);
+ return new ConstantCallSite(targetMH.asType(type));
+ }
+
+ public static CallSite bsmLookupStaticWithExtraArgs(
+ MethodHandles.Lookup caller, String name, MethodType type, int i, long l, float f, double d)
+ throws NoSuchMethodException, IllegalAccessException {
+ System.out.println("bsmLookupStaticWithExtraArgs [" + i + ", " + l + ", " + f + ", " + d + "]");
+ final MethodHandles.Lookup lookup = MethodHandles.lookup();
+ final MethodHandle targetMH = lookup.findStatic(lookup.lookupClass(), name, type);
+ return new ConstantCallSite(targetMH.asType(type));
+ }
+
+ public static CallSite bsmCreateCallSite(
+ MethodHandles.Lookup caller, String name, MethodType type, MethodHandle mh)
+ throws Throwable {
+ System.out.println("bsmCreateCallSite [" + mh + "]");
+ return new ConstantCallSite(mh);
+ }
+
+ public static CallSite bsmLookupTest9(MethodHandles.Lookup caller, String name, MethodType type,
+ MethodHandle staticGetter, MethodHandle staticSetter,
+ MethodHandle fieldGetter, MethodHandle fieldSetter,
+ MethodHandle instanceInvoke, MethodHandle constructor,
+ MethodHandle interfaceInvoke)
+ throws Throwable {
+ System.out.println("bsmLookupTest9 [" + staticGetter + ", " + staticSetter + ", " +
+ fieldGetter + ", " + fieldSetter + "]");
+ System.out.println(name + " " + type);
+
+ // Check constant method handles passed can be invoked.
+ checkStaticFieldTest9(staticGetter, staticSetter);
+ InvokeCustom instance = new InvokeCustom();
+ instance.checkFieldTest9(fieldGetter, fieldSetter);
+
+ // Check virtual method.
+ instanceInvoke.invokeExact(instance);
+
+ InvokeCustom instance2 = (InvokeCustom) constructor.invokeExact(3);
+ interfaceInvoke.invoke(instance2);
+
+ final MethodHandles.Lookup lookup = MethodHandles.lookup();
+ final MethodHandle targetMH = lookup.findStatic(lookup.lookupClass(), name, type);
+ return new ConstantCallSite(targetMH.asType(type));
+ }
+}
diff --git a/dx/tests/137-dexmerger-dex38/src/invokecustom/TestGenerator.java b/dx/tests/137-dexmerger-dex38/src/invokecustom/TestGenerator.java
new file mode 100644
index 0000000..c47d132
--- /dev/null
+++ b/dx/tests/137-dexmerger-dex38/src/invokecustom/TestGenerator.java
@@ -0,0 +1,464 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package invokecustom;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.invoke.CallSite;
+import java.lang.invoke.MethodHandle;
+import java.lang.invoke.MethodHandles;
+import java.lang.invoke.MethodType;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.function.Consumer;
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.ClassVisitor;
+import org.objectweb.asm.ClassWriter;
+import org.objectweb.asm.Handle;
+import org.objectweb.asm.MethodVisitor;
+import org.objectweb.asm.Opcodes;
+import org.objectweb.asm.Type;
+
+public class TestGenerator {
+
+ private final Path baseName;
+
+ public static void main(String[] args) throws IOException {
+ assert args.length == 1;
+ TestGenerator testGenerator = new TestGenerator(Paths.get(args[0]));
+ testGenerator.generateTests();
+ }
+
+ public TestGenerator(Path baseName) {
+ this.baseName = baseName;
+ }
+
+ private void generateTests() throws IOException {
+ generateTest(this::generateMethodTest1, "invokecustom/InvokeCustom1");
+ generateTest(this::generateMethodTest2, "invokecustom/InvokeCustom2");
+ generateTest(this::generateMethodTest3, "invokecustom/InvokeCustom3");
+ // skip generateMethodTest4 - dexdump doesn't support invoke-direct handles
+ generateTest(this::generateMethodTest5, "invokecustom/InvokeCustom5");
+ generateTest(this::generateMethodTest6, "invokecustom/InvokeCustom6");
+ generateTest(this::generateMethodTest7, "invokecustom/InvokeCustom7");
+ generateTest(this::generateMethodTest8, "invokecustom/InvokeCustom8");
+ // skip generateMethodTest9 - dexdump doesn't support invoke-interface handles
+ generateTest(this::generateMethodMain, "invokecustom/InvokeCustom");
+ }
+
+ private void generateTest(Consumer<ClassWriter> generator, String className) throws IOException {
+ ClassReader cr =
+ new ClassReader(
+ new FileInputStream(baseName.resolve("invokecustom/InvokeCustom.class").toFile()));
+ ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS | ClassWriter.COMPUTE_FRAMES);
+ cr.accept(
+ new ClassVisitor(Opcodes.ASM5, cw) {
+ @Override
+ public void visit(
+ int version,
+ int access,
+ String name,
+ String signature,
+ String superName,
+ String[] interfaces) {
+ super.visit(version, access, className, signature, superName, interfaces);
+ }
+
+ @Override
+ public void visitEnd() {
+ generator.accept(cw);
+ super.visitEnd();
+ }
+ },
+ 0);
+ new FileOutputStream(baseName.resolve(className + ".class").toFile()).write(cw.toByteArray());
+ }
+
+ /* generate main method that only call all test methods. */
+ private void generateMethodMain(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(
+ Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "main", "([Ljava/lang/String;)V", null, null);
+ String internalName = Type.getInternalName(InvokeCustom.class);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, internalName + "1", "test1", "()V", false);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, internalName + "2", "test2", "()V", false);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, internalName + "3", "test3", "()V", false);
+ // mv.visitMethodInsn(Opcodes.INVOKESTATIC, internalName + "4", "test4", "()V", false);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, internalName + "5", "test5", "()V", false);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, internalName + "6", "test6", "()V", false);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, internalName + "7", "test7", "()V", false);
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, internalName + "8", "test8", "()V", false);
+ // mv.visitMethodInsn(Opcodes.INVOKESTATIC, internalName + "9", "test9", "()V", false);
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /**
+ * Generate test with an invokedynamic, a static bootstrap method without extra args and no arg to
+ * the target method.
+ */
+ private void generateMethodTest1(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test1", "()V", null, null);
+ MethodType mt =
+ MethodType.methodType(
+ CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class);
+ Handle bootstrap =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ Type.getInternalName(InvokeCustom.class),
+ "bsmLookupStatic",
+ mt.toMethodDescriptorString(),
+ false);
+ mv.visitInvokeDynamicInsn("targetMethodTest1", "()V", bootstrap);
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /**
+ * Generate test with an invokedynamic, a static bootstrap method without extra args and args to
+ * the target method.
+ */
+ private void generateMethodTest2(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test2", "()V", null, null);
+ MethodType mt =
+ MethodType.methodType(
+ CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class);
+ Handle bootstrap =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ Type.getInternalName(InvokeCustom.class),
+ "bsmLookupStatic",
+ mt.toMethodDescriptorString(),
+ false);
+ mv.visitLdcInsn(new Boolean(true));
+ mv.visitLdcInsn(new Byte((byte) 127));
+ mv.visitLdcInsn(new Character('c'));
+ mv.visitLdcInsn(new Short((short) 1024));
+ mv.visitLdcInsn(new Integer(123456));
+ mv.visitLdcInsn(new Float(1.2f));
+ mv.visitLdcInsn(new Long(123456789));
+ mv.visitLdcInsn(new Double(3.5123456789));
+ mv.visitLdcInsn("String");
+ mv.visitInvokeDynamicInsn("targetMethodTest2", "(ZBCSIFJDLjava/lang/String;)V", bootstrap);
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /**
+ * Generate test with an invokedynamic, a static bootstrap method with extra args and no arg to
+ * the target method.
+ */
+ private void generateMethodTest3(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test3", "()V", null, null);
+ MethodType mt =
+ MethodType.methodType(
+ CallSite.class,
+ MethodHandles.Lookup.class,
+ String.class,
+ MethodType.class,
+ int.class,
+ long.class,
+ float.class,
+ double.class);
+ Handle bootstrap =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ Type.getInternalName(InvokeCustom.class),
+ "bsmLookupStaticWithExtraArgs",
+ mt.toMethodDescriptorString(),
+ false);
+ mv.visitInvokeDynamicInsn(
+ "targetMethodTest3",
+ "()V",
+ bootstrap,
+ new Integer(1),
+ new Long(123456789),
+ new Float(123.456),
+ new Double(123456.789123));
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /**
+ * Generate test with an invokedynamic, a static bootstrap method with an extra arg that is a
+ * MethodHandle of kind invokespecial.
+ */
+ private void generateMethodTest4(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test4", "()V", null, null);
+ MethodType mt =
+ MethodType.methodType(
+ CallSite.class,
+ MethodHandles.Lookup.class,
+ String.class,
+ MethodType.class,
+ MethodHandle.class);
+ Handle bootstrap =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ Type.getInternalName(InvokeCustom.class),
+ "bsmCreateCallSite",
+ mt.toMethodDescriptorString(),
+ false);
+ mv.visitTypeInsn(Opcodes.NEW, Type.getInternalName(InvokeCustom.class));
+ mv.visitInsn(Opcodes.DUP);
+ mv.visitMethodInsn(
+ Opcodes.INVOKESPECIAL, Type.getInternalName(InvokeCustom.class), "<init>", "()V", false);
+ mv.visitInvokeDynamicInsn(
+ "targetMethodTest4",
+ "(Linvokecustom/InvokeCustom;)V",
+ bootstrap,
+ new Handle(
+ Opcodes.H_INVOKESPECIAL,
+ Type.getInternalName(Super.class),
+ "targetMethodTest4",
+ "()V",
+ false));
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /**
+ * Generate a test with an invokedynamic where the target generates a result that the call site
+ * prints out.
+ */
+ private void generateMethodTest5(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test5", "()V", null, null);
+ MethodType mt =
+ MethodType.methodType(
+ CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class);
+ Handle bootstrap =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ Type.getInternalName(InvokeCustom.class),
+ "bsmLookupStatic",
+ mt.toMethodDescriptorString(),
+ false);
+ mv.visitIntInsn(Opcodes.SIPUSH, 1000);
+ mv.visitIntInsn(Opcodes.SIPUSH, -923);
+ mv.visitIntInsn(Opcodes.SIPUSH, 77);
+ mv.visitInvokeDynamicInsn("targetMethodTest5", "(III)I", bootstrap);
+ mv.visitVarInsn(Opcodes.ISTORE, 0);
+ mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
+ mv.visitTypeInsn(Opcodes.NEW, "java/lang/StringBuilder");
+ mv.visitInsn(Opcodes.DUP);
+ mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V");
+ mv.visitLdcInsn("targetMethodTest5 returned: ");
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL,
+ "java/lang/StringBuilder",
+ "append",
+ "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
+ mv.visitVarInsn(Opcodes.ILOAD, 0);
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(I)Ljava/lang/StringBuilder;");
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;");
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V");
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /**
+ * Generate a test with an invokedynamic where the call site invocation tests the summation of two
+ * long values and returns a long.
+ */
+ private void generateMethodTest6(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test6", "()V", null, null);
+ MethodType mt =
+ MethodType.methodType(
+ CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class);
+ Handle bootstrap =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ Type.getInternalName(InvokeCustom.class),
+ "bsmLookupStatic",
+ mt.toMethodDescriptorString(),
+ false);
+ mv.visitLdcInsn(0x77777777777l);
+ mv.visitLdcInsn(-0x11111111111l);
+ mv.visitLdcInsn(0x66666666666l);
+ mv.visitInvokeDynamicInsn("targetMethodTest6", "(JJJ)J", bootstrap);
+ mv.visitVarInsn(Opcodes.LSTORE, 0);
+ mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
+ mv.visitTypeInsn(Opcodes.NEW, "java/lang/StringBuilder");
+ mv.visitInsn(Opcodes.DUP);
+ mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V");
+ mv.visitLdcInsn("targetMethodTest6 returned: ");
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL,
+ "java/lang/StringBuilder",
+ "append",
+ "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
+ mv.visitVarInsn(Opcodes.LLOAD, 0);
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(J)Ljava/lang/StringBuilder;");
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;");
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V");
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /**
+ * Generate a test with an invokedynamic where the call site invocation tests the product of two
+ * float values and returns a double.
+ */
+ private void generateMethodTest7(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test7", "()V", null, null);
+ MethodType mt =
+ MethodType.methodType(
+ CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class);
+ Handle bootstrap =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ Type.getInternalName(InvokeCustom.class),
+ "bsmLookupStatic",
+ mt.toMethodDescriptorString(),
+ false);
+ double x = 0.5009765625;
+ double y = -x;
+ mv.visitLdcInsn((float) x);
+ mv.visitLdcInsn((float) y);
+ mv.visitLdcInsn(x * y);
+ mv.visitInvokeDynamicInsn("targetMethodTest7", "(FFD)D", bootstrap);
+ mv.visitVarInsn(Opcodes.DSTORE, 0);
+ mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
+ mv.visitTypeInsn(Opcodes.NEW, "java/lang/StringBuilder");
+ mv.visitInsn(Opcodes.DUP);
+ mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V");
+ mv.visitLdcInsn("targetMethodTest6 returned: ");
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL,
+ "java/lang/StringBuilder",
+ "append",
+ "(Ljava/lang/String;)Ljava/lang/StringBuilder;");
+ mv.visitVarInsn(Opcodes.DLOAD, 0);
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(D)Ljava/lang/StringBuilder;");
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;");
+ mv.visitMethodInsn(
+ Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V");
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /**
+ * Generate a test with multiple invokedynamic bytecodes operating on the same parameters. These
+ * invocations should each produce invoke-custom bytecodes with unique call site ids.
+ */
+ private void generateMethodTest8(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test8", "()V", null, null);
+ MethodType mt =
+ MethodType.methodType(
+ CallSite.class, MethodHandles.Lookup.class, String.class, MethodType.class);
+ // These should be two distinct call sites and both invoke the
+ // bootstrap method. An erroneous implementation might treat them
+ // as the same call site because the handle arguments are the same.
+ Handle bootstrap1 =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ Type.getInternalName(InvokeCustom.class),
+ "bsmLookupStatic",
+ mt.toMethodDescriptorString(),
+ false);
+ mv.visitLdcInsn("First invokedynamic invocation");
+ mv.visitInvokeDynamicInsn("targetMethodTest8", "(Ljava/lang/String;)V", bootstrap1);
+
+ Handle bootstrap2 =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ Type.getInternalName(InvokeCustom.class),
+ "bsmLookupStatic",
+ mt.toMethodDescriptorString(),
+ false);
+ mv.visitLdcInsn("Second invokedynamic invocation");
+ mv.visitInvokeDynamicInsn("targetMethodTest8", "(Ljava/lang/String;)V", bootstrap2);
+
+ // Using same handle again creates a new call site so invokes the bootstrap method.
+ mv.visitLdcInsn("Dupe first invokedynamic invocation");
+ mv.visitInvokeDynamicInsn("targetMethodTest8", "(Ljava/lang/String;)V", bootstrap1);
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+
+ /** Generate a test with different kinds of constant method handles. */
+ private void generateMethodTest9(ClassVisitor cv) {
+ MethodVisitor mv =
+ cv.visitMethod(Opcodes.ACC_PUBLIC + Opcodes.ACC_STATIC, "test9", "()V", null, null);
+ MethodType mt =
+ MethodType.methodType(
+ CallSite.class,
+ MethodHandles.Lookup.class,
+ String.class,
+ MethodType.class,
+ MethodHandle.class,
+ MethodHandle.class,
+ MethodHandle.class,
+ MethodHandle.class,
+ MethodHandle.class,
+ MethodHandle.class,
+ MethodHandle.class);
+ String internalName = Type.getInternalName(InvokeCustom.class);
+ Handle bootstrap =
+ new Handle(
+ Opcodes.H_INVOKESTATIC,
+ internalName,
+ "bsmLookupTest9",
+ mt.toMethodDescriptorString(),
+ false);
+ Handle staticSetter =
+ new Handle(Opcodes.H_GETSTATIC, internalName, "staticFieldTest9", "I", false);
+ Handle staticGetter =
+ new Handle(Opcodes.H_PUTSTATIC, internalName, "staticFieldTest9", "I", false);
+ Handle setter = new Handle(Opcodes.H_GETFIELD, internalName, "fieldTest9", "F", false);
+ Handle getter = new Handle(Opcodes.H_PUTFIELD, internalName, "fieldTest9", "F", false);
+ Handle instanceInvoke =
+ new Handle(Opcodes.H_INVOKEVIRTUAL, internalName, "helperMethodTest9", "()V", false);
+ // H_INVOKESTATIC and H_INVOKESPECIAL are tested elsewhere.
+ Handle constructor =
+ new Handle(Opcodes.H_NEWINVOKESPECIAL, internalName, "<init>", "(I)V", false);
+ Handle interfaceInvoke =
+ new Handle(
+ Opcodes.H_INVOKEINTERFACE, Type.getInternalName(Runnable.class), "run", "()V", true);
+
+ mv.visitInvokeDynamicInsn(
+ "targetMethodTest9",
+ "()V",
+ bootstrap,
+ staticSetter,
+ staticGetter,
+ setter,
+ getter,
+ instanceInvoke,
+ constructor,
+ interfaceInvoke);
+ mv.visitInsn(Opcodes.RETURN);
+ mv.visitMaxs(-1, -1);
+ }
+}