Move opcode names into OpcodeInfo.

This also allowed me to remove the Instruction argument from the
CodeReader visitor methods. Per previous discussion, this also gets
rid of the redundant argument output in FindUsages. I can clean up
CodeReader some more in a follow-up.

Change-Id: I7a65e8d74498e201fd169cddde0d1f19d6f33f81
diff --git a/dx/src/com/android/dx/command/findusages/FindUsages.java b/dx/src/com/android/dx/command/findusages/FindUsages.java
index d9b0e12..30c6030 100644
--- a/dx/src/com/android/dx/command/findusages/FindUsages.java
+++ b/dx/src/com/android/dx/command/findusages/FindUsages.java
@@ -23,6 +23,7 @@
 import com.android.dx.io.DexBuffer;
 import com.android.dx.io.FieldId;
 import com.android.dx.io.MethodId;
+import com.android.dx.io.OpcodeInfo;
 import java.io.PrintStream;
 import java.util.Collections;
 import java.util.HashSet;
@@ -61,21 +62,23 @@
         fieldIds = getFieldIds(dex, memberNameIndex, typeIndex);
 
         codeReader.setFieldVisitor(new CodeReader.Visitor() {
-            public void visit(CodeReader.Instruction instruction,
-                    DecodedInstruction[] all, DecodedInstruction one) {
+            public void visit(DecodedInstruction[] all,
+                    DecodedInstruction one) {
                 int fieldId = one.getIndex();
                 if (fieldIds.contains(fieldId)) {
-                    out.println(location() + ": field reference (" + instruction + ")");
+                    out.println(location() + ": field reference ("
+                            + OpcodeInfo.getName(one.getOpcode()) + ")");
                 }
             }
         });
 
         codeReader.setMethodVisitor(new CodeReader.Visitor() {
-            public void visit(CodeReader.Instruction instruction,
-                    DecodedInstruction[] all, DecodedInstruction one) {
+            public void visit(DecodedInstruction[] all,
+                    DecodedInstruction one) {
                 int methodId = one.getIndex();
                 if (methodIds.contains(methodId)) {
-                    out.println(location() + ": method reference (" + instruction + ")");
+                    out.println(location() + ": method reference ("
+                            + OpcodeInfo.getName(one.getOpcode()) + ")");
                 }
             }
         });
diff --git a/dx/src/com/android/dx/dex/code/Dop.java b/dx/src/com/android/dx/dex/code/Dop.java
index a7c8397..51d1b51 100644
--- a/dx/src/com/android/dx/dex/code/Dop.java
+++ b/dx/src/com/android/dx/dex/code/Dop.java
@@ -16,6 +16,7 @@
 
 package com.android.dx.dex.code;
 
+import com.android.dx.io.OpcodeInfo;
 import com.android.dx.io.Opcodes;
 
 /**
@@ -42,9 +43,6 @@
     /** whether this opcode uses a result register */
     private final boolean hasResult;
 
-    /** {@code non-null;} the name */
-    private final String name;
-
     /**
      * Constructs an instance.
      *
@@ -58,10 +56,9 @@
      * @param format {@code non-null;} the instruction format
      * @param hasResult whether the opcode has a result register; if so it
      * is always the first register
-     * @param name {@code non-null;} the name
      */
     public Dop(int opcode, int family, int nextOpcode, InsnFormat format,
-            boolean hasResult, String name) {
+            boolean hasResult) {
         if (!Opcodes.isValidShape(opcode)) {
             throw new IllegalArgumentException("bogus opcode");
         }
@@ -78,22 +75,17 @@
             throw new NullPointerException("format == null");
         }
 
-        if (name == null) {
-            throw new NullPointerException("name == null");
-        }
-
         this.opcode = opcode;
         this.family = family;
         this.nextOpcode = nextOpcode;
         this.format = format;
         this.hasResult = hasResult;
-        this.name = name;
     }
 
     /** {@inheritDoc} */
     @Override
     public String toString() {
-        return name;
+        return getName();
     }
 
     /**
@@ -139,7 +131,7 @@
      * @return {@code non-null;} the opcode name
      */
     public String getName() {
-        return name;
+        return OpcodeInfo.getName(opcode);
     }
 
     /**
diff --git a/dx/src/com/android/dx/dex/code/Dops.java b/dx/src/com/android/dx/dex/code/Dops.java
index a19b02b..667b326 100644
--- a/dx/src/com/android/dx/dex/code/Dops.java
+++ b/dx/src/com/android/dx/dex/code/Dops.java
@@ -57,1297 +57,1041 @@
     /**
      * pseudo-opcode used for nonstandard formatted "instructions"
      * (which are mostly not actually instructions, though they do
-     * appear in instruction lists)
+     * appear in instruction lists). TODO: Retire the usage of this
+     * constant.
      */
     public static final Dop SPECIAL_FORMAT =
         new Dop(Opcodes.SPECIAL_FORMAT, Opcodes.SPECIAL_FORMAT,
-                Opcodes.NO_NEXT, SpecialFormat.THE_ONE, false, "<special>");
+                Opcodes.NO_NEXT, SpecialFormat.THE_ONE, false);
 
     // BEGIN(dops); GENERATED AUTOMATICALLY BY opcode-gen
     public static final Dop NOP =
         new Dop(Opcodes.NOP, Opcodes.NOP,
-            Opcodes.NO_NEXT, Form10x.THE_ONE, false,
-            "nop");
+            Opcodes.NO_NEXT, Form10x.THE_ONE, false);
 
     public static final Dop MOVE =
         new Dop(Opcodes.MOVE, Opcodes.MOVE,
-            Opcodes.MOVE_FROM16, Form12x.THE_ONE, true,
-            "move");
+            Opcodes.MOVE_FROM16, Form12x.THE_ONE, true);
 
     public static final Dop MOVE_FROM16 =
         new Dop(Opcodes.MOVE_FROM16, Opcodes.MOVE,
-            Opcodes.MOVE_16, Form22x.THE_ONE, true,
-            "move/from16");
+            Opcodes.MOVE_16, Form22x.THE_ONE, true);
 
     public static final Dop MOVE_16 =
         new Dop(Opcodes.MOVE_16, Opcodes.MOVE,
-            Opcodes.NO_NEXT, Form32x.THE_ONE, true,
-            "move/16");
+            Opcodes.NO_NEXT, Form32x.THE_ONE, true);
 
     public static final Dop MOVE_WIDE =
         new Dop(Opcodes.MOVE_WIDE, Opcodes.MOVE_WIDE,
-            Opcodes.MOVE_WIDE_FROM16, Form12x.THE_ONE, true,
-            "move-wide");
+            Opcodes.MOVE_WIDE_FROM16, Form12x.THE_ONE, true);
 
     public static final Dop MOVE_WIDE_FROM16 =
         new Dop(Opcodes.MOVE_WIDE_FROM16, Opcodes.MOVE_WIDE,
-            Opcodes.MOVE_WIDE_16, Form22x.THE_ONE, true,
-            "move-wide/from16");
+            Opcodes.MOVE_WIDE_16, Form22x.THE_ONE, true);
 
     public static final Dop MOVE_WIDE_16 =
         new Dop(Opcodes.MOVE_WIDE_16, Opcodes.MOVE_WIDE,
-            Opcodes.NO_NEXT, Form32x.THE_ONE, true,
-            "move-wide/16");
+            Opcodes.NO_NEXT, Form32x.THE_ONE, true);
 
     public static final Dop MOVE_OBJECT =
         new Dop(Opcodes.MOVE_OBJECT, Opcodes.MOVE_OBJECT,
-            Opcodes.MOVE_OBJECT_FROM16, Form12x.THE_ONE, true,
-            "move-object");
+            Opcodes.MOVE_OBJECT_FROM16, Form12x.THE_ONE, true);
 
     public static final Dop MOVE_OBJECT_FROM16 =
         new Dop(Opcodes.MOVE_OBJECT_FROM16, Opcodes.MOVE_OBJECT,
-            Opcodes.MOVE_OBJECT_16, Form22x.THE_ONE, true,
-            "move-object/from16");
+            Opcodes.MOVE_OBJECT_16, Form22x.THE_ONE, true);
 
     public static final Dop MOVE_OBJECT_16 =
         new Dop(Opcodes.MOVE_OBJECT_16, Opcodes.MOVE_OBJECT,
-            Opcodes.NO_NEXT, Form32x.THE_ONE, true,
-            "move-object/16");
+            Opcodes.NO_NEXT, Form32x.THE_ONE, true);
 
     public static final Dop MOVE_RESULT =
         new Dop(Opcodes.MOVE_RESULT, Opcodes.MOVE_RESULT,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, true,
-            "move-result");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, true);
 
     public static final Dop MOVE_RESULT_WIDE =
         new Dop(Opcodes.MOVE_RESULT_WIDE, Opcodes.MOVE_RESULT_WIDE,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, true,
-            "move-result-wide");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, true);
 
     public static final Dop MOVE_RESULT_OBJECT =
         new Dop(Opcodes.MOVE_RESULT_OBJECT, Opcodes.MOVE_RESULT_OBJECT,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, true,
-            "move-result-object");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, true);
 
     public static final Dop MOVE_EXCEPTION =
         new Dop(Opcodes.MOVE_EXCEPTION, Opcodes.MOVE_EXCEPTION,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, true,
-            "move-exception");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, true);
 
     public static final Dop RETURN_VOID =
         new Dop(Opcodes.RETURN_VOID, Opcodes.RETURN_VOID,
-            Opcodes.NO_NEXT, Form10x.THE_ONE, false,
-            "return-void");
+            Opcodes.NO_NEXT, Form10x.THE_ONE, false);
 
     public static final Dop RETURN =
         new Dop(Opcodes.RETURN, Opcodes.RETURN,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, false,
-            "return");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, false);
 
     public static final Dop RETURN_WIDE =
         new Dop(Opcodes.RETURN_WIDE, Opcodes.RETURN_WIDE,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, false,
-            "return-wide");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, false);
 
     public static final Dop RETURN_OBJECT =
         new Dop(Opcodes.RETURN_OBJECT, Opcodes.RETURN_OBJECT,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, false,
-            "return-object");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, false);
 
     public static final Dop CONST_4 =
         new Dop(Opcodes.CONST_4, Opcodes.CONST,
-            Opcodes.CONST_16, Form11n.THE_ONE, true,
-            "const/4");
+            Opcodes.CONST_16, Form11n.THE_ONE, true);
 
     public static final Dop CONST_16 =
         new Dop(Opcodes.CONST_16, Opcodes.CONST,
-            Opcodes.CONST_HIGH16, Form21s.THE_ONE, true,
-            "const/16");
+            Opcodes.CONST_HIGH16, Form21s.THE_ONE, true);
 
     public static final Dop CONST =
         new Dop(Opcodes.CONST, Opcodes.CONST,
-            Opcodes.NO_NEXT, Form31i.THE_ONE, true,
-            "const");
+            Opcodes.NO_NEXT, Form31i.THE_ONE, true);
 
     public static final Dop CONST_HIGH16 =
         new Dop(Opcodes.CONST_HIGH16, Opcodes.CONST,
-            Opcodes.CONST, Form21h.THE_ONE, true,
-            "const/high16");
+            Opcodes.CONST, Form21h.THE_ONE, true);
 
     public static final Dop CONST_WIDE_16 =
         new Dop(Opcodes.CONST_WIDE_16, Opcodes.CONST_WIDE,
-            Opcodes.CONST_WIDE_HIGH16, Form21s.THE_ONE, true,
-            "const-wide/16");
+            Opcodes.CONST_WIDE_HIGH16, Form21s.THE_ONE, true);
 
     public static final Dop CONST_WIDE_32 =
         new Dop(Opcodes.CONST_WIDE_32, Opcodes.CONST_WIDE,
-            Opcodes.CONST_WIDE, Form31i.THE_ONE, true,
-            "const-wide/32");
+            Opcodes.CONST_WIDE, Form31i.THE_ONE, true);
 
     public static final Dop CONST_WIDE =
         new Dop(Opcodes.CONST_WIDE, Opcodes.CONST_WIDE,
-            Opcodes.NO_NEXT, Form51l.THE_ONE, true,
-            "const-wide");
+            Opcodes.NO_NEXT, Form51l.THE_ONE, true);
 
     public static final Dop CONST_WIDE_HIGH16 =
         new Dop(Opcodes.CONST_WIDE_HIGH16, Opcodes.CONST_WIDE,
-            Opcodes.CONST_WIDE_32, Form21h.THE_ONE, true,
-            "const-wide/high16");
+            Opcodes.CONST_WIDE_32, Form21h.THE_ONE, true);
 
     public static final Dop CONST_STRING =
         new Dop(Opcodes.CONST_STRING, Opcodes.CONST_STRING,
-            Opcodes.CONST_STRING_JUMBO, Form21c.THE_ONE, true,
-            "const-string");
+            Opcodes.CONST_STRING_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop CONST_STRING_JUMBO =
         new Dop(Opcodes.CONST_STRING_JUMBO, Opcodes.CONST_STRING,
-            Opcodes.NO_NEXT, Form31c.THE_ONE, true,
-            "const-string/jumbo");
+            Opcodes.NO_NEXT, Form31c.THE_ONE, true);
 
     public static final Dop CONST_CLASS =
         new Dop(Opcodes.CONST_CLASS, Opcodes.CONST_CLASS,
-            Opcodes.CONST_CLASS_JUMBO, Form21c.THE_ONE, true,
-            "const-class");
+            Opcodes.CONST_CLASS_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop MONITOR_ENTER =
         new Dop(Opcodes.MONITOR_ENTER, Opcodes.MONITOR_ENTER,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, false,
-            "monitor-enter");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, false);
 
     public static final Dop MONITOR_EXIT =
         new Dop(Opcodes.MONITOR_EXIT, Opcodes.MONITOR_EXIT,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, false,
-            "monitor-exit");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, false);
 
     public static final Dop CHECK_CAST =
         new Dop(Opcodes.CHECK_CAST, Opcodes.CHECK_CAST,
-            Opcodes.CHECK_CAST_JUMBO, Form21c.THE_ONE, true,
-            "check-cast");
+            Opcodes.CHECK_CAST_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop INSTANCE_OF =
         new Dop(Opcodes.INSTANCE_OF, Opcodes.INSTANCE_OF,
-            Opcodes.INSTANCE_OF_JUMBO, Form22c.THE_ONE, true,
-            "instance-of");
+            Opcodes.INSTANCE_OF_JUMBO, Form22c.THE_ONE, true);
 
     public static final Dop ARRAY_LENGTH =
         new Dop(Opcodes.ARRAY_LENGTH, Opcodes.ARRAY_LENGTH,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "array-length");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop NEW_INSTANCE =
         new Dop(Opcodes.NEW_INSTANCE, Opcodes.NEW_INSTANCE,
-            Opcodes.NEW_INSTANCE_JUMBO, Form21c.THE_ONE, true,
-            "new-instance");
+            Opcodes.NEW_INSTANCE_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop NEW_ARRAY =
         new Dop(Opcodes.NEW_ARRAY, Opcodes.NEW_ARRAY,
-            Opcodes.NEW_ARRAY_JUMBO, Form22c.THE_ONE, true,
-            "new-array");
+            Opcodes.NEW_ARRAY_JUMBO, Form22c.THE_ONE, true);
 
     public static final Dop FILLED_NEW_ARRAY =
         new Dop(Opcodes.FILLED_NEW_ARRAY, Opcodes.FILLED_NEW_ARRAY,
-            Opcodes.FILLED_NEW_ARRAY_RANGE, Form35c.THE_ONE, false,
-            "filled-new-array");
+            Opcodes.FILLED_NEW_ARRAY_RANGE, Form35c.THE_ONE, false);
 
     public static final Dop FILLED_NEW_ARRAY_RANGE =
         new Dop(Opcodes.FILLED_NEW_ARRAY_RANGE, Opcodes.FILLED_NEW_ARRAY,
-            Opcodes.FILLED_NEW_ARRAY_JUMBO, Form3rc.THE_ONE, false,
-            "filled-new-array/range");
+            Opcodes.FILLED_NEW_ARRAY_JUMBO, Form3rc.THE_ONE, false);
 
     public static final Dop FILL_ARRAY_DATA =
         new Dop(Opcodes.FILL_ARRAY_DATA, Opcodes.FILL_ARRAY_DATA,
-            Opcodes.NO_NEXT, Form31t.THE_ONE, false,
-            "fill-array-data");
+            Opcodes.NO_NEXT, Form31t.THE_ONE, false);
 
     public static final Dop THROW =
         new Dop(Opcodes.THROW, Opcodes.THROW,
-            Opcodes.NO_NEXT, Form11x.THE_ONE, false,
-            "throw");
+            Opcodes.NO_NEXT, Form11x.THE_ONE, false);
 
     public static final Dop GOTO =
         new Dop(Opcodes.GOTO, Opcodes.GOTO,
-            Opcodes.GOTO_16, Form10t.THE_ONE, false,
-            "goto");
+            Opcodes.GOTO_16, Form10t.THE_ONE, false);
 
     public static final Dop GOTO_16 =
         new Dop(Opcodes.GOTO_16, Opcodes.GOTO,
-            Opcodes.GOTO_32, Form20t.THE_ONE, false,
-            "goto/16");
+            Opcodes.GOTO_32, Form20t.THE_ONE, false);
 
     public static final Dop GOTO_32 =
         new Dop(Opcodes.GOTO_32, Opcodes.GOTO,
-            Opcodes.NO_NEXT, Form30t.THE_ONE, false,
-            "goto/32");
+            Opcodes.NO_NEXT, Form30t.THE_ONE, false);
 
     public static final Dop PACKED_SWITCH =
         new Dop(Opcodes.PACKED_SWITCH, Opcodes.PACKED_SWITCH,
-            Opcodes.NO_NEXT, Form31t.THE_ONE, false,
-            "packed-switch");
+            Opcodes.NO_NEXT, Form31t.THE_ONE, false);
 
     public static final Dop SPARSE_SWITCH =
         new Dop(Opcodes.SPARSE_SWITCH, Opcodes.SPARSE_SWITCH,
-            Opcodes.NO_NEXT, Form31t.THE_ONE, false,
-            "sparse-switch");
+            Opcodes.NO_NEXT, Form31t.THE_ONE, false);
 
     public static final Dop CMPL_FLOAT =
         new Dop(Opcodes.CMPL_FLOAT, Opcodes.CMPL_FLOAT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "cmpl-float");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop CMPG_FLOAT =
         new Dop(Opcodes.CMPG_FLOAT, Opcodes.CMPG_FLOAT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "cmpg-float");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop CMPL_DOUBLE =
         new Dop(Opcodes.CMPL_DOUBLE, Opcodes.CMPL_DOUBLE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "cmpl-double");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop CMPG_DOUBLE =
         new Dop(Opcodes.CMPG_DOUBLE, Opcodes.CMPG_DOUBLE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "cmpg-double");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop CMP_LONG =
         new Dop(Opcodes.CMP_LONG, Opcodes.CMP_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "cmp-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop IF_EQ =
         new Dop(Opcodes.IF_EQ, Opcodes.IF_EQ,
-            Opcodes.NO_NEXT, Form22t.THE_ONE, false,
-            "if-eq");
+            Opcodes.NO_NEXT, Form22t.THE_ONE, false);
 
     public static final Dop IF_NE =
         new Dop(Opcodes.IF_NE, Opcodes.IF_NE,
-            Opcodes.NO_NEXT, Form22t.THE_ONE, false,
-            "if-ne");
+            Opcodes.NO_NEXT, Form22t.THE_ONE, false);
 
     public static final Dop IF_LT =
         new Dop(Opcodes.IF_LT, Opcodes.IF_LT,
-            Opcodes.NO_NEXT, Form22t.THE_ONE, false,
-            "if-lt");
+            Opcodes.NO_NEXT, Form22t.THE_ONE, false);
 
     public static final Dop IF_GE =
         new Dop(Opcodes.IF_GE, Opcodes.IF_GE,
-            Opcodes.NO_NEXT, Form22t.THE_ONE, false,
-            "if-ge");
+            Opcodes.NO_NEXT, Form22t.THE_ONE, false);
 
     public static final Dop IF_GT =
         new Dop(Opcodes.IF_GT, Opcodes.IF_GT,
-            Opcodes.NO_NEXT, Form22t.THE_ONE, false,
-            "if-gt");
+            Opcodes.NO_NEXT, Form22t.THE_ONE, false);
 
     public static final Dop IF_LE =
         new Dop(Opcodes.IF_LE, Opcodes.IF_LE,
-            Opcodes.NO_NEXT, Form22t.THE_ONE, false,
-            "if-le");
+            Opcodes.NO_NEXT, Form22t.THE_ONE, false);
 
     public static final Dop IF_EQZ =
         new Dop(Opcodes.IF_EQZ, Opcodes.IF_EQZ,
-            Opcodes.NO_NEXT, Form21t.THE_ONE, false,
-            "if-eqz");
+            Opcodes.NO_NEXT, Form21t.THE_ONE, false);
 
     public static final Dop IF_NEZ =
         new Dop(Opcodes.IF_NEZ, Opcodes.IF_NEZ,
-            Opcodes.NO_NEXT, Form21t.THE_ONE, false,
-            "if-nez");
+            Opcodes.NO_NEXT, Form21t.THE_ONE, false);
 
     public static final Dop IF_LTZ =
         new Dop(Opcodes.IF_LTZ, Opcodes.IF_LTZ,
-            Opcodes.NO_NEXT, Form21t.THE_ONE, false,
-            "if-ltz");
+            Opcodes.NO_NEXT, Form21t.THE_ONE, false);
 
     public static final Dop IF_GEZ =
         new Dop(Opcodes.IF_GEZ, Opcodes.IF_GEZ,
-            Opcodes.NO_NEXT, Form21t.THE_ONE, false,
-            "if-gez");
+            Opcodes.NO_NEXT, Form21t.THE_ONE, false);
 
     public static final Dop IF_GTZ =
         new Dop(Opcodes.IF_GTZ, Opcodes.IF_GTZ,
-            Opcodes.NO_NEXT, Form21t.THE_ONE, false,
-            "if-gtz");
+            Opcodes.NO_NEXT, Form21t.THE_ONE, false);
 
     public static final Dop IF_LEZ =
         new Dop(Opcodes.IF_LEZ, Opcodes.IF_LEZ,
-            Opcodes.NO_NEXT, Form21t.THE_ONE, false,
-            "if-lez");
+            Opcodes.NO_NEXT, Form21t.THE_ONE, false);
 
     public static final Dop AGET =
         new Dop(Opcodes.AGET, Opcodes.AGET,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "aget");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop AGET_WIDE =
         new Dop(Opcodes.AGET_WIDE, Opcodes.AGET_WIDE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "aget-wide");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop AGET_OBJECT =
         new Dop(Opcodes.AGET_OBJECT, Opcodes.AGET_OBJECT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "aget-object");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop AGET_BOOLEAN =
         new Dop(Opcodes.AGET_BOOLEAN, Opcodes.AGET_BOOLEAN,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "aget-boolean");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop AGET_BYTE =
         new Dop(Opcodes.AGET_BYTE, Opcodes.AGET_BYTE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "aget-byte");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop AGET_CHAR =
         new Dop(Opcodes.AGET_CHAR, Opcodes.AGET_CHAR,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "aget-char");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop AGET_SHORT =
         new Dop(Opcodes.AGET_SHORT, Opcodes.AGET_SHORT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "aget-short");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop APUT =
         new Dop(Opcodes.APUT, Opcodes.APUT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, false,
-            "aput");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, false);
 
     public static final Dop APUT_WIDE =
         new Dop(Opcodes.APUT_WIDE, Opcodes.APUT_WIDE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, false,
-            "aput-wide");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, false);
 
     public static final Dop APUT_OBJECT =
         new Dop(Opcodes.APUT_OBJECT, Opcodes.APUT_OBJECT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, false,
-            "aput-object");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, false);
 
     public static final Dop APUT_BOOLEAN =
         new Dop(Opcodes.APUT_BOOLEAN, Opcodes.APUT_BOOLEAN,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, false,
-            "aput-boolean");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, false);
 
     public static final Dop APUT_BYTE =
         new Dop(Opcodes.APUT_BYTE, Opcodes.APUT_BYTE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, false,
-            "aput-byte");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, false);
 
     public static final Dop APUT_CHAR =
         new Dop(Opcodes.APUT_CHAR, Opcodes.APUT_CHAR,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, false,
-            "aput-char");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, false);
 
     public static final Dop APUT_SHORT =
         new Dop(Opcodes.APUT_SHORT, Opcodes.APUT_SHORT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, false,
-            "aput-short");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, false);
 
     public static final Dop IGET =
         new Dop(Opcodes.IGET, Opcodes.IGET,
-            Opcodes.IGET_JUMBO, Form22c.THE_ONE, true,
-            "iget");
+            Opcodes.IGET_JUMBO, Form22c.THE_ONE, true);
 
     public static final Dop IGET_WIDE =
         new Dop(Opcodes.IGET_WIDE, Opcodes.IGET_WIDE,
-            Opcodes.IGET_WIDE_JUMBO, Form22c.THE_ONE, true,
-            "iget-wide");
+            Opcodes.IGET_WIDE_JUMBO, Form22c.THE_ONE, true);
 
     public static final Dop IGET_OBJECT =
         new Dop(Opcodes.IGET_OBJECT, Opcodes.IGET_OBJECT,
-            Opcodes.IGET_OBJECT_JUMBO, Form22c.THE_ONE, true,
-            "iget-object");
+            Opcodes.IGET_OBJECT_JUMBO, Form22c.THE_ONE, true);
 
     public static final Dop IGET_BOOLEAN =
         new Dop(Opcodes.IGET_BOOLEAN, Opcodes.IGET_BOOLEAN,
-            Opcodes.IGET_BOOLEAN_JUMBO, Form22c.THE_ONE, true,
-            "iget-boolean");
+            Opcodes.IGET_BOOLEAN_JUMBO, Form22c.THE_ONE, true);
 
     public static final Dop IGET_BYTE =
         new Dop(Opcodes.IGET_BYTE, Opcodes.IGET_BYTE,
-            Opcodes.IGET_BYTE_JUMBO, Form22c.THE_ONE, true,
-            "iget-byte");
+            Opcodes.IGET_BYTE_JUMBO, Form22c.THE_ONE, true);
 
     public static final Dop IGET_CHAR =
         new Dop(Opcodes.IGET_CHAR, Opcodes.IGET_CHAR,
-            Opcodes.IGET_CHAR_JUMBO, Form22c.THE_ONE, true,
-            "iget-char");
+            Opcodes.IGET_CHAR_JUMBO, Form22c.THE_ONE, true);
 
     public static final Dop IGET_SHORT =
         new Dop(Opcodes.IGET_SHORT, Opcodes.IGET_SHORT,
-            Opcodes.IGET_SHORT_JUMBO, Form22c.THE_ONE, true,
-            "iget-short");
+            Opcodes.IGET_SHORT_JUMBO, Form22c.THE_ONE, true);
 
     public static final Dop IPUT =
         new Dop(Opcodes.IPUT, Opcodes.IPUT,
-            Opcodes.IPUT_JUMBO, Form22c.THE_ONE, false,
-            "iput");
+            Opcodes.IPUT_JUMBO, Form22c.THE_ONE, false);
 
     public static final Dop IPUT_WIDE =
         new Dop(Opcodes.IPUT_WIDE, Opcodes.IPUT_WIDE,
-            Opcodes.IPUT_WIDE_JUMBO, Form22c.THE_ONE, false,
-            "iput-wide");
+            Opcodes.IPUT_WIDE_JUMBO, Form22c.THE_ONE, false);
 
     public static final Dop IPUT_OBJECT =
         new Dop(Opcodes.IPUT_OBJECT, Opcodes.IPUT_OBJECT,
-            Opcodes.IPUT_OBJECT_JUMBO, Form22c.THE_ONE, false,
-            "iput-object");
+            Opcodes.IPUT_OBJECT_JUMBO, Form22c.THE_ONE, false);
 
     public static final Dop IPUT_BOOLEAN =
         new Dop(Opcodes.IPUT_BOOLEAN, Opcodes.IPUT_BOOLEAN,
-            Opcodes.IPUT_BOOLEAN_JUMBO, Form22c.THE_ONE, false,
-            "iput-boolean");
+            Opcodes.IPUT_BOOLEAN_JUMBO, Form22c.THE_ONE, false);
 
     public static final Dop IPUT_BYTE =
         new Dop(Opcodes.IPUT_BYTE, Opcodes.IPUT_BYTE,
-            Opcodes.IPUT_BYTE_JUMBO, Form22c.THE_ONE, false,
-            "iput-byte");
+            Opcodes.IPUT_BYTE_JUMBO, Form22c.THE_ONE, false);
 
     public static final Dop IPUT_CHAR =
         new Dop(Opcodes.IPUT_CHAR, Opcodes.IPUT_CHAR,
-            Opcodes.IPUT_CHAR_JUMBO, Form22c.THE_ONE, false,
-            "iput-char");
+            Opcodes.IPUT_CHAR_JUMBO, Form22c.THE_ONE, false);
 
     public static final Dop IPUT_SHORT =
         new Dop(Opcodes.IPUT_SHORT, Opcodes.IPUT_SHORT,
-            Opcodes.IPUT_SHORT_JUMBO, Form22c.THE_ONE, false,
-            "iput-short");
+            Opcodes.IPUT_SHORT_JUMBO, Form22c.THE_ONE, false);
 
     public static final Dop SGET =
         new Dop(Opcodes.SGET, Opcodes.SGET,
-            Opcodes.SGET_JUMBO, Form21c.THE_ONE, true,
-            "sget");
+            Opcodes.SGET_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop SGET_WIDE =
         new Dop(Opcodes.SGET_WIDE, Opcodes.SGET_WIDE,
-            Opcodes.SGET_WIDE_JUMBO, Form21c.THE_ONE, true,
-            "sget-wide");
+            Opcodes.SGET_WIDE_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop SGET_OBJECT =
         new Dop(Opcodes.SGET_OBJECT, Opcodes.SGET_OBJECT,
-            Opcodes.SGET_OBJECT_JUMBO, Form21c.THE_ONE, true,
-            "sget-object");
+            Opcodes.SGET_OBJECT_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop SGET_BOOLEAN =
         new Dop(Opcodes.SGET_BOOLEAN, Opcodes.SGET_BOOLEAN,
-            Opcodes.SGET_BOOLEAN_JUMBO, Form21c.THE_ONE, true,
-            "sget-boolean");
+            Opcodes.SGET_BOOLEAN_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop SGET_BYTE =
         new Dop(Opcodes.SGET_BYTE, Opcodes.SGET_BYTE,
-            Opcodes.SGET_BYTE_JUMBO, Form21c.THE_ONE, true,
-            "sget-byte");
+            Opcodes.SGET_BYTE_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop SGET_CHAR =
         new Dop(Opcodes.SGET_CHAR, Opcodes.SGET_CHAR,
-            Opcodes.SGET_CHAR_JUMBO, Form21c.THE_ONE, true,
-            "sget-char");
+            Opcodes.SGET_CHAR_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop SGET_SHORT =
         new Dop(Opcodes.SGET_SHORT, Opcodes.SGET_SHORT,
-            Opcodes.SGET_SHORT_JUMBO, Form21c.THE_ONE, true,
-            "sget-short");
+            Opcodes.SGET_SHORT_JUMBO, Form21c.THE_ONE, true);
 
     public static final Dop SPUT =
         new Dop(Opcodes.SPUT, Opcodes.SPUT,
-            Opcodes.SPUT_JUMBO, Form21c.THE_ONE, false,
-            "sput");
+            Opcodes.SPUT_JUMBO, Form21c.THE_ONE, false);
 
     public static final Dop SPUT_WIDE =
         new Dop(Opcodes.SPUT_WIDE, Opcodes.SPUT_WIDE,
-            Opcodes.SPUT_WIDE_JUMBO, Form21c.THE_ONE, false,
-            "sput-wide");
+            Opcodes.SPUT_WIDE_JUMBO, Form21c.THE_ONE, false);
 
     public static final Dop SPUT_OBJECT =
         new Dop(Opcodes.SPUT_OBJECT, Opcodes.SPUT_OBJECT,
-            Opcodes.SPUT_OBJECT_JUMBO, Form21c.THE_ONE, false,
-            "sput-object");
+            Opcodes.SPUT_OBJECT_JUMBO, Form21c.THE_ONE, false);
 
     public static final Dop SPUT_BOOLEAN =
         new Dop(Opcodes.SPUT_BOOLEAN, Opcodes.SPUT_BOOLEAN,
-            Opcodes.SPUT_BOOLEAN_JUMBO, Form21c.THE_ONE, false,
-            "sput-boolean");
+            Opcodes.SPUT_BOOLEAN_JUMBO, Form21c.THE_ONE, false);
 
     public static final Dop SPUT_BYTE =
         new Dop(Opcodes.SPUT_BYTE, Opcodes.SPUT_BYTE,
-            Opcodes.SPUT_BYTE_JUMBO, Form21c.THE_ONE, false,
-            "sput-byte");
+            Opcodes.SPUT_BYTE_JUMBO, Form21c.THE_ONE, false);
 
     public static final Dop SPUT_CHAR =
         new Dop(Opcodes.SPUT_CHAR, Opcodes.SPUT_CHAR,
-            Opcodes.SPUT_CHAR_JUMBO, Form21c.THE_ONE, false,
-            "sput-char");
+            Opcodes.SPUT_CHAR_JUMBO, Form21c.THE_ONE, false);
 
     public static final Dop SPUT_SHORT =
         new Dop(Opcodes.SPUT_SHORT, Opcodes.SPUT_SHORT,
-            Opcodes.SPUT_SHORT_JUMBO, Form21c.THE_ONE, false,
-            "sput-short");
+            Opcodes.SPUT_SHORT_JUMBO, Form21c.THE_ONE, false);
 
     public static final Dop INVOKE_VIRTUAL =
         new Dop(Opcodes.INVOKE_VIRTUAL, Opcodes.INVOKE_VIRTUAL,
-            Opcodes.INVOKE_VIRTUAL_RANGE, Form35c.THE_ONE, false,
-            "invoke-virtual");
+            Opcodes.INVOKE_VIRTUAL_RANGE, Form35c.THE_ONE, false);
 
     public static final Dop INVOKE_SUPER =
         new Dop(Opcodes.INVOKE_SUPER, Opcodes.INVOKE_SUPER,
-            Opcodes.INVOKE_SUPER_RANGE, Form35c.THE_ONE, false,
-            "invoke-super");
+            Opcodes.INVOKE_SUPER_RANGE, Form35c.THE_ONE, false);
 
     public static final Dop INVOKE_DIRECT =
         new Dop(Opcodes.INVOKE_DIRECT, Opcodes.INVOKE_DIRECT,
-            Opcodes.INVOKE_DIRECT_RANGE, Form35c.THE_ONE, false,
-            "invoke-direct");
+            Opcodes.INVOKE_DIRECT_RANGE, Form35c.THE_ONE, false);
 
     public static final Dop INVOKE_STATIC =
         new Dop(Opcodes.INVOKE_STATIC, Opcodes.INVOKE_STATIC,
-            Opcodes.INVOKE_STATIC_RANGE, Form35c.THE_ONE, false,
-            "invoke-static");
+            Opcodes.INVOKE_STATIC_RANGE, Form35c.THE_ONE, false);
 
     public static final Dop INVOKE_INTERFACE =
         new Dop(Opcodes.INVOKE_INTERFACE, Opcodes.INVOKE_INTERFACE,
-            Opcodes.INVOKE_INTERFACE_RANGE, Form35c.THE_ONE, false,
-            "invoke-interface");
+            Opcodes.INVOKE_INTERFACE_RANGE, Form35c.THE_ONE, false);
 
     public static final Dop INVOKE_VIRTUAL_RANGE =
         new Dop(Opcodes.INVOKE_VIRTUAL_RANGE, Opcodes.INVOKE_VIRTUAL,
-            Opcodes.INVOKE_VIRTUAL_JUMBO, Form3rc.THE_ONE, false,
-            "invoke-virtual/range");
+            Opcodes.INVOKE_VIRTUAL_JUMBO, Form3rc.THE_ONE, false);
 
     public static final Dop INVOKE_SUPER_RANGE =
         new Dop(Opcodes.INVOKE_SUPER_RANGE, Opcodes.INVOKE_SUPER,
-            Opcodes.INVOKE_SUPER_JUMBO, Form3rc.THE_ONE, false,
-            "invoke-super/range");
+            Opcodes.INVOKE_SUPER_JUMBO, Form3rc.THE_ONE, false);
 
     public static final Dop INVOKE_DIRECT_RANGE =
         new Dop(Opcodes.INVOKE_DIRECT_RANGE, Opcodes.INVOKE_DIRECT,
-            Opcodes.INVOKE_DIRECT_JUMBO, Form3rc.THE_ONE, false,
-            "invoke-direct/range");
+            Opcodes.INVOKE_DIRECT_JUMBO, Form3rc.THE_ONE, false);
 
     public static final Dop INVOKE_STATIC_RANGE =
         new Dop(Opcodes.INVOKE_STATIC_RANGE, Opcodes.INVOKE_STATIC,
-            Opcodes.INVOKE_STATIC_JUMBO, Form3rc.THE_ONE, false,
-            "invoke-static/range");
+            Opcodes.INVOKE_STATIC_JUMBO, Form3rc.THE_ONE, false);
 
     public static final Dop INVOKE_INTERFACE_RANGE =
         new Dop(Opcodes.INVOKE_INTERFACE_RANGE, Opcodes.INVOKE_INTERFACE,
-            Opcodes.INVOKE_INTERFACE_JUMBO, Form3rc.THE_ONE, false,
-            "invoke-interface/range");
+            Opcodes.INVOKE_INTERFACE_JUMBO, Form3rc.THE_ONE, false);
 
     public static final Dop NEG_INT =
         new Dop(Opcodes.NEG_INT, Opcodes.NEG_INT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "neg-int");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop NOT_INT =
         new Dop(Opcodes.NOT_INT, Opcodes.NOT_INT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "not-int");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop NEG_LONG =
         new Dop(Opcodes.NEG_LONG, Opcodes.NEG_LONG,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "neg-long");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop NOT_LONG =
         new Dop(Opcodes.NOT_LONG, Opcodes.NOT_LONG,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "not-long");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop NEG_FLOAT =
         new Dop(Opcodes.NEG_FLOAT, Opcodes.NEG_FLOAT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "neg-float");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop NEG_DOUBLE =
         new Dop(Opcodes.NEG_DOUBLE, Opcodes.NEG_DOUBLE,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "neg-double");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop INT_TO_LONG =
         new Dop(Opcodes.INT_TO_LONG, Opcodes.INT_TO_LONG,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "int-to-long");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop INT_TO_FLOAT =
         new Dop(Opcodes.INT_TO_FLOAT, Opcodes.INT_TO_FLOAT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "int-to-float");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop INT_TO_DOUBLE =
         new Dop(Opcodes.INT_TO_DOUBLE, Opcodes.INT_TO_DOUBLE,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "int-to-double");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop LONG_TO_INT =
         new Dop(Opcodes.LONG_TO_INT, Opcodes.LONG_TO_INT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "long-to-int");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop LONG_TO_FLOAT =
         new Dop(Opcodes.LONG_TO_FLOAT, Opcodes.LONG_TO_FLOAT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "long-to-float");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop LONG_TO_DOUBLE =
         new Dop(Opcodes.LONG_TO_DOUBLE, Opcodes.LONG_TO_DOUBLE,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "long-to-double");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop FLOAT_TO_INT =
         new Dop(Opcodes.FLOAT_TO_INT, Opcodes.FLOAT_TO_INT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "float-to-int");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop FLOAT_TO_LONG =
         new Dop(Opcodes.FLOAT_TO_LONG, Opcodes.FLOAT_TO_LONG,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "float-to-long");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop FLOAT_TO_DOUBLE =
         new Dop(Opcodes.FLOAT_TO_DOUBLE, Opcodes.FLOAT_TO_DOUBLE,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "float-to-double");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop DOUBLE_TO_INT =
         new Dop(Opcodes.DOUBLE_TO_INT, Opcodes.DOUBLE_TO_INT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "double-to-int");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop DOUBLE_TO_LONG =
         new Dop(Opcodes.DOUBLE_TO_LONG, Opcodes.DOUBLE_TO_LONG,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "double-to-long");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop DOUBLE_TO_FLOAT =
         new Dop(Opcodes.DOUBLE_TO_FLOAT, Opcodes.DOUBLE_TO_FLOAT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "double-to-float");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop INT_TO_BYTE =
         new Dop(Opcodes.INT_TO_BYTE, Opcodes.INT_TO_BYTE,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "int-to-byte");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop INT_TO_CHAR =
         new Dop(Opcodes.INT_TO_CHAR, Opcodes.INT_TO_CHAR,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "int-to-char");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop INT_TO_SHORT =
         new Dop(Opcodes.INT_TO_SHORT, Opcodes.INT_TO_SHORT,
-            Opcodes.NO_NEXT, Form12x.THE_ONE, true,
-            "int-to-short");
+            Opcodes.NO_NEXT, Form12x.THE_ONE, true);
 
     public static final Dop ADD_INT =
         new Dop(Opcodes.ADD_INT, Opcodes.ADD_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "add-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop SUB_INT =
         new Dop(Opcodes.SUB_INT, Opcodes.SUB_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "sub-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop MUL_INT =
         new Dop(Opcodes.MUL_INT, Opcodes.MUL_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "mul-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop DIV_INT =
         new Dop(Opcodes.DIV_INT, Opcodes.DIV_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "div-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop REM_INT =
         new Dop(Opcodes.REM_INT, Opcodes.REM_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "rem-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop AND_INT =
         new Dop(Opcodes.AND_INT, Opcodes.AND_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "and-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop OR_INT =
         new Dop(Opcodes.OR_INT, Opcodes.OR_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "or-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop XOR_INT =
         new Dop(Opcodes.XOR_INT, Opcodes.XOR_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "xor-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop SHL_INT =
         new Dop(Opcodes.SHL_INT, Opcodes.SHL_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "shl-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop SHR_INT =
         new Dop(Opcodes.SHR_INT, Opcodes.SHR_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "shr-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop USHR_INT =
         new Dop(Opcodes.USHR_INT, Opcodes.USHR_INT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "ushr-int");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop ADD_LONG =
         new Dop(Opcodes.ADD_LONG, Opcodes.ADD_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "add-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop SUB_LONG =
         new Dop(Opcodes.SUB_LONG, Opcodes.SUB_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "sub-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop MUL_LONG =
         new Dop(Opcodes.MUL_LONG, Opcodes.MUL_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "mul-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop DIV_LONG =
         new Dop(Opcodes.DIV_LONG, Opcodes.DIV_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "div-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop REM_LONG =
         new Dop(Opcodes.REM_LONG, Opcodes.REM_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "rem-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop AND_LONG =
         new Dop(Opcodes.AND_LONG, Opcodes.AND_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "and-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop OR_LONG =
         new Dop(Opcodes.OR_LONG, Opcodes.OR_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "or-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop XOR_LONG =
         new Dop(Opcodes.XOR_LONG, Opcodes.XOR_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "xor-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop SHL_LONG =
         new Dop(Opcodes.SHL_LONG, Opcodes.SHL_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "shl-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop SHR_LONG =
         new Dop(Opcodes.SHR_LONG, Opcodes.SHR_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "shr-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop USHR_LONG =
         new Dop(Opcodes.USHR_LONG, Opcodes.USHR_LONG,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "ushr-long");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop ADD_FLOAT =
         new Dop(Opcodes.ADD_FLOAT, Opcodes.ADD_FLOAT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "add-float");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop SUB_FLOAT =
         new Dop(Opcodes.SUB_FLOAT, Opcodes.SUB_FLOAT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "sub-float");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop MUL_FLOAT =
         new Dop(Opcodes.MUL_FLOAT, Opcodes.MUL_FLOAT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "mul-float");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop DIV_FLOAT =
         new Dop(Opcodes.DIV_FLOAT, Opcodes.DIV_FLOAT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "div-float");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop REM_FLOAT =
         new Dop(Opcodes.REM_FLOAT, Opcodes.REM_FLOAT,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "rem-float");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop ADD_DOUBLE =
         new Dop(Opcodes.ADD_DOUBLE, Opcodes.ADD_DOUBLE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "add-double");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop SUB_DOUBLE =
         new Dop(Opcodes.SUB_DOUBLE, Opcodes.SUB_DOUBLE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "sub-double");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop MUL_DOUBLE =
         new Dop(Opcodes.MUL_DOUBLE, Opcodes.MUL_DOUBLE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "mul-double");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop DIV_DOUBLE =
         new Dop(Opcodes.DIV_DOUBLE, Opcodes.DIV_DOUBLE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "div-double");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop REM_DOUBLE =
         new Dop(Opcodes.REM_DOUBLE, Opcodes.REM_DOUBLE,
-            Opcodes.NO_NEXT, Form23x.THE_ONE, true,
-            "rem-double");
+            Opcodes.NO_NEXT, Form23x.THE_ONE, true);
 
     public static final Dop ADD_INT_2ADDR =
         new Dop(Opcodes.ADD_INT_2ADDR, Opcodes.ADD_INT,
-            Opcodes.ADD_INT, Form12x.THE_ONE, true,
-            "add-int/2addr");
+            Opcodes.ADD_INT, Form12x.THE_ONE, true);
 
     public static final Dop SUB_INT_2ADDR =
         new Dop(Opcodes.SUB_INT_2ADDR, Opcodes.SUB_INT,
-            Opcodes.SUB_INT, Form12x.THE_ONE, true,
-            "sub-int/2addr");
+            Opcodes.SUB_INT, Form12x.THE_ONE, true);
 
     public static final Dop MUL_INT_2ADDR =
         new Dop(Opcodes.MUL_INT_2ADDR, Opcodes.MUL_INT,
-            Opcodes.MUL_INT, Form12x.THE_ONE, true,
-            "mul-int/2addr");
+            Opcodes.MUL_INT, Form12x.THE_ONE, true);
 
     public static final Dop DIV_INT_2ADDR =
         new Dop(Opcodes.DIV_INT_2ADDR, Opcodes.DIV_INT,
-            Opcodes.DIV_INT, Form12x.THE_ONE, true,
-            "div-int/2addr");
+            Opcodes.DIV_INT, Form12x.THE_ONE, true);
 
     public static final Dop REM_INT_2ADDR =
         new Dop(Opcodes.REM_INT_2ADDR, Opcodes.REM_INT,
-            Opcodes.REM_INT, Form12x.THE_ONE, true,
-            "rem-int/2addr");
+            Opcodes.REM_INT, Form12x.THE_ONE, true);
 
     public static final Dop AND_INT_2ADDR =
         new Dop(Opcodes.AND_INT_2ADDR, Opcodes.AND_INT,
-            Opcodes.AND_INT, Form12x.THE_ONE, true,
-            "and-int/2addr");
+            Opcodes.AND_INT, Form12x.THE_ONE, true);
 
     public static final Dop OR_INT_2ADDR =
         new Dop(Opcodes.OR_INT_2ADDR, Opcodes.OR_INT,
-            Opcodes.OR_INT, Form12x.THE_ONE, true,
-            "or-int/2addr");
+            Opcodes.OR_INT, Form12x.THE_ONE, true);
 
     public static final Dop XOR_INT_2ADDR =
         new Dop(Opcodes.XOR_INT_2ADDR, Opcodes.XOR_INT,
-            Opcodes.XOR_INT, Form12x.THE_ONE, true,
-            "xor-int/2addr");
+            Opcodes.XOR_INT, Form12x.THE_ONE, true);
 
     public static final Dop SHL_INT_2ADDR =
         new Dop(Opcodes.SHL_INT_2ADDR, Opcodes.SHL_INT,
-            Opcodes.SHL_INT, Form12x.THE_ONE, true,
-            "shl-int/2addr");
+            Opcodes.SHL_INT, Form12x.THE_ONE, true);
 
     public static final Dop SHR_INT_2ADDR =
         new Dop(Opcodes.SHR_INT_2ADDR, Opcodes.SHR_INT,
-            Opcodes.SHR_INT, Form12x.THE_ONE, true,
-            "shr-int/2addr");
+            Opcodes.SHR_INT, Form12x.THE_ONE, true);
 
     public static final Dop USHR_INT_2ADDR =
         new Dop(Opcodes.USHR_INT_2ADDR, Opcodes.USHR_INT,
-            Opcodes.USHR_INT, Form12x.THE_ONE, true,
-            "ushr-int/2addr");
+            Opcodes.USHR_INT, Form12x.THE_ONE, true);
 
     public static final Dop ADD_LONG_2ADDR =
         new Dop(Opcodes.ADD_LONG_2ADDR, Opcodes.ADD_LONG,
-            Opcodes.ADD_LONG, Form12x.THE_ONE, true,
-            "add-long/2addr");
+            Opcodes.ADD_LONG, Form12x.THE_ONE, true);
 
     public static final Dop SUB_LONG_2ADDR =
         new Dop(Opcodes.SUB_LONG_2ADDR, Opcodes.SUB_LONG,
-            Opcodes.SUB_LONG, Form12x.THE_ONE, true,
-            "sub-long/2addr");
+            Opcodes.SUB_LONG, Form12x.THE_ONE, true);
 
     public static final Dop MUL_LONG_2ADDR =
         new Dop(Opcodes.MUL_LONG_2ADDR, Opcodes.MUL_LONG,
-            Opcodes.MUL_LONG, Form12x.THE_ONE, true,
-            "mul-long/2addr");
+            Opcodes.MUL_LONG, Form12x.THE_ONE, true);
 
     public static final Dop DIV_LONG_2ADDR =
         new Dop(Opcodes.DIV_LONG_2ADDR, Opcodes.DIV_LONG,
-            Opcodes.DIV_LONG, Form12x.THE_ONE, true,
-            "div-long/2addr");
+            Opcodes.DIV_LONG, Form12x.THE_ONE, true);
 
     public static final Dop REM_LONG_2ADDR =
         new Dop(Opcodes.REM_LONG_2ADDR, Opcodes.REM_LONG,
-            Opcodes.REM_LONG, Form12x.THE_ONE, true,
-            "rem-long/2addr");
+            Opcodes.REM_LONG, Form12x.THE_ONE, true);
 
     public static final Dop AND_LONG_2ADDR =
         new Dop(Opcodes.AND_LONG_2ADDR, Opcodes.AND_LONG,
-            Opcodes.AND_LONG, Form12x.THE_ONE, true,
-            "and-long/2addr");
+            Opcodes.AND_LONG, Form12x.THE_ONE, true);
 
     public static final Dop OR_LONG_2ADDR =
         new Dop(Opcodes.OR_LONG_2ADDR, Opcodes.OR_LONG,
-            Opcodes.OR_LONG, Form12x.THE_ONE, true,
-            "or-long/2addr");
+            Opcodes.OR_LONG, Form12x.THE_ONE, true);
 
     public static final Dop XOR_LONG_2ADDR =
         new Dop(Opcodes.XOR_LONG_2ADDR, Opcodes.XOR_LONG,
-            Opcodes.XOR_LONG, Form12x.THE_ONE, true,
-            "xor-long/2addr");
+            Opcodes.XOR_LONG, Form12x.THE_ONE, true);
 
     public static final Dop SHL_LONG_2ADDR =
         new Dop(Opcodes.SHL_LONG_2ADDR, Opcodes.SHL_LONG,
-            Opcodes.SHL_LONG, Form12x.THE_ONE, true,
-            "shl-long/2addr");
+            Opcodes.SHL_LONG, Form12x.THE_ONE, true);
 
     public static final Dop SHR_LONG_2ADDR =
         new Dop(Opcodes.SHR_LONG_2ADDR, Opcodes.SHR_LONG,
-            Opcodes.SHR_LONG, Form12x.THE_ONE, true,
-            "shr-long/2addr");
+            Opcodes.SHR_LONG, Form12x.THE_ONE, true);
 
     public static final Dop USHR_LONG_2ADDR =
         new Dop(Opcodes.USHR_LONG_2ADDR, Opcodes.USHR_LONG,
-            Opcodes.USHR_LONG, Form12x.THE_ONE, true,
-            "ushr-long/2addr");
+            Opcodes.USHR_LONG, Form12x.THE_ONE, true);
 
     public static final Dop ADD_FLOAT_2ADDR =
         new Dop(Opcodes.ADD_FLOAT_2ADDR, Opcodes.ADD_FLOAT,
-            Opcodes.ADD_FLOAT, Form12x.THE_ONE, true,
-            "add-float/2addr");
+            Opcodes.ADD_FLOAT, Form12x.THE_ONE, true);
 
     public static final Dop SUB_FLOAT_2ADDR =
         new Dop(Opcodes.SUB_FLOAT_2ADDR, Opcodes.SUB_FLOAT,
-            Opcodes.SUB_FLOAT, Form12x.THE_ONE, true,
-            "sub-float/2addr");
+            Opcodes.SUB_FLOAT, Form12x.THE_ONE, true);
 
     public static final Dop MUL_FLOAT_2ADDR =
         new Dop(Opcodes.MUL_FLOAT_2ADDR, Opcodes.MUL_FLOAT,
-            Opcodes.MUL_FLOAT, Form12x.THE_ONE, true,
-            "mul-float/2addr");
+            Opcodes.MUL_FLOAT, Form12x.THE_ONE, true);
 
     public static final Dop DIV_FLOAT_2ADDR =
         new Dop(Opcodes.DIV_FLOAT_2ADDR, Opcodes.DIV_FLOAT,
-            Opcodes.DIV_FLOAT, Form12x.THE_ONE, true,
-            "div-float/2addr");
+            Opcodes.DIV_FLOAT, Form12x.THE_ONE, true);
 
     public static final Dop REM_FLOAT_2ADDR =
         new Dop(Opcodes.REM_FLOAT_2ADDR, Opcodes.REM_FLOAT,
-            Opcodes.REM_FLOAT, Form12x.THE_ONE, true,
-            "rem-float/2addr");
+            Opcodes.REM_FLOAT, Form12x.THE_ONE, true);
 
     public static final Dop ADD_DOUBLE_2ADDR =
         new Dop(Opcodes.ADD_DOUBLE_2ADDR, Opcodes.ADD_DOUBLE,
-            Opcodes.ADD_DOUBLE, Form12x.THE_ONE, true,
-            "add-double/2addr");
+            Opcodes.ADD_DOUBLE, Form12x.THE_ONE, true);
 
     public static final Dop SUB_DOUBLE_2ADDR =
         new Dop(Opcodes.SUB_DOUBLE_2ADDR, Opcodes.SUB_DOUBLE,
-            Opcodes.SUB_DOUBLE, Form12x.THE_ONE, true,
-            "sub-double/2addr");
+            Opcodes.SUB_DOUBLE, Form12x.THE_ONE, true);
 
     public static final Dop MUL_DOUBLE_2ADDR =
         new Dop(Opcodes.MUL_DOUBLE_2ADDR, Opcodes.MUL_DOUBLE,
-            Opcodes.MUL_DOUBLE, Form12x.THE_ONE, true,
-            "mul-double/2addr");
+            Opcodes.MUL_DOUBLE, Form12x.THE_ONE, true);
 
     public static final Dop DIV_DOUBLE_2ADDR =
         new Dop(Opcodes.DIV_DOUBLE_2ADDR, Opcodes.DIV_DOUBLE,
-            Opcodes.DIV_DOUBLE, Form12x.THE_ONE, true,
-            "div-double/2addr");
+            Opcodes.DIV_DOUBLE, Form12x.THE_ONE, true);
 
     public static final Dop REM_DOUBLE_2ADDR =
         new Dop(Opcodes.REM_DOUBLE_2ADDR, Opcodes.REM_DOUBLE,
-            Opcodes.REM_DOUBLE, Form12x.THE_ONE, true,
-            "rem-double/2addr");
+            Opcodes.REM_DOUBLE, Form12x.THE_ONE, true);
 
     public static final Dop ADD_INT_LIT16 =
         new Dop(Opcodes.ADD_INT_LIT16, Opcodes.ADD_INT,
-            Opcodes.NO_NEXT, Form22s.THE_ONE, true,
-            "add-int/lit16");
+            Opcodes.NO_NEXT, Form22s.THE_ONE, true);
 
     public static final Dop RSUB_INT =
         new Dop(Opcodes.RSUB_INT, Opcodes.RSUB_INT,
-            Opcodes.NO_NEXT, Form22s.THE_ONE, true,
-            "rsub-int");
+            Opcodes.NO_NEXT, Form22s.THE_ONE, true);
 
     public static final Dop MUL_INT_LIT16 =
         new Dop(Opcodes.MUL_INT_LIT16, Opcodes.MUL_INT,
-            Opcodes.NO_NEXT, Form22s.THE_ONE, true,
-            "mul-int/lit16");
+            Opcodes.NO_NEXT, Form22s.THE_ONE, true);
 
     public static final Dop DIV_INT_LIT16 =
         new Dop(Opcodes.DIV_INT_LIT16, Opcodes.DIV_INT,
-            Opcodes.NO_NEXT, Form22s.THE_ONE, true,
-            "div-int/lit16");
+            Opcodes.NO_NEXT, Form22s.THE_ONE, true);
 
     public static final Dop REM_INT_LIT16 =
         new Dop(Opcodes.REM_INT_LIT16, Opcodes.REM_INT,
-            Opcodes.NO_NEXT, Form22s.THE_ONE, true,
-            "rem-int/lit16");
+            Opcodes.NO_NEXT, Form22s.THE_ONE, true);
 
     public static final Dop AND_INT_LIT16 =
         new Dop(Opcodes.AND_INT_LIT16, Opcodes.AND_INT,
-            Opcodes.NO_NEXT, Form22s.THE_ONE, true,
-            "and-int/lit16");
+            Opcodes.NO_NEXT, Form22s.THE_ONE, true);
 
     public static final Dop OR_INT_LIT16 =
         new Dop(Opcodes.OR_INT_LIT16, Opcodes.OR_INT,
-            Opcodes.NO_NEXT, Form22s.THE_ONE, true,
-            "or-int/lit16");
+            Opcodes.NO_NEXT, Form22s.THE_ONE, true);
 
     public static final Dop XOR_INT_LIT16 =
         new Dop(Opcodes.XOR_INT_LIT16, Opcodes.XOR_INT,
-            Opcodes.NO_NEXT, Form22s.THE_ONE, true,
-            "xor-int/lit16");
+            Opcodes.NO_NEXT, Form22s.THE_ONE, true);
 
     public static final Dop ADD_INT_LIT8 =
         new Dop(Opcodes.ADD_INT_LIT8, Opcodes.ADD_INT,
-            Opcodes.ADD_INT_LIT16, Form22b.THE_ONE, true,
-            "add-int/lit8");
+            Opcodes.ADD_INT_LIT16, Form22b.THE_ONE, true);
 
     public static final Dop RSUB_INT_LIT8 =
         new Dop(Opcodes.RSUB_INT_LIT8, Opcodes.RSUB_INT,
-            Opcodes.RSUB_INT, Form22b.THE_ONE, true,
-            "rsub-int/lit8");
+            Opcodes.RSUB_INT, Form22b.THE_ONE, true);
 
     public static final Dop MUL_INT_LIT8 =
         new Dop(Opcodes.MUL_INT_LIT8, Opcodes.MUL_INT,
-            Opcodes.MUL_INT_LIT16, Form22b.THE_ONE, true,
-            "mul-int/lit8");
+            Opcodes.MUL_INT_LIT16, Form22b.THE_ONE, true);
 
     public static final Dop DIV_INT_LIT8 =
         new Dop(Opcodes.DIV_INT_LIT8, Opcodes.DIV_INT,
-            Opcodes.DIV_INT_LIT16, Form22b.THE_ONE, true,
-            "div-int/lit8");
+            Opcodes.DIV_INT_LIT16, Form22b.THE_ONE, true);
 
     public static final Dop REM_INT_LIT8 =
         new Dop(Opcodes.REM_INT_LIT8, Opcodes.REM_INT,
-            Opcodes.REM_INT_LIT16, Form22b.THE_ONE, true,
-            "rem-int/lit8");
+            Opcodes.REM_INT_LIT16, Form22b.THE_ONE, true);
 
     public static final Dop AND_INT_LIT8 =
         new Dop(Opcodes.AND_INT_LIT8, Opcodes.AND_INT,
-            Opcodes.AND_INT_LIT16, Form22b.THE_ONE, true,
-            "and-int/lit8");
+            Opcodes.AND_INT_LIT16, Form22b.THE_ONE, true);
 
     public static final Dop OR_INT_LIT8 =
         new Dop(Opcodes.OR_INT_LIT8, Opcodes.OR_INT,
-            Opcodes.OR_INT_LIT16, Form22b.THE_ONE, true,
-            "or-int/lit8");
+            Opcodes.OR_INT_LIT16, Form22b.THE_ONE, true);
 
     public static final Dop XOR_INT_LIT8 =
         new Dop(Opcodes.XOR_INT_LIT8, Opcodes.XOR_INT,
-            Opcodes.XOR_INT_LIT16, Form22b.THE_ONE, true,
-            "xor-int/lit8");
+            Opcodes.XOR_INT_LIT16, Form22b.THE_ONE, true);
 
     public static final Dop SHL_INT_LIT8 =
         new Dop(Opcodes.SHL_INT_LIT8, Opcodes.SHL_INT,
-            Opcodes.NO_NEXT, Form22b.THE_ONE, true,
-            "shl-int/lit8");
+            Opcodes.NO_NEXT, Form22b.THE_ONE, true);
 
     public static final Dop SHR_INT_LIT8 =
         new Dop(Opcodes.SHR_INT_LIT8, Opcodes.SHR_INT,
-            Opcodes.NO_NEXT, Form22b.THE_ONE, true,
-            "shr-int/lit8");
+            Opcodes.NO_NEXT, Form22b.THE_ONE, true);
 
     public static final Dop USHR_INT_LIT8 =
         new Dop(Opcodes.USHR_INT_LIT8, Opcodes.USHR_INT,
-            Opcodes.NO_NEXT, Form22b.THE_ONE, true,
-            "ushr-int/lit8");
+            Opcodes.NO_NEXT, Form22b.THE_ONE, true);
 
     public static final Dop CONST_CLASS_JUMBO =
         new Dop(Opcodes.CONST_CLASS_JUMBO, Opcodes.CONST_CLASS,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, true,
-            "const-class/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, true);
 
     public static final Dop CHECK_CAST_JUMBO =
         new Dop(Opcodes.CHECK_CAST_JUMBO, Opcodes.CHECK_CAST,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, false,
-            "check-cast/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, false);
 
     public static final Dop INSTANCE_OF_JUMBO =
         new Dop(Opcodes.INSTANCE_OF_JUMBO, Opcodes.INSTANCE_OF,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, true,
-            "instance-of/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, true);
 
     public static final Dop NEW_INSTANCE_JUMBO =
         new Dop(Opcodes.NEW_INSTANCE_JUMBO, Opcodes.NEW_INSTANCE,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, true,
-            "new-instance/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, true);
 
     public static final Dop NEW_ARRAY_JUMBO =
         new Dop(Opcodes.NEW_ARRAY_JUMBO, Opcodes.NEW_ARRAY,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, true,
-            "new-array/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, true);
 
     public static final Dop FILLED_NEW_ARRAY_JUMBO =
         new Dop(Opcodes.FILLED_NEW_ARRAY_JUMBO, Opcodes.FILLED_NEW_ARRAY,
-            Opcodes.NO_NEXT, Form5rc.THE_ONE, false,
-            "filled-new-array/jumbo");
+            Opcodes.NO_NEXT, Form5rc.THE_ONE, false);
 
     public static final Dop IGET_JUMBO =
         new Dop(Opcodes.IGET_JUMBO, Opcodes.IGET,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, true,
-            "iget/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, true);
 
     public static final Dop IGET_WIDE_JUMBO =
         new Dop(Opcodes.IGET_WIDE_JUMBO, Opcodes.IGET_WIDE,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, true,
-            "iget-wide/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, true);
 
     public static final Dop IGET_OBJECT_JUMBO =
         new Dop(Opcodes.IGET_OBJECT_JUMBO, Opcodes.IGET_OBJECT,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, true,
-            "iget-object/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, true);
 
     public static final Dop IGET_BOOLEAN_JUMBO =
         new Dop(Opcodes.IGET_BOOLEAN_JUMBO, Opcodes.IGET_BOOLEAN,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, true,
-            "iget-boolean/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, true);
 
     public static final Dop IGET_BYTE_JUMBO =
         new Dop(Opcodes.IGET_BYTE_JUMBO, Opcodes.IGET_BYTE,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, true,
-            "iget-byte/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, true);
 
     public static final Dop IGET_CHAR_JUMBO =
         new Dop(Opcodes.IGET_CHAR_JUMBO, Opcodes.IGET_CHAR,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, true,
-            "iget-char/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, true);
 
     public static final Dop IGET_SHORT_JUMBO =
         new Dop(Opcodes.IGET_SHORT_JUMBO, Opcodes.IGET_SHORT,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, true,
-            "iget-short/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, true);
 
     public static final Dop IPUT_JUMBO =
         new Dop(Opcodes.IPUT_JUMBO, Opcodes.IPUT,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, false,
-            "iput/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, false);
 
     public static final Dop IPUT_WIDE_JUMBO =
         new Dop(Opcodes.IPUT_WIDE_JUMBO, Opcodes.IPUT_WIDE,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, false,
-            "iput-wide/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, false);
 
     public static final Dop IPUT_OBJECT_JUMBO =
         new Dop(Opcodes.IPUT_OBJECT_JUMBO, Opcodes.IPUT_OBJECT,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, false,
-            "iput-object/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, false);
 
     public static final Dop IPUT_BOOLEAN_JUMBO =
         new Dop(Opcodes.IPUT_BOOLEAN_JUMBO, Opcodes.IPUT_BOOLEAN,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, false,
-            "iput-boolean/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, false);
 
     public static final Dop IPUT_BYTE_JUMBO =
         new Dop(Opcodes.IPUT_BYTE_JUMBO, Opcodes.IPUT_BYTE,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, false,
-            "iput-byte/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, false);
 
     public static final Dop IPUT_CHAR_JUMBO =
         new Dop(Opcodes.IPUT_CHAR_JUMBO, Opcodes.IPUT_CHAR,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, false,
-            "iput-char/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, false);
 
     public static final Dop IPUT_SHORT_JUMBO =
         new Dop(Opcodes.IPUT_SHORT_JUMBO, Opcodes.IPUT_SHORT,
-            Opcodes.NO_NEXT, Form52c.THE_ONE, false,
-            "iput-short/jumbo");
+            Opcodes.NO_NEXT, Form52c.THE_ONE, false);
 
     public static final Dop SGET_JUMBO =
         new Dop(Opcodes.SGET_JUMBO, Opcodes.SGET,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, true,
-            "sget/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, true);
 
     public static final Dop SGET_WIDE_JUMBO =
         new Dop(Opcodes.SGET_WIDE_JUMBO, Opcodes.SGET_WIDE,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, true,
-            "sget-wide/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, true);
 
     public static final Dop SGET_OBJECT_JUMBO =
         new Dop(Opcodes.SGET_OBJECT_JUMBO, Opcodes.SGET_OBJECT,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, true,
-            "sget-object/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, true);
 
     public static final Dop SGET_BOOLEAN_JUMBO =
         new Dop(Opcodes.SGET_BOOLEAN_JUMBO, Opcodes.SGET_BOOLEAN,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, true,
-            "sget-boolean/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, true);
 
     public static final Dop SGET_BYTE_JUMBO =
         new Dop(Opcodes.SGET_BYTE_JUMBO, Opcodes.SGET_BYTE,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, true,
-            "sget-byte/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, true);
 
     public static final Dop SGET_CHAR_JUMBO =
         new Dop(Opcodes.SGET_CHAR_JUMBO, Opcodes.SGET_CHAR,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, true,
-            "sget-char/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, true);
 
     public static final Dop SGET_SHORT_JUMBO =
         new Dop(Opcodes.SGET_SHORT_JUMBO, Opcodes.SGET_SHORT,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, true,
-            "sget-short/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, true);
 
     public static final Dop SPUT_JUMBO =
         new Dop(Opcodes.SPUT_JUMBO, Opcodes.SPUT,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, false,
-            "sput/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, false);
 
     public static final Dop SPUT_WIDE_JUMBO =
         new Dop(Opcodes.SPUT_WIDE_JUMBO, Opcodes.SPUT_WIDE,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, false,
-            "sput-wide/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, false);
 
     public static final Dop SPUT_OBJECT_JUMBO =
         new Dop(Opcodes.SPUT_OBJECT_JUMBO, Opcodes.SPUT_OBJECT,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, false,
-            "sput-object/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, false);
 
     public static final Dop SPUT_BOOLEAN_JUMBO =
         new Dop(Opcodes.SPUT_BOOLEAN_JUMBO, Opcodes.SPUT_BOOLEAN,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, false,
-            "sput-boolean/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, false);
 
     public static final Dop SPUT_BYTE_JUMBO =
         new Dop(Opcodes.SPUT_BYTE_JUMBO, Opcodes.SPUT_BYTE,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, false,
-            "sput-byte/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, false);
 
     public static final Dop SPUT_CHAR_JUMBO =
         new Dop(Opcodes.SPUT_CHAR_JUMBO, Opcodes.SPUT_CHAR,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, false,
-            "sput-char/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, false);
 
     public static final Dop SPUT_SHORT_JUMBO =
         new Dop(Opcodes.SPUT_SHORT_JUMBO, Opcodes.SPUT_SHORT,
-            Opcodes.NO_NEXT, Form41c.THE_ONE, false,
-            "sput-short/jumbo");
+            Opcodes.NO_NEXT, Form41c.THE_ONE, false);
 
     public static final Dop INVOKE_VIRTUAL_JUMBO =
         new Dop(Opcodes.INVOKE_VIRTUAL_JUMBO, Opcodes.INVOKE_VIRTUAL,
-            Opcodes.NO_NEXT, Form5rc.THE_ONE, false,
-            "invoke-virtual/jumbo");
+            Opcodes.NO_NEXT, Form5rc.THE_ONE, false);
 
     public static final Dop INVOKE_SUPER_JUMBO =
         new Dop(Opcodes.INVOKE_SUPER_JUMBO, Opcodes.INVOKE_SUPER,
-            Opcodes.NO_NEXT, Form5rc.THE_ONE, false,
-            "invoke-super/jumbo");
+            Opcodes.NO_NEXT, Form5rc.THE_ONE, false);
 
     public static final Dop INVOKE_DIRECT_JUMBO =
         new Dop(Opcodes.INVOKE_DIRECT_JUMBO, Opcodes.INVOKE_DIRECT,
-            Opcodes.NO_NEXT, Form5rc.THE_ONE, false,
-            "invoke-direct/jumbo");
+            Opcodes.NO_NEXT, Form5rc.THE_ONE, false);
 
     public static final Dop INVOKE_STATIC_JUMBO =
         new Dop(Opcodes.INVOKE_STATIC_JUMBO, Opcodes.INVOKE_STATIC,
-            Opcodes.NO_NEXT, Form5rc.THE_ONE, false,
-            "invoke-static/jumbo");
+            Opcodes.NO_NEXT, Form5rc.THE_ONE, false);
 
     public static final Dop INVOKE_INTERFACE_JUMBO =
         new Dop(Opcodes.INVOKE_INTERFACE_JUMBO, Opcodes.INVOKE_INTERFACE,
-            Opcodes.NO_NEXT, Form5rc.THE_ONE, false,
-            "invoke-interface/jumbo");
+            Opcodes.NO_NEXT, Form5rc.THE_ONE, false);
 
     // END(dops)
 
diff --git a/dx/src/com/android/dx/io/CodeReader.java b/dx/src/com/android/dx/io/CodeReader.java
index 21bec7e..e6ea717 100644
--- a/dx/src/com/android/dx/io/CodeReader.java
+++ b/dx/src/com/android/dx/io/CodeReader.java
@@ -382,7 +382,7 @@
             Instruction instruction = instructions[di.getOpcode()];
             Visitor visitor = instruction.visitor;
             if (visitor != null) {
-                visitor.visit(instruction, decodedInstructions, di);
+                visitor.visit(decodedInstructions, di);
             }
         }
     }
@@ -422,8 +422,7 @@
     }
 
     public interface Visitor {
-        void visit(Instruction instruction, DecodedInstruction[] all,
-                DecodedInstruction one);
+        void visit(DecodedInstruction[] all, DecodedInstruction one);
     }
 
     private static class UnusedInstruction extends Instruction {
diff --git a/dx/src/com/android/dx/io/OpcodeInfo.java b/dx/src/com/android/dx/io/OpcodeInfo.java
index 4507d9b..d645207 100644
--- a/dx/src/com/android/dx/io/OpcodeInfo.java
+++ b/dx/src/com/android/dx/io/OpcodeInfo.java
@@ -30,1047 +30,1057 @@
     /** non-null; array containing all the information */
     private static final Info[] INFO;
 
+    /**
+     * pseudo-opcode used for nonstandard formatted "instructions"
+     * (which are mostly not actually instructions, though they do
+     * appear in instruction lists). TODO: Retire the usage of this
+     * constant.
+     */
+    public static final Info SPECIAL_FORMAT =
+        new Info(Opcodes.SPECIAL_FORMAT, "<special>",
+                InstructionCodec.FORMAT_00X, null);
+
     // TODO: These payload opcodes should be generated by opcode-gen.
 
     public static final Info PACKED_SWITCH_PAYLOAD =
-        new Info(Opcodes.PACKED_SWITCH_PAYLOAD,
+        new Info(Opcodes.PACKED_SWITCH_PAYLOAD, "packed-switch-payload",
                 InstructionCodec.FORMAT_PACKED_SWITCH_PAYLOAD, null);
 
     public static final Info SPARSE_SWITCH_PAYLOAD =
-        new Info(Opcodes.SPARSE_SWITCH_PAYLOAD,
+        new Info(Opcodes.SPARSE_SWITCH_PAYLOAD, "sparse-switch-payload",
                 InstructionCodec.FORMAT_SPARSE_SWITCH_PAYLOAD, null);
 
     public static final Info FILL_ARRAY_DATA_PAYLOAD =
-        new Info(Opcodes.FILL_ARRAY_DATA_PAYLOAD,
+        new Info(Opcodes.FILL_ARRAY_DATA_PAYLOAD, "fill-array-data-payload",
                 InstructionCodec.FORMAT_FILL_ARRAY_DATA_PAYLOAD, null);
 
     // BEGIN(opcode-info-defs); GENERATED AUTOMATICALLY BY opcode-gen
     public static final Info NOP =
-        new Info(Opcodes.NOP,
+        new Info(Opcodes.NOP, "nop",
             InstructionCodec.FORMAT_10X, null);
 
     public static final Info MOVE =
-        new Info(Opcodes.MOVE,
+        new Info(Opcodes.MOVE, "move",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info MOVE_FROM16 =
-        new Info(Opcodes.MOVE_FROM16,
+        new Info(Opcodes.MOVE_FROM16, "move/from16",
             InstructionCodec.FORMAT_22X, null);
 
     public static final Info MOVE_16 =
-        new Info(Opcodes.MOVE_16,
+        new Info(Opcodes.MOVE_16, "move/16",
             InstructionCodec.FORMAT_32X, null);
 
     public static final Info MOVE_WIDE =
-        new Info(Opcodes.MOVE_WIDE,
+        new Info(Opcodes.MOVE_WIDE, "move-wide",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info MOVE_WIDE_FROM16 =
-        new Info(Opcodes.MOVE_WIDE_FROM16,
+        new Info(Opcodes.MOVE_WIDE_FROM16, "move-wide/from16",
             InstructionCodec.FORMAT_22X, null);
 
     public static final Info MOVE_WIDE_16 =
-        new Info(Opcodes.MOVE_WIDE_16,
+        new Info(Opcodes.MOVE_WIDE_16, "move-wide/16",
             InstructionCodec.FORMAT_32X, null);
 
     public static final Info MOVE_OBJECT =
-        new Info(Opcodes.MOVE_OBJECT,
+        new Info(Opcodes.MOVE_OBJECT, "move-object",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info MOVE_OBJECT_FROM16 =
-        new Info(Opcodes.MOVE_OBJECT_FROM16,
+        new Info(Opcodes.MOVE_OBJECT_FROM16, "move-object/from16",
             InstructionCodec.FORMAT_22X, null);
 
     public static final Info MOVE_OBJECT_16 =
-        new Info(Opcodes.MOVE_OBJECT_16,
+        new Info(Opcodes.MOVE_OBJECT_16, "move-object/16",
             InstructionCodec.FORMAT_32X, null);
 
     public static final Info MOVE_RESULT =
-        new Info(Opcodes.MOVE_RESULT,
+        new Info(Opcodes.MOVE_RESULT, "move-result",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info MOVE_RESULT_WIDE =
-        new Info(Opcodes.MOVE_RESULT_WIDE,
+        new Info(Opcodes.MOVE_RESULT_WIDE, "move-result-wide",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info MOVE_RESULT_OBJECT =
-        new Info(Opcodes.MOVE_RESULT_OBJECT,
+        new Info(Opcodes.MOVE_RESULT_OBJECT, "move-result-object",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info MOVE_EXCEPTION =
-        new Info(Opcodes.MOVE_EXCEPTION,
+        new Info(Opcodes.MOVE_EXCEPTION, "move-exception",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info RETURN_VOID =
-        new Info(Opcodes.RETURN_VOID,
+        new Info(Opcodes.RETURN_VOID, "return-void",
             InstructionCodec.FORMAT_10X, null);
 
     public static final Info RETURN =
-        new Info(Opcodes.RETURN,
+        new Info(Opcodes.RETURN, "return",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info RETURN_WIDE =
-        new Info(Opcodes.RETURN_WIDE,
+        new Info(Opcodes.RETURN_WIDE, "return-wide",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info RETURN_OBJECT =
-        new Info(Opcodes.RETURN_OBJECT,
+        new Info(Opcodes.RETURN_OBJECT, "return-object",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info CONST_4 =
-        new Info(Opcodes.CONST_4,
+        new Info(Opcodes.CONST_4, "const/4",
             InstructionCodec.FORMAT_11N, null);
 
     public static final Info CONST_16 =
-        new Info(Opcodes.CONST_16,
+        new Info(Opcodes.CONST_16, "const/16",
             InstructionCodec.FORMAT_21S, null);
 
     public static final Info CONST =
-        new Info(Opcodes.CONST,
+        new Info(Opcodes.CONST, "const",
             InstructionCodec.FORMAT_31I, null);
 
     public static final Info CONST_HIGH16 =
-        new Info(Opcodes.CONST_HIGH16,
+        new Info(Opcodes.CONST_HIGH16, "const/high16",
             InstructionCodec.FORMAT_21H, null);
 
     public static final Info CONST_WIDE_16 =
-        new Info(Opcodes.CONST_WIDE_16,
+        new Info(Opcodes.CONST_WIDE_16, "const-wide/16",
             InstructionCodec.FORMAT_21S, null);
 
     public static final Info CONST_WIDE_32 =
-        new Info(Opcodes.CONST_WIDE_32,
+        new Info(Opcodes.CONST_WIDE_32, "const-wide/32",
             InstructionCodec.FORMAT_31I, null);
 
     public static final Info CONST_WIDE =
-        new Info(Opcodes.CONST_WIDE,
+        new Info(Opcodes.CONST_WIDE, "const-wide",
             InstructionCodec.FORMAT_51L, null);
 
     public static final Info CONST_WIDE_HIGH16 =
-        new Info(Opcodes.CONST_WIDE_HIGH16,
+        new Info(Opcodes.CONST_WIDE_HIGH16, "const-wide/high16",
             InstructionCodec.FORMAT_21H, null);
 
     public static final Info CONST_STRING =
-        new Info(Opcodes.CONST_STRING,
+        new Info(Opcodes.CONST_STRING, "const-string",
             InstructionCodec.FORMAT_21C, IndexType.STRING_REF);
 
     public static final Info CONST_STRING_JUMBO =
-        new Info(Opcodes.CONST_STRING_JUMBO,
+        new Info(Opcodes.CONST_STRING_JUMBO, "const-string/jumbo",
             InstructionCodec.FORMAT_31C, IndexType.STRING_REF);
 
     public static final Info CONST_CLASS =
-        new Info(Opcodes.CONST_CLASS,
+        new Info(Opcodes.CONST_CLASS, "const-class",
             InstructionCodec.FORMAT_21C, IndexType.TYPE_REF);
 
     public static final Info MONITOR_ENTER =
-        new Info(Opcodes.MONITOR_ENTER,
+        new Info(Opcodes.MONITOR_ENTER, "monitor-enter",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info MONITOR_EXIT =
-        new Info(Opcodes.MONITOR_EXIT,
+        new Info(Opcodes.MONITOR_EXIT, "monitor-exit",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info CHECK_CAST =
-        new Info(Opcodes.CHECK_CAST,
+        new Info(Opcodes.CHECK_CAST, "check-cast",
             InstructionCodec.FORMAT_21C, IndexType.TYPE_REF);
 
     public static final Info INSTANCE_OF =
-        new Info(Opcodes.INSTANCE_OF,
+        new Info(Opcodes.INSTANCE_OF, "instance-of",
             InstructionCodec.FORMAT_22C, IndexType.TYPE_REF);
 
     public static final Info ARRAY_LENGTH =
-        new Info(Opcodes.ARRAY_LENGTH,
+        new Info(Opcodes.ARRAY_LENGTH, "array-length",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info NEW_INSTANCE =
-        new Info(Opcodes.NEW_INSTANCE,
+        new Info(Opcodes.NEW_INSTANCE, "new-instance",
             InstructionCodec.FORMAT_21C, IndexType.TYPE_REF);
 
     public static final Info NEW_ARRAY =
-        new Info(Opcodes.NEW_ARRAY,
+        new Info(Opcodes.NEW_ARRAY, "new-array",
             InstructionCodec.FORMAT_22C, IndexType.TYPE_REF);
 
     public static final Info FILLED_NEW_ARRAY =
-        new Info(Opcodes.FILLED_NEW_ARRAY,
+        new Info(Opcodes.FILLED_NEW_ARRAY, "filled-new-array",
             InstructionCodec.FORMAT_35C, IndexType.TYPE_REF);
 
     public static final Info FILLED_NEW_ARRAY_RANGE =
-        new Info(Opcodes.FILLED_NEW_ARRAY_RANGE,
+        new Info(Opcodes.FILLED_NEW_ARRAY_RANGE, "filled-new-array/range",
             InstructionCodec.FORMAT_3RC, IndexType.TYPE_REF);
 
     public static final Info FILL_ARRAY_DATA =
-        new Info(Opcodes.FILL_ARRAY_DATA,
+        new Info(Opcodes.FILL_ARRAY_DATA, "fill-array-data",
             InstructionCodec.FORMAT_31T, null);
 
     public static final Info THROW =
-        new Info(Opcodes.THROW,
+        new Info(Opcodes.THROW, "throw",
             InstructionCodec.FORMAT_11X, null);
 
     public static final Info GOTO =
-        new Info(Opcodes.GOTO,
+        new Info(Opcodes.GOTO, "goto",
             InstructionCodec.FORMAT_10T, null);
 
     public static final Info GOTO_16 =
-        new Info(Opcodes.GOTO_16,
+        new Info(Opcodes.GOTO_16, "goto/16",
             InstructionCodec.FORMAT_20T, null);
 
     public static final Info GOTO_32 =
-        new Info(Opcodes.GOTO_32,
+        new Info(Opcodes.GOTO_32, "goto/32",
             InstructionCodec.FORMAT_30T, null);
 
     public static final Info PACKED_SWITCH =
-        new Info(Opcodes.PACKED_SWITCH,
+        new Info(Opcodes.PACKED_SWITCH, "packed-switch",
             InstructionCodec.FORMAT_31T, null);
 
     public static final Info SPARSE_SWITCH =
-        new Info(Opcodes.SPARSE_SWITCH,
+        new Info(Opcodes.SPARSE_SWITCH, "sparse-switch",
             InstructionCodec.FORMAT_31T, null);
 
     public static final Info CMPL_FLOAT =
-        new Info(Opcodes.CMPL_FLOAT,
+        new Info(Opcodes.CMPL_FLOAT, "cmpl-float",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info CMPG_FLOAT =
-        new Info(Opcodes.CMPG_FLOAT,
+        new Info(Opcodes.CMPG_FLOAT, "cmpg-float",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info CMPL_DOUBLE =
-        new Info(Opcodes.CMPL_DOUBLE,
+        new Info(Opcodes.CMPL_DOUBLE, "cmpl-double",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info CMPG_DOUBLE =
-        new Info(Opcodes.CMPG_DOUBLE,
+        new Info(Opcodes.CMPG_DOUBLE, "cmpg-double",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info CMP_LONG =
-        new Info(Opcodes.CMP_LONG,
+        new Info(Opcodes.CMP_LONG, "cmp-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info IF_EQ =
-        new Info(Opcodes.IF_EQ,
+        new Info(Opcodes.IF_EQ, "if-eq",
             InstructionCodec.FORMAT_22T, null);
 
     public static final Info IF_NE =
-        new Info(Opcodes.IF_NE,
+        new Info(Opcodes.IF_NE, "if-ne",
             InstructionCodec.FORMAT_22T, null);
 
     public static final Info IF_LT =
-        new Info(Opcodes.IF_LT,
+        new Info(Opcodes.IF_LT, "if-lt",
             InstructionCodec.FORMAT_22T, null);
 
     public static final Info IF_GE =
-        new Info(Opcodes.IF_GE,
+        new Info(Opcodes.IF_GE, "if-ge",
             InstructionCodec.FORMAT_22T, null);
 
     public static final Info IF_GT =
-        new Info(Opcodes.IF_GT,
+        new Info(Opcodes.IF_GT, "if-gt",
             InstructionCodec.FORMAT_22T, null);
 
     public static final Info IF_LE =
-        new Info(Opcodes.IF_LE,
+        new Info(Opcodes.IF_LE, "if-le",
             InstructionCodec.FORMAT_22T, null);
 
     public static final Info IF_EQZ =
-        new Info(Opcodes.IF_EQZ,
+        new Info(Opcodes.IF_EQZ, "if-eqz",
             InstructionCodec.FORMAT_21T, null);
 
     public static final Info IF_NEZ =
-        new Info(Opcodes.IF_NEZ,
+        new Info(Opcodes.IF_NEZ, "if-nez",
             InstructionCodec.FORMAT_21T, null);
 
     public static final Info IF_LTZ =
-        new Info(Opcodes.IF_LTZ,
+        new Info(Opcodes.IF_LTZ, "if-ltz",
             InstructionCodec.FORMAT_21T, null);
 
     public static final Info IF_GEZ =
-        new Info(Opcodes.IF_GEZ,
+        new Info(Opcodes.IF_GEZ, "if-gez",
             InstructionCodec.FORMAT_21T, null);
 
     public static final Info IF_GTZ =
-        new Info(Opcodes.IF_GTZ,
+        new Info(Opcodes.IF_GTZ, "if-gtz",
             InstructionCodec.FORMAT_21T, null);
 
     public static final Info IF_LEZ =
-        new Info(Opcodes.IF_LEZ,
+        new Info(Opcodes.IF_LEZ, "if-lez",
             InstructionCodec.FORMAT_21T, null);
 
     public static final Info AGET =
-        new Info(Opcodes.AGET,
+        new Info(Opcodes.AGET, "aget",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info AGET_WIDE =
-        new Info(Opcodes.AGET_WIDE,
+        new Info(Opcodes.AGET_WIDE, "aget-wide",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info AGET_OBJECT =
-        new Info(Opcodes.AGET_OBJECT,
+        new Info(Opcodes.AGET_OBJECT, "aget-object",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info AGET_BOOLEAN =
-        new Info(Opcodes.AGET_BOOLEAN,
+        new Info(Opcodes.AGET_BOOLEAN, "aget-boolean",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info AGET_BYTE =
-        new Info(Opcodes.AGET_BYTE,
+        new Info(Opcodes.AGET_BYTE, "aget-byte",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info AGET_CHAR =
-        new Info(Opcodes.AGET_CHAR,
+        new Info(Opcodes.AGET_CHAR, "aget-char",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info AGET_SHORT =
-        new Info(Opcodes.AGET_SHORT,
+        new Info(Opcodes.AGET_SHORT, "aget-short",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info APUT =
-        new Info(Opcodes.APUT,
+        new Info(Opcodes.APUT, "aput",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info APUT_WIDE =
-        new Info(Opcodes.APUT_WIDE,
+        new Info(Opcodes.APUT_WIDE, "aput-wide",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info APUT_OBJECT =
-        new Info(Opcodes.APUT_OBJECT,
+        new Info(Opcodes.APUT_OBJECT, "aput-object",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info APUT_BOOLEAN =
-        new Info(Opcodes.APUT_BOOLEAN,
+        new Info(Opcodes.APUT_BOOLEAN, "aput-boolean",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info APUT_BYTE =
-        new Info(Opcodes.APUT_BYTE,
+        new Info(Opcodes.APUT_BYTE, "aput-byte",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info APUT_CHAR =
-        new Info(Opcodes.APUT_CHAR,
+        new Info(Opcodes.APUT_CHAR, "aput-char",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info APUT_SHORT =
-        new Info(Opcodes.APUT_SHORT,
+        new Info(Opcodes.APUT_SHORT, "aput-short",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info IGET =
-        new Info(Opcodes.IGET,
+        new Info(Opcodes.IGET, "iget",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IGET_WIDE =
-        new Info(Opcodes.IGET_WIDE,
+        new Info(Opcodes.IGET_WIDE, "iget-wide",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IGET_OBJECT =
-        new Info(Opcodes.IGET_OBJECT,
+        new Info(Opcodes.IGET_OBJECT, "iget-object",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IGET_BOOLEAN =
-        new Info(Opcodes.IGET_BOOLEAN,
+        new Info(Opcodes.IGET_BOOLEAN, "iget-boolean",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IGET_BYTE =
-        new Info(Opcodes.IGET_BYTE,
+        new Info(Opcodes.IGET_BYTE, "iget-byte",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IGET_CHAR =
-        new Info(Opcodes.IGET_CHAR,
+        new Info(Opcodes.IGET_CHAR, "iget-char",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IGET_SHORT =
-        new Info(Opcodes.IGET_SHORT,
+        new Info(Opcodes.IGET_SHORT, "iget-short",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IPUT =
-        new Info(Opcodes.IPUT,
+        new Info(Opcodes.IPUT, "iput",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IPUT_WIDE =
-        new Info(Opcodes.IPUT_WIDE,
+        new Info(Opcodes.IPUT_WIDE, "iput-wide",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IPUT_OBJECT =
-        new Info(Opcodes.IPUT_OBJECT,
+        new Info(Opcodes.IPUT_OBJECT, "iput-object",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IPUT_BOOLEAN =
-        new Info(Opcodes.IPUT_BOOLEAN,
+        new Info(Opcodes.IPUT_BOOLEAN, "iput-boolean",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IPUT_BYTE =
-        new Info(Opcodes.IPUT_BYTE,
+        new Info(Opcodes.IPUT_BYTE, "iput-byte",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IPUT_CHAR =
-        new Info(Opcodes.IPUT_CHAR,
+        new Info(Opcodes.IPUT_CHAR, "iput-char",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info IPUT_SHORT =
-        new Info(Opcodes.IPUT_SHORT,
+        new Info(Opcodes.IPUT_SHORT, "iput-short",
             InstructionCodec.FORMAT_22C, IndexType.FIELD_REF);
 
     public static final Info SGET =
-        new Info(Opcodes.SGET,
+        new Info(Opcodes.SGET, "sget",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SGET_WIDE =
-        new Info(Opcodes.SGET_WIDE,
+        new Info(Opcodes.SGET_WIDE, "sget-wide",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SGET_OBJECT =
-        new Info(Opcodes.SGET_OBJECT,
+        new Info(Opcodes.SGET_OBJECT, "sget-object",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SGET_BOOLEAN =
-        new Info(Opcodes.SGET_BOOLEAN,
+        new Info(Opcodes.SGET_BOOLEAN, "sget-boolean",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SGET_BYTE =
-        new Info(Opcodes.SGET_BYTE,
+        new Info(Opcodes.SGET_BYTE, "sget-byte",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SGET_CHAR =
-        new Info(Opcodes.SGET_CHAR,
+        new Info(Opcodes.SGET_CHAR, "sget-char",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SGET_SHORT =
-        new Info(Opcodes.SGET_SHORT,
+        new Info(Opcodes.SGET_SHORT, "sget-short",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SPUT =
-        new Info(Opcodes.SPUT,
+        new Info(Opcodes.SPUT, "sput",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SPUT_WIDE =
-        new Info(Opcodes.SPUT_WIDE,
+        new Info(Opcodes.SPUT_WIDE, "sput-wide",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SPUT_OBJECT =
-        new Info(Opcodes.SPUT_OBJECT,
+        new Info(Opcodes.SPUT_OBJECT, "sput-object",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SPUT_BOOLEAN =
-        new Info(Opcodes.SPUT_BOOLEAN,
+        new Info(Opcodes.SPUT_BOOLEAN, "sput-boolean",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SPUT_BYTE =
-        new Info(Opcodes.SPUT_BYTE,
+        new Info(Opcodes.SPUT_BYTE, "sput-byte",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SPUT_CHAR =
-        new Info(Opcodes.SPUT_CHAR,
+        new Info(Opcodes.SPUT_CHAR, "sput-char",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info SPUT_SHORT =
-        new Info(Opcodes.SPUT_SHORT,
+        new Info(Opcodes.SPUT_SHORT, "sput-short",
             InstructionCodec.FORMAT_21C, IndexType.FIELD_REF);
 
     public static final Info INVOKE_VIRTUAL =
-        new Info(Opcodes.INVOKE_VIRTUAL,
+        new Info(Opcodes.INVOKE_VIRTUAL, "invoke-virtual",
             InstructionCodec.FORMAT_35C, IndexType.METHOD_REF);
 
     public static final Info INVOKE_SUPER =
-        new Info(Opcodes.INVOKE_SUPER,
+        new Info(Opcodes.INVOKE_SUPER, "invoke-super",
             InstructionCodec.FORMAT_35C, IndexType.METHOD_REF);
 
     public static final Info INVOKE_DIRECT =
-        new Info(Opcodes.INVOKE_DIRECT,
+        new Info(Opcodes.INVOKE_DIRECT, "invoke-direct",
             InstructionCodec.FORMAT_35C, IndexType.METHOD_REF);
 
     public static final Info INVOKE_STATIC =
-        new Info(Opcodes.INVOKE_STATIC,
+        new Info(Opcodes.INVOKE_STATIC, "invoke-static",
             InstructionCodec.FORMAT_35C, IndexType.METHOD_REF);
 
     public static final Info INVOKE_INTERFACE =
-        new Info(Opcodes.INVOKE_INTERFACE,
+        new Info(Opcodes.INVOKE_INTERFACE, "invoke-interface",
             InstructionCodec.FORMAT_35C, IndexType.METHOD_REF);
 
     public static final Info INVOKE_VIRTUAL_RANGE =
-        new Info(Opcodes.INVOKE_VIRTUAL_RANGE,
+        new Info(Opcodes.INVOKE_VIRTUAL_RANGE, "invoke-virtual/range",
             InstructionCodec.FORMAT_3RC, IndexType.METHOD_REF);
 
     public static final Info INVOKE_SUPER_RANGE =
-        new Info(Opcodes.INVOKE_SUPER_RANGE,
+        new Info(Opcodes.INVOKE_SUPER_RANGE, "invoke-super/range",
             InstructionCodec.FORMAT_3RC, IndexType.METHOD_REF);
 
     public static final Info INVOKE_DIRECT_RANGE =
-        new Info(Opcodes.INVOKE_DIRECT_RANGE,
+        new Info(Opcodes.INVOKE_DIRECT_RANGE, "invoke-direct/range",
             InstructionCodec.FORMAT_3RC, IndexType.METHOD_REF);
 
     public static final Info INVOKE_STATIC_RANGE =
-        new Info(Opcodes.INVOKE_STATIC_RANGE,
+        new Info(Opcodes.INVOKE_STATIC_RANGE, "invoke-static/range",
             InstructionCodec.FORMAT_3RC, IndexType.METHOD_REF);
 
     public static final Info INVOKE_INTERFACE_RANGE =
-        new Info(Opcodes.INVOKE_INTERFACE_RANGE,
+        new Info(Opcodes.INVOKE_INTERFACE_RANGE, "invoke-interface/range",
             InstructionCodec.FORMAT_3RC, IndexType.METHOD_REF);
 
     public static final Info NEG_INT =
-        new Info(Opcodes.NEG_INT,
+        new Info(Opcodes.NEG_INT, "neg-int",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info NOT_INT =
-        new Info(Opcodes.NOT_INT,
+        new Info(Opcodes.NOT_INT, "not-int",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info NEG_LONG =
-        new Info(Opcodes.NEG_LONG,
+        new Info(Opcodes.NEG_LONG, "neg-long",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info NOT_LONG =
-        new Info(Opcodes.NOT_LONG,
+        new Info(Opcodes.NOT_LONG, "not-long",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info NEG_FLOAT =
-        new Info(Opcodes.NEG_FLOAT,
+        new Info(Opcodes.NEG_FLOAT, "neg-float",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info NEG_DOUBLE =
-        new Info(Opcodes.NEG_DOUBLE,
+        new Info(Opcodes.NEG_DOUBLE, "neg-double",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info INT_TO_LONG =
-        new Info(Opcodes.INT_TO_LONG,
+        new Info(Opcodes.INT_TO_LONG, "int-to-long",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info INT_TO_FLOAT =
-        new Info(Opcodes.INT_TO_FLOAT,
+        new Info(Opcodes.INT_TO_FLOAT, "int-to-float",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info INT_TO_DOUBLE =
-        new Info(Opcodes.INT_TO_DOUBLE,
+        new Info(Opcodes.INT_TO_DOUBLE, "int-to-double",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info LONG_TO_INT =
-        new Info(Opcodes.LONG_TO_INT,
+        new Info(Opcodes.LONG_TO_INT, "long-to-int",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info LONG_TO_FLOAT =
-        new Info(Opcodes.LONG_TO_FLOAT,
+        new Info(Opcodes.LONG_TO_FLOAT, "long-to-float",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info LONG_TO_DOUBLE =
-        new Info(Opcodes.LONG_TO_DOUBLE,
+        new Info(Opcodes.LONG_TO_DOUBLE, "long-to-double",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info FLOAT_TO_INT =
-        new Info(Opcodes.FLOAT_TO_INT,
+        new Info(Opcodes.FLOAT_TO_INT, "float-to-int",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info FLOAT_TO_LONG =
-        new Info(Opcodes.FLOAT_TO_LONG,
+        new Info(Opcodes.FLOAT_TO_LONG, "float-to-long",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info FLOAT_TO_DOUBLE =
-        new Info(Opcodes.FLOAT_TO_DOUBLE,
+        new Info(Opcodes.FLOAT_TO_DOUBLE, "float-to-double",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info DOUBLE_TO_INT =
-        new Info(Opcodes.DOUBLE_TO_INT,
+        new Info(Opcodes.DOUBLE_TO_INT, "double-to-int",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info DOUBLE_TO_LONG =
-        new Info(Opcodes.DOUBLE_TO_LONG,
+        new Info(Opcodes.DOUBLE_TO_LONG, "double-to-long",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info DOUBLE_TO_FLOAT =
-        new Info(Opcodes.DOUBLE_TO_FLOAT,
+        new Info(Opcodes.DOUBLE_TO_FLOAT, "double-to-float",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info INT_TO_BYTE =
-        new Info(Opcodes.INT_TO_BYTE,
+        new Info(Opcodes.INT_TO_BYTE, "int-to-byte",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info INT_TO_CHAR =
-        new Info(Opcodes.INT_TO_CHAR,
+        new Info(Opcodes.INT_TO_CHAR, "int-to-char",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info INT_TO_SHORT =
-        new Info(Opcodes.INT_TO_SHORT,
+        new Info(Opcodes.INT_TO_SHORT, "int-to-short",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info ADD_INT =
-        new Info(Opcodes.ADD_INT,
+        new Info(Opcodes.ADD_INT, "add-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info SUB_INT =
-        new Info(Opcodes.SUB_INT,
+        new Info(Opcodes.SUB_INT, "sub-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info MUL_INT =
-        new Info(Opcodes.MUL_INT,
+        new Info(Opcodes.MUL_INT, "mul-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info DIV_INT =
-        new Info(Opcodes.DIV_INT,
+        new Info(Opcodes.DIV_INT, "div-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info REM_INT =
-        new Info(Opcodes.REM_INT,
+        new Info(Opcodes.REM_INT, "rem-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info AND_INT =
-        new Info(Opcodes.AND_INT,
+        new Info(Opcodes.AND_INT, "and-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info OR_INT =
-        new Info(Opcodes.OR_INT,
+        new Info(Opcodes.OR_INT, "or-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info XOR_INT =
-        new Info(Opcodes.XOR_INT,
+        new Info(Opcodes.XOR_INT, "xor-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info SHL_INT =
-        new Info(Opcodes.SHL_INT,
+        new Info(Opcodes.SHL_INT, "shl-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info SHR_INT =
-        new Info(Opcodes.SHR_INT,
+        new Info(Opcodes.SHR_INT, "shr-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info USHR_INT =
-        new Info(Opcodes.USHR_INT,
+        new Info(Opcodes.USHR_INT, "ushr-int",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info ADD_LONG =
-        new Info(Opcodes.ADD_LONG,
+        new Info(Opcodes.ADD_LONG, "add-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info SUB_LONG =
-        new Info(Opcodes.SUB_LONG,
+        new Info(Opcodes.SUB_LONG, "sub-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info MUL_LONG =
-        new Info(Opcodes.MUL_LONG,
+        new Info(Opcodes.MUL_LONG, "mul-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info DIV_LONG =
-        new Info(Opcodes.DIV_LONG,
+        new Info(Opcodes.DIV_LONG, "div-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info REM_LONG =
-        new Info(Opcodes.REM_LONG,
+        new Info(Opcodes.REM_LONG, "rem-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info AND_LONG =
-        new Info(Opcodes.AND_LONG,
+        new Info(Opcodes.AND_LONG, "and-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info OR_LONG =
-        new Info(Opcodes.OR_LONG,
+        new Info(Opcodes.OR_LONG, "or-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info XOR_LONG =
-        new Info(Opcodes.XOR_LONG,
+        new Info(Opcodes.XOR_LONG, "xor-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info SHL_LONG =
-        new Info(Opcodes.SHL_LONG,
+        new Info(Opcodes.SHL_LONG, "shl-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info SHR_LONG =
-        new Info(Opcodes.SHR_LONG,
+        new Info(Opcodes.SHR_LONG, "shr-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info USHR_LONG =
-        new Info(Opcodes.USHR_LONG,
+        new Info(Opcodes.USHR_LONG, "ushr-long",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info ADD_FLOAT =
-        new Info(Opcodes.ADD_FLOAT,
+        new Info(Opcodes.ADD_FLOAT, "add-float",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info SUB_FLOAT =
-        new Info(Opcodes.SUB_FLOAT,
+        new Info(Opcodes.SUB_FLOAT, "sub-float",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info MUL_FLOAT =
-        new Info(Opcodes.MUL_FLOAT,
+        new Info(Opcodes.MUL_FLOAT, "mul-float",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info DIV_FLOAT =
-        new Info(Opcodes.DIV_FLOAT,
+        new Info(Opcodes.DIV_FLOAT, "div-float",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info REM_FLOAT =
-        new Info(Opcodes.REM_FLOAT,
+        new Info(Opcodes.REM_FLOAT, "rem-float",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info ADD_DOUBLE =
-        new Info(Opcodes.ADD_DOUBLE,
+        new Info(Opcodes.ADD_DOUBLE, "add-double",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info SUB_DOUBLE =
-        new Info(Opcodes.SUB_DOUBLE,
+        new Info(Opcodes.SUB_DOUBLE, "sub-double",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info MUL_DOUBLE =
-        new Info(Opcodes.MUL_DOUBLE,
+        new Info(Opcodes.MUL_DOUBLE, "mul-double",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info DIV_DOUBLE =
-        new Info(Opcodes.DIV_DOUBLE,
+        new Info(Opcodes.DIV_DOUBLE, "div-double",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info REM_DOUBLE =
-        new Info(Opcodes.REM_DOUBLE,
+        new Info(Opcodes.REM_DOUBLE, "rem-double",
             InstructionCodec.FORMAT_23X, null);
 
     public static final Info ADD_INT_2ADDR =
-        new Info(Opcodes.ADD_INT_2ADDR,
+        new Info(Opcodes.ADD_INT_2ADDR, "add-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info SUB_INT_2ADDR =
-        new Info(Opcodes.SUB_INT_2ADDR,
+        new Info(Opcodes.SUB_INT_2ADDR, "sub-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info MUL_INT_2ADDR =
-        new Info(Opcodes.MUL_INT_2ADDR,
+        new Info(Opcodes.MUL_INT_2ADDR, "mul-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info DIV_INT_2ADDR =
-        new Info(Opcodes.DIV_INT_2ADDR,
+        new Info(Opcodes.DIV_INT_2ADDR, "div-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info REM_INT_2ADDR =
-        new Info(Opcodes.REM_INT_2ADDR,
+        new Info(Opcodes.REM_INT_2ADDR, "rem-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info AND_INT_2ADDR =
-        new Info(Opcodes.AND_INT_2ADDR,
+        new Info(Opcodes.AND_INT_2ADDR, "and-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info OR_INT_2ADDR =
-        new Info(Opcodes.OR_INT_2ADDR,
+        new Info(Opcodes.OR_INT_2ADDR, "or-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info XOR_INT_2ADDR =
-        new Info(Opcodes.XOR_INT_2ADDR,
+        new Info(Opcodes.XOR_INT_2ADDR, "xor-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info SHL_INT_2ADDR =
-        new Info(Opcodes.SHL_INT_2ADDR,
+        new Info(Opcodes.SHL_INT_2ADDR, "shl-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info SHR_INT_2ADDR =
-        new Info(Opcodes.SHR_INT_2ADDR,
+        new Info(Opcodes.SHR_INT_2ADDR, "shr-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info USHR_INT_2ADDR =
-        new Info(Opcodes.USHR_INT_2ADDR,
+        new Info(Opcodes.USHR_INT_2ADDR, "ushr-int/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info ADD_LONG_2ADDR =
-        new Info(Opcodes.ADD_LONG_2ADDR,
+        new Info(Opcodes.ADD_LONG_2ADDR, "add-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info SUB_LONG_2ADDR =
-        new Info(Opcodes.SUB_LONG_2ADDR,
+        new Info(Opcodes.SUB_LONG_2ADDR, "sub-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info MUL_LONG_2ADDR =
-        new Info(Opcodes.MUL_LONG_2ADDR,
+        new Info(Opcodes.MUL_LONG_2ADDR, "mul-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info DIV_LONG_2ADDR =
-        new Info(Opcodes.DIV_LONG_2ADDR,
+        new Info(Opcodes.DIV_LONG_2ADDR, "div-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info REM_LONG_2ADDR =
-        new Info(Opcodes.REM_LONG_2ADDR,
+        new Info(Opcodes.REM_LONG_2ADDR, "rem-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info AND_LONG_2ADDR =
-        new Info(Opcodes.AND_LONG_2ADDR,
+        new Info(Opcodes.AND_LONG_2ADDR, "and-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info OR_LONG_2ADDR =
-        new Info(Opcodes.OR_LONG_2ADDR,
+        new Info(Opcodes.OR_LONG_2ADDR, "or-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info XOR_LONG_2ADDR =
-        new Info(Opcodes.XOR_LONG_2ADDR,
+        new Info(Opcodes.XOR_LONG_2ADDR, "xor-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info SHL_LONG_2ADDR =
-        new Info(Opcodes.SHL_LONG_2ADDR,
+        new Info(Opcodes.SHL_LONG_2ADDR, "shl-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info SHR_LONG_2ADDR =
-        new Info(Opcodes.SHR_LONG_2ADDR,
+        new Info(Opcodes.SHR_LONG_2ADDR, "shr-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info USHR_LONG_2ADDR =
-        new Info(Opcodes.USHR_LONG_2ADDR,
+        new Info(Opcodes.USHR_LONG_2ADDR, "ushr-long/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info ADD_FLOAT_2ADDR =
-        new Info(Opcodes.ADD_FLOAT_2ADDR,
+        new Info(Opcodes.ADD_FLOAT_2ADDR, "add-float/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info SUB_FLOAT_2ADDR =
-        new Info(Opcodes.SUB_FLOAT_2ADDR,
+        new Info(Opcodes.SUB_FLOAT_2ADDR, "sub-float/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info MUL_FLOAT_2ADDR =
-        new Info(Opcodes.MUL_FLOAT_2ADDR,
+        new Info(Opcodes.MUL_FLOAT_2ADDR, "mul-float/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info DIV_FLOAT_2ADDR =
-        new Info(Opcodes.DIV_FLOAT_2ADDR,
+        new Info(Opcodes.DIV_FLOAT_2ADDR, "div-float/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info REM_FLOAT_2ADDR =
-        new Info(Opcodes.REM_FLOAT_2ADDR,
+        new Info(Opcodes.REM_FLOAT_2ADDR, "rem-float/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info ADD_DOUBLE_2ADDR =
-        new Info(Opcodes.ADD_DOUBLE_2ADDR,
+        new Info(Opcodes.ADD_DOUBLE_2ADDR, "add-double/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info SUB_DOUBLE_2ADDR =
-        new Info(Opcodes.SUB_DOUBLE_2ADDR,
+        new Info(Opcodes.SUB_DOUBLE_2ADDR, "sub-double/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info MUL_DOUBLE_2ADDR =
-        new Info(Opcodes.MUL_DOUBLE_2ADDR,
+        new Info(Opcodes.MUL_DOUBLE_2ADDR, "mul-double/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info DIV_DOUBLE_2ADDR =
-        new Info(Opcodes.DIV_DOUBLE_2ADDR,
+        new Info(Opcodes.DIV_DOUBLE_2ADDR, "div-double/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info REM_DOUBLE_2ADDR =
-        new Info(Opcodes.REM_DOUBLE_2ADDR,
+        new Info(Opcodes.REM_DOUBLE_2ADDR, "rem-double/2addr",
             InstructionCodec.FORMAT_12X, null);
 
     public static final Info ADD_INT_LIT16 =
-        new Info(Opcodes.ADD_INT_LIT16,
+        new Info(Opcodes.ADD_INT_LIT16, "add-int/lit16",
             InstructionCodec.FORMAT_22S, null);
 
     public static final Info RSUB_INT =
-        new Info(Opcodes.RSUB_INT,
+        new Info(Opcodes.RSUB_INT, "rsub-int",
             InstructionCodec.FORMAT_22S, null);
 
     public static final Info MUL_INT_LIT16 =
-        new Info(Opcodes.MUL_INT_LIT16,
+        new Info(Opcodes.MUL_INT_LIT16, "mul-int/lit16",
             InstructionCodec.FORMAT_22S, null);
 
     public static final Info DIV_INT_LIT16 =
-        new Info(Opcodes.DIV_INT_LIT16,
+        new Info(Opcodes.DIV_INT_LIT16, "div-int/lit16",
             InstructionCodec.FORMAT_22S, null);
 
     public static final Info REM_INT_LIT16 =
-        new Info(Opcodes.REM_INT_LIT16,
+        new Info(Opcodes.REM_INT_LIT16, "rem-int/lit16",
             InstructionCodec.FORMAT_22S, null);
 
     public static final Info AND_INT_LIT16 =
-        new Info(Opcodes.AND_INT_LIT16,
+        new Info(Opcodes.AND_INT_LIT16, "and-int/lit16",
             InstructionCodec.FORMAT_22S, null);
 
     public static final Info OR_INT_LIT16 =
-        new Info(Opcodes.OR_INT_LIT16,
+        new Info(Opcodes.OR_INT_LIT16, "or-int/lit16",
             InstructionCodec.FORMAT_22S, null);
 
     public static final Info XOR_INT_LIT16 =
-        new Info(Opcodes.XOR_INT_LIT16,
+        new Info(Opcodes.XOR_INT_LIT16, "xor-int/lit16",
             InstructionCodec.FORMAT_22S, null);
 
     public static final Info ADD_INT_LIT8 =
-        new Info(Opcodes.ADD_INT_LIT8,
+        new Info(Opcodes.ADD_INT_LIT8, "add-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info RSUB_INT_LIT8 =
-        new Info(Opcodes.RSUB_INT_LIT8,
+        new Info(Opcodes.RSUB_INT_LIT8, "rsub-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info MUL_INT_LIT8 =
-        new Info(Opcodes.MUL_INT_LIT8,
+        new Info(Opcodes.MUL_INT_LIT8, "mul-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info DIV_INT_LIT8 =
-        new Info(Opcodes.DIV_INT_LIT8,
+        new Info(Opcodes.DIV_INT_LIT8, "div-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info REM_INT_LIT8 =
-        new Info(Opcodes.REM_INT_LIT8,
+        new Info(Opcodes.REM_INT_LIT8, "rem-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info AND_INT_LIT8 =
-        new Info(Opcodes.AND_INT_LIT8,
+        new Info(Opcodes.AND_INT_LIT8, "and-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info OR_INT_LIT8 =
-        new Info(Opcodes.OR_INT_LIT8,
+        new Info(Opcodes.OR_INT_LIT8, "or-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info XOR_INT_LIT8 =
-        new Info(Opcodes.XOR_INT_LIT8,
+        new Info(Opcodes.XOR_INT_LIT8, "xor-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info SHL_INT_LIT8 =
-        new Info(Opcodes.SHL_INT_LIT8,
+        new Info(Opcodes.SHL_INT_LIT8, "shl-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info SHR_INT_LIT8 =
-        new Info(Opcodes.SHR_INT_LIT8,
+        new Info(Opcodes.SHR_INT_LIT8, "shr-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info USHR_INT_LIT8 =
-        new Info(Opcodes.USHR_INT_LIT8,
+        new Info(Opcodes.USHR_INT_LIT8, "ushr-int/lit8",
             InstructionCodec.FORMAT_22B, null);
 
     public static final Info CONST_CLASS_JUMBO =
-        new Info(Opcodes.CONST_CLASS_JUMBO,
+        new Info(Opcodes.CONST_CLASS_JUMBO, "const-class/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.TYPE_REF);
 
     public static final Info CHECK_CAST_JUMBO =
-        new Info(Opcodes.CHECK_CAST_JUMBO,
+        new Info(Opcodes.CHECK_CAST_JUMBO, "check-cast/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.TYPE_REF);
 
     public static final Info INSTANCE_OF_JUMBO =
-        new Info(Opcodes.INSTANCE_OF_JUMBO,
+        new Info(Opcodes.INSTANCE_OF_JUMBO, "instance-of/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.TYPE_REF);
 
     public static final Info NEW_INSTANCE_JUMBO =
-        new Info(Opcodes.NEW_INSTANCE_JUMBO,
+        new Info(Opcodes.NEW_INSTANCE_JUMBO, "new-instance/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.TYPE_REF);
 
     public static final Info NEW_ARRAY_JUMBO =
-        new Info(Opcodes.NEW_ARRAY_JUMBO,
+        new Info(Opcodes.NEW_ARRAY_JUMBO, "new-array/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.TYPE_REF);
 
     public static final Info FILLED_NEW_ARRAY_JUMBO =
-        new Info(Opcodes.FILLED_NEW_ARRAY_JUMBO,
+        new Info(Opcodes.FILLED_NEW_ARRAY_JUMBO, "filled-new-array/jumbo",
             InstructionCodec.FORMAT_5RC, IndexType.TYPE_REF);
 
     public static final Info IGET_JUMBO =
-        new Info(Opcodes.IGET_JUMBO,
+        new Info(Opcodes.IGET_JUMBO, "iget/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IGET_WIDE_JUMBO =
-        new Info(Opcodes.IGET_WIDE_JUMBO,
+        new Info(Opcodes.IGET_WIDE_JUMBO, "iget-wide/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IGET_OBJECT_JUMBO =
-        new Info(Opcodes.IGET_OBJECT_JUMBO,
+        new Info(Opcodes.IGET_OBJECT_JUMBO, "iget-object/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IGET_BOOLEAN_JUMBO =
-        new Info(Opcodes.IGET_BOOLEAN_JUMBO,
+        new Info(Opcodes.IGET_BOOLEAN_JUMBO, "iget-boolean/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IGET_BYTE_JUMBO =
-        new Info(Opcodes.IGET_BYTE_JUMBO,
+        new Info(Opcodes.IGET_BYTE_JUMBO, "iget-byte/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IGET_CHAR_JUMBO =
-        new Info(Opcodes.IGET_CHAR_JUMBO,
+        new Info(Opcodes.IGET_CHAR_JUMBO, "iget-char/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IGET_SHORT_JUMBO =
-        new Info(Opcodes.IGET_SHORT_JUMBO,
+        new Info(Opcodes.IGET_SHORT_JUMBO, "iget-short/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IPUT_JUMBO =
-        new Info(Opcodes.IPUT_JUMBO,
+        new Info(Opcodes.IPUT_JUMBO, "iput/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IPUT_WIDE_JUMBO =
-        new Info(Opcodes.IPUT_WIDE_JUMBO,
+        new Info(Opcodes.IPUT_WIDE_JUMBO, "iput-wide/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IPUT_OBJECT_JUMBO =
-        new Info(Opcodes.IPUT_OBJECT_JUMBO,
+        new Info(Opcodes.IPUT_OBJECT_JUMBO, "iput-object/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IPUT_BOOLEAN_JUMBO =
-        new Info(Opcodes.IPUT_BOOLEAN_JUMBO,
+        new Info(Opcodes.IPUT_BOOLEAN_JUMBO, "iput-boolean/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IPUT_BYTE_JUMBO =
-        new Info(Opcodes.IPUT_BYTE_JUMBO,
+        new Info(Opcodes.IPUT_BYTE_JUMBO, "iput-byte/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IPUT_CHAR_JUMBO =
-        new Info(Opcodes.IPUT_CHAR_JUMBO,
+        new Info(Opcodes.IPUT_CHAR_JUMBO, "iput-char/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info IPUT_SHORT_JUMBO =
-        new Info(Opcodes.IPUT_SHORT_JUMBO,
+        new Info(Opcodes.IPUT_SHORT_JUMBO, "iput-short/jumbo",
             InstructionCodec.FORMAT_52C, IndexType.FIELD_REF);
 
     public static final Info SGET_JUMBO =
-        new Info(Opcodes.SGET_JUMBO,
+        new Info(Opcodes.SGET_JUMBO, "sget/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SGET_WIDE_JUMBO =
-        new Info(Opcodes.SGET_WIDE_JUMBO,
+        new Info(Opcodes.SGET_WIDE_JUMBO, "sget-wide/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SGET_OBJECT_JUMBO =
-        new Info(Opcodes.SGET_OBJECT_JUMBO,
+        new Info(Opcodes.SGET_OBJECT_JUMBO, "sget-object/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SGET_BOOLEAN_JUMBO =
-        new Info(Opcodes.SGET_BOOLEAN_JUMBO,
+        new Info(Opcodes.SGET_BOOLEAN_JUMBO, "sget-boolean/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SGET_BYTE_JUMBO =
-        new Info(Opcodes.SGET_BYTE_JUMBO,
+        new Info(Opcodes.SGET_BYTE_JUMBO, "sget-byte/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SGET_CHAR_JUMBO =
-        new Info(Opcodes.SGET_CHAR_JUMBO,
+        new Info(Opcodes.SGET_CHAR_JUMBO, "sget-char/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SGET_SHORT_JUMBO =
-        new Info(Opcodes.SGET_SHORT_JUMBO,
+        new Info(Opcodes.SGET_SHORT_JUMBO, "sget-short/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SPUT_JUMBO =
-        new Info(Opcodes.SPUT_JUMBO,
+        new Info(Opcodes.SPUT_JUMBO, "sput/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SPUT_WIDE_JUMBO =
-        new Info(Opcodes.SPUT_WIDE_JUMBO,
+        new Info(Opcodes.SPUT_WIDE_JUMBO, "sput-wide/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SPUT_OBJECT_JUMBO =
-        new Info(Opcodes.SPUT_OBJECT_JUMBO,
+        new Info(Opcodes.SPUT_OBJECT_JUMBO, "sput-object/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SPUT_BOOLEAN_JUMBO =
-        new Info(Opcodes.SPUT_BOOLEAN_JUMBO,
+        new Info(Opcodes.SPUT_BOOLEAN_JUMBO, "sput-boolean/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SPUT_BYTE_JUMBO =
-        new Info(Opcodes.SPUT_BYTE_JUMBO,
+        new Info(Opcodes.SPUT_BYTE_JUMBO, "sput-byte/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SPUT_CHAR_JUMBO =
-        new Info(Opcodes.SPUT_CHAR_JUMBO,
+        new Info(Opcodes.SPUT_CHAR_JUMBO, "sput-char/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info SPUT_SHORT_JUMBO =
-        new Info(Opcodes.SPUT_SHORT_JUMBO,
+        new Info(Opcodes.SPUT_SHORT_JUMBO, "sput-short/jumbo",
             InstructionCodec.FORMAT_41C, IndexType.FIELD_REF);
 
     public static final Info INVOKE_VIRTUAL_JUMBO =
-        new Info(Opcodes.INVOKE_VIRTUAL_JUMBO,
+        new Info(Opcodes.INVOKE_VIRTUAL_JUMBO, "invoke-virtual/jumbo",
             InstructionCodec.FORMAT_5RC, IndexType.METHOD_REF);
 
     public static final Info INVOKE_SUPER_JUMBO =
-        new Info(Opcodes.INVOKE_SUPER_JUMBO,
+        new Info(Opcodes.INVOKE_SUPER_JUMBO, "invoke-super/jumbo",
             InstructionCodec.FORMAT_5RC, IndexType.METHOD_REF);
 
     public static final Info INVOKE_DIRECT_JUMBO =
-        new Info(Opcodes.INVOKE_DIRECT_JUMBO,
+        new Info(Opcodes.INVOKE_DIRECT_JUMBO, "invoke-direct/jumbo",
             InstructionCodec.FORMAT_5RC, IndexType.METHOD_REF);
 
     public static final Info INVOKE_STATIC_JUMBO =
-        new Info(Opcodes.INVOKE_STATIC_JUMBO,
+        new Info(Opcodes.INVOKE_STATIC_JUMBO, "invoke-static/jumbo",
             InstructionCodec.FORMAT_5RC, IndexType.METHOD_REF);
 
     public static final Info INVOKE_INTERFACE_JUMBO =
-        new Info(Opcodes.INVOKE_INTERFACE_JUMBO,
+        new Info(Opcodes.INVOKE_INTERFACE_JUMBO, "invoke-interface/jumbo",
             InstructionCodec.FORMAT_5RC, IndexType.METHOD_REF);
 
     // END(opcode-info-defs)
@@ -1079,6 +1089,9 @@
     static {
         INFO = new Info[Opcodes.MAX_VALUE - Opcodes.MIN_VALUE + 1];
 
+        // TODO: Stop using this constant.
+        set(SPECIAL_FORMAT);
+
         // TODO: These payload opcodes should be generated by opcode-gen.
         set(PACKED_SWITCH_PAYLOAD);
         set(SPARSE_SWITCH_PAYLOAD);
@@ -1376,10 +1389,10 @@
     }
 
     /**
-     * Gets the {@link IndexType} for the given opcode value.
+     * Gets the name of the given opcode.
      */
-    public static IndexType getIndexType(int opcode) {
-        return get(opcode).getIndexType();
+    public static String getName(int opcode) {
+        return get(opcode).getName();
     }
 
     /**
@@ -1391,6 +1404,13 @@
     }
 
     /**
+     * Gets the {@link IndexType} for the given opcode value.
+     */
+    public static IndexType getIndexType(int opcode) {
+        return get(opcode).getIndexType();
+    }
+
+    /**
      * Puts the given opcode into the table of all ops.
      *
      * @param opcode non-null; the opcode
@@ -1405,11 +1425,14 @@
      */
     public static class Info {
         private final int opcode;
+        private final String name;
         private final InstructionCodec format;
         private final IndexType indexType;
 
-        public Info(int opcode, InstructionCodec format, IndexType indexType) {
+        public Info(int opcode, String name, InstructionCodec format,
+                IndexType indexType) {
             this.opcode = opcode;
+            this.name = name;
             this.format = format;
             this.indexType = indexType;
         }
@@ -1418,6 +1441,10 @@
             return opcode;
         }
 
+        public String getName() {
+            return name;
+        }
+
         public InstructionCodec getFormat() {
             return format;
         }
diff --git a/dx/src/com/android/dx/merge/InstructionTransformer.java b/dx/src/com/android/dx/merge/InstructionTransformer.java
index 27f8cf9..e0dfc9f 100644
--- a/dx/src/com/android/dx/merge/InstructionTransformer.java
+++ b/dx/src/com/android/dx/merge/InstructionTransformer.java
@@ -19,6 +19,7 @@
 import com.android.dx.dex.DexException;
 import com.android.dx.io.CodeReader;
 import com.android.dx.io.DecodedInstruction;
+import com.android.dx.io.OpcodeInfo;
 import com.android.dx.io.ShortArrayCodeOutput;
 
 final class InstructionTransformer {
@@ -58,15 +59,13 @@
     }
 
     private class GenericVisitor implements CodeReader.Visitor {
-        public void visit(CodeReader.Instruction instruction,
-                DecodedInstruction[] all, DecodedInstruction one) {
+        public void visit(DecodedInstruction[] all, DecodedInstruction one) {
             mappedInstructions[mappedAt++] = one;
         }
     }
 
     private class StringVisitor implements CodeReader.Visitor {
-        public void visit(CodeReader.Instruction instruction,
-                DecodedInstruction[] all, DecodedInstruction one) {
+        public void visit(DecodedInstruction[] all, DecodedInstruction one) {
             int stringId = one.getIndex();
             int mappedId = indexMap.adjustString(stringId);
             if (mappedId > 0xFFFF) {
@@ -78,8 +77,7 @@
     }
 
     private class JumboStringVisitor implements CodeReader.Visitor {
-        public void visit(CodeReader.Instruction instruction,
-                DecodedInstruction[] all, DecodedInstruction one) {
+        public void visit(DecodedInstruction[] all, DecodedInstruction one) {
             throw new UnsupportedOperationException("Jumbo strings not implemented. "
                     + "Due to a lack of dex files requiring jumbo strings, this class doesn't "
                     + "bother to support jumbo strings!");
@@ -87,8 +85,7 @@
     }
 
     private class FieldVisitor implements CodeReader.Visitor {
-        public void visit(CodeReader.Instruction instruction,
-                DecodedInstruction[] all, DecodedInstruction one) {
+        public void visit(DecodedInstruction[] all, DecodedInstruction one) {
             int fieldId = one.getIndex();
             int mappedId = indexMap.adjustField(fieldId);
             mappedInstructions[mappedAt++] = one.withIndex(mappedId);
@@ -96,8 +93,7 @@
     }
 
     private class TypeVisitor implements CodeReader.Visitor {
-        public void visit(CodeReader.Instruction instruction,
-                DecodedInstruction[] all, DecodedInstruction one) {
+        public void visit(DecodedInstruction[] all, DecodedInstruction one) {
             int typeId = one.getIndex();
             int mappedId = indexMap.adjustType(typeId);
             mappedInstructions[mappedAt++] = one.withIndex(mappedId);
@@ -105,8 +101,7 @@
     }
 
     private class MethodVisitor implements CodeReader.Visitor {
-        public void visit(CodeReader.Instruction instruction,
-                DecodedInstruction[] all, DecodedInstruction one) {
+        public void visit(DecodedInstruction[] all, DecodedInstruction one) {
             int methodId = one.getIndex();
             int mappedId = indexMap.adjustMethod(methodId);
             mappedInstructions[mappedAt++] = one.withIndex(mappedId);
diff --git a/dx/tests/118-find-usages/expected.txt b/dx/tests/118-find-usages/expected.txt
index ef735c8..aca2bf1 100644
--- a/dx/tests/118-find-usages/expected.txt
+++ b/dx/tests/118-find-usages/expected.txt
@@ -1,9 +1,9 @@
 StreamTokenizer.nval
-LFoo;.readStreamTokenizerNval: field reference (iget-wide vA, vB, field@CCCC)
-LFoo;.writeStreamTokenizerNval: field reference (iput-wide vA, vB, field@CCCC)
+LFoo;.readStreamTokenizerNval: field reference (iget-wide)
+LFoo;.writeStreamTokenizerNval: field reference (iput-wide)
 ArrayList.remove()
-LFoo;.callArrayListRemoveIndex: method reference (invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC)
-LFoo;.callArrayListRemoveValue: method reference (invoke-virtual {vD, vE, vF, vG, vA}, meth@CCCC)
+LFoo;.callArrayListRemoveIndex: method reference (invoke-virtual)
+LFoo;.callArrayListRemoveValue: method reference (invoke-virtual)
 Collection.remove()
 String.valueOf()
-LFoo;.callStringValueOf: method reference (invoke-static {vD, vE, vF, vG, vA}, meth@CCCC)
+LFoo;.callStringValueOf: method reference (invoke-static)
diff --git a/opcode-gen/opcode-gen.awk b/opcode-gen/opcode-gen.awk
index e269abf..2f1a830 100644
--- a/opcode-gen/opcode-gen.awk
+++ b/opcode-gen/opcode-gen.awk
@@ -96,10 +96,9 @@
 
         printf("    public static final Dop %s =\n" \
                "        new Dop(Opcodes.%s, Opcodes.%s,\n" \
-               "            Opcodes.%s, Form%s.THE_ONE, %s,\n" \
-               "            \"%s\");\n\n",
+               "            Opcodes.%s, Form%s.THE_ONE, %s);\n\n",
                constName[i], constName[i], family[i], nextOp, format[i],
-               hasResult[i], name[i]);
+               hasResult[i]);
     }
 }
 
@@ -119,9 +118,9 @@
         }
 
         printf("    public static final Info %s =\n" \
-               "        new Info(Opcodes.%s,\n" \
+               "        new Info(Opcodes.%s, \"%s\",\n" \
                "            InstructionCodec.FORMAT_%s, %s);\n\n", \
-                constName[i], constName[i], toupper(format[i]), itype);
+               constName[i], constName[i], name[i], toupper(format[i]), itype);
     }
 }