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);
+  }
+}