    001/*
    002 * Licensed to the Apache Software Foundation (ASF) under one or more
    003 * contributor license agreements.  See the NOTICE file distributed with
    004 * this work for additional information regarding copyright ownership.
    005 * The ASF licenses this file to You under the Apache License, Version 2.0
    006 * (the "License"); you may not use this file except in compliance with
    007 * the License.  You may obtain a copy of the License at
    008 *
    009 *      http://www.apache.org/licenses/LICENSE-2.0
    010 *
    011 *  Unless required by applicable law or agreed to in writing, software
    012 *  distributed under the License is distributed on an "AS IS" BASIS,
    013 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014 *  See the License for the specific language governing permissions and
    015 *  limitations under the License.
    016 *
    017 */
    018package org.apache.bcel;
    019
    020import java.util.Arrays;
    021import java.util.Collections;
    022
    023/**
    024 * Constants for the project, mostly defined in the JVM specification.
    025 *
    026 * @since 6.0 (intended to replace the Constants interface)
    027 */
    028public final class Const {
    029
    030  /**
    031   * Java class file format Magic number (0xCAFEBABE)
    032   *
    033   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.1-200-A">
    034   * The ClassFile Structure in The Java Virtual Machine Specification</a>
    035   */
    036  public static final int JVM_CLASSFILE_MAGIC = 0xCAFEBABE;
    037
    038  /** Major version number of class files for Java 1.1.
    039   *  @see #MINOR_1_1
    040   *  */
    041  public static final short MAJOR_1_1 = 45;
    042
    043  /** Minor version number of class files for Java 1.1.
    044   *  @see #MAJOR_1_1
    045   *  */
    046  public static final short MINOR_1_1 = 3;
    047
    048  /** Major version number of class files for Java 1.2.
    049   *  @see #MINOR_1_2
    050   *  */
    051  public static final short MAJOR_1_2 = 46;
    052
    053  /** Minor version number of class files for Java 1.2.
    054   *  @see #MAJOR_1_2
    055   *  */
    056  public static final short MINOR_1_2 = 0;
    057
    058  /** Major version number of class files for Java 1.2.
    059   *  @see #MINOR_1_2
    060   *  */
    061  public static final short MAJOR_1_3 = 47;
    062
    063  /** Minor version number of class files for Java 1.3.
    064   *  @see #MAJOR_1_3
    065   *  */
    066  public static final short MINOR_1_3 = 0;
    067
    068  /** Major version number of class files for Java 1.3.
    069   *  @see #MINOR_1_3
    070   *  */
    071  public static final short MAJOR_1_4 = 48;
    072
    073  /** Minor version number of class files for Java 1.4.
    074   *  @see #MAJOR_1_4
    075   *  */
    076  public static final short MINOR_1_4 = 0;
    077
    078  /** Major version number of class files for Java 1.4.
    079   *  @see #MINOR_1_4
    080   *  */
    081  public static final short MAJOR_1_5 = 49;
    082
    083  /** Minor version number of class files for Java 1.5.
    084   *  @see #MAJOR_1_5
    085   *  */
    086  public static final short MINOR_1_5 = 0;
    087
    088  /** Major version number of class files for Java 1.6.
    089   *  @see #MINOR_1_6
    090   *  */
    091  public static final short MAJOR_1_6 = 50;
    092
    093  /** Minor version number of class files for Java 1.6.
    094   *  @see #MAJOR_1_6
    095   *  */
    096  public static final short MINOR_1_6 = 0;
    097
    098  /** Major version number of class files for Java 1.7.
    099   *  @see #MINOR_1_7
    100   *  */
    101  public static final short MAJOR_1_7 = 51;
    102
    103  /** Minor version number of class files for Java 1.7.
    104   *  @see #MAJOR_1_7
    105   *  */
    106  public static final short MINOR_1_7 = 0;
    107
    108  /** Major version number of class files for Java 1.8.
    109   *  @see #MINOR_1_8
    110   *  */
    111  public static final short MAJOR_1_8 = 52;
    112
    113  /** Minor version number of class files for Java 1.8.
    114   *  @see #MAJOR_1_8
    115   *  */
    116  public static final short MINOR_1_8 = 0;
    117
    118  /** Major version number of class files for Java 9.
    119   *  @see #MINOR_9
    120   *  */
    121  public static final short MAJOR_9 = 53;
    122
    123  /** Minor version number of class files for Java 9.
    124   *  @see #MAJOR_9
    125   *  */
    126  public static final short MINOR_9 = 0;
    127
    128  /**
    129   * @deprecated Use {@link #MAJOR_9} instead
    130   */
    131  @Deprecated
    132  public static final short MAJOR_1_9 = MAJOR_9;
    133
    134  /**
    135   * @deprecated Use {@link #MINOR_9} instead
    136   */
    137  @Deprecated
    138  public static final short MINOR_1_9 = MINOR_9;
    139
    140  /** Major version number of class files for Java 10.
    141   *  @see #MINOR_10
    142   *  */
    143  public static final short MAJOR_10 = 54;
    144
    145  /** Minor version number of class files for Java 10.
    146   *  @see #MAJOR_10
    147   *  */
    148  public static final short MINOR_10 = 0;
    149
    150  /** Major version number of class files for Java 11.
    151   *  @see #MINOR_11
    152   *  */
    153  public static final short MAJOR_11 = 55;
    154
    155  /** Minor version number of class files for Java 11.
    156   *  @see #MAJOR_11
    157   *  */
    158  public static final short MINOR_11 = 0;
    159
    160  /** Major version number of class files for Java 12.
    161   *  @see #MINOR_12
    162   *  */
    163  public static final short MAJOR_12 = 56;
    164
    165  /** Minor version number of class files for Java 12.
    166   *  @see #MAJOR_12
    167   *  */
    168  public static final short MINOR_12 = 0;
    169
    170  /** Major version number of class files for Java 13.
    171   *  @see #MINOR_13
    172   *  */
    173  public static final short MAJOR_13 = 57;
    174
    175  /** Minor version number of class files for Java 13.
    176   *  @see #MAJOR_13
    177   *  */
    178  public static final short MINOR_13 = 0;
    179
    180  /** Major version number of class files for Java 14.
    181   *  @see #MINOR_14
    182   *  @since 6.4.0
    183   *  */
    184  public static final short MAJOR_14 = 58;
    185
    186  /** Minor version number of class files for Java 14.
    187   *  @see #MAJOR_14
    188   *  @since 6.4.0
    189   *  */
    190  public static final short MINOR_14 = 0;
    191
    192  /** Default major version number.  Class file is for Java 1.1.
    193   *  @see #MAJOR_1_1
    194   *  */
    195  public static final short MAJOR = MAJOR_1_1;
    196
    197  /** Default major version number.  Class file is for Java 1.1.
    198   *  @see #MAJOR_1_1
    199   *  */
    200  public static final short MINOR     = MINOR_1_1;
    201
    202  /** Maximum value for an unsigned short.
    203   */
    204  public static final int MAX_SHORT = 65535; // 2^16 - 1
    205
    206  /** Maximum value for an unsigned byte.
    207   */
    208  public static final int MAX_BYTE  = 255; // 2^8 - 1
    209
    210  /** One of the access flags for fields, methods, or classes.
    211   *
    212   *  @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.1-200-E.1">
    213   *  Flag definitions for Classes in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    214   *  @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.5">
    215   *  Flag definitions for Fields in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    216   *  @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.6">
    217   *  Flag definitions for Methods in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    218   *  @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.7.6-300-D.1-D.1">
    219   *  Flag definitions for Inner Classes in the Java Virtual Machine Specification (Java SE 9 Edition).</a>
    220   */
    221  public static final short ACC_PUBLIC       = 0x0001;
    222
    223  /** One of the access flags for fields, methods, or classes.
    224   *  @see #ACC_PUBLIC
    225   */
    226  public static final short ACC_PRIVATE      = 0x0002;
    227
    228  /** One of the access flags for fields, methods, or classes.
    229   *  @see #ACC_PUBLIC
    230   */
    231  public static final short ACC_PROTECTED    = 0x0004;
    232
    233  /** One of the access flags for fields, methods, or classes.
    234   *  @see #ACC_PUBLIC
    235   */
    236  public static final short ACC_STATIC       = 0x0008;
    237
    238  /** One of the access flags for fields, methods, or classes.
    239   *  @see #ACC_PUBLIC
    240   */
    241  public static final short ACC_FINAL        = 0x0010;
    242
    243  /** One of the access flags for the Module attribute.
    244   *  @see #ACC_PUBLIC
    245   */
    246  public static final short ACC_OPEN         = 0x0020;
    247
    248  /** One of the access flags for classes.
    249   *  @see #ACC_PUBLIC
    250   */
    251  public static final short ACC_SUPER        = 0x0020;
    252
    253  /** One of the access flags for methods.
    254   *  @see #ACC_PUBLIC
    255   */
    256  public static final short ACC_SYNCHRONIZED = 0x0020;
    257
    258  /** One of the access flags for the Module attribute.
    259   *  @see #ACC_PUBLIC
    260   */
    261  public static final short ACC_TRANSITIVE   = 0x0020;
    262
    263  /** One of the access flags for methods.
    264   *  @see #ACC_PUBLIC
    265   */
    266  public static final short ACC_BRIDGE       = 0x0040;
    267
    268  /** One of the access flags for the Module attribute.
    269   *  @see #ACC_PUBLIC
    270   */
    271  public static final short ACC_STATIC_PHASE = 0x0040;
    272
    273  /** One of the access flags for fields.
    274   *  @see #ACC_PUBLIC
    275   */
    276  public static final short ACC_VOLATILE     = 0x0040;
    277
    278  /** One of the access flags for fields.
    279   *  @see #ACC_PUBLIC
    280   */
    281  public static final short ACC_TRANSIENT    = 0x0080;
    282
    283  /** One of the access flags for methods.
    284   *  @see #ACC_PUBLIC
    285   */
    286  public static final short ACC_VARARGS      = 0x0080;
    287
    288  /** One of the access flags for methods.
    289   *  @see #ACC_PUBLIC
    290   */
    291  public static final short ACC_NATIVE       = 0x0100;
    292
    293  /** One of the access flags for classes.
    294   *  @see #ACC_PUBLIC
    295   */
    296  public static final short ACC_INTERFACE    = 0x0200;
    297
    298  /** One of the access flags for methods or classes.
    299   *  @see #ACC_PUBLIC
    300   */
    301  public static final short ACC_ABSTRACT     = 0x0400;
    302
    303  /** One of the access flags for methods.
    304   *  @see #ACC_PUBLIC
    305   */
    306  public static final short ACC_STRICT       = 0x0800;
    307
    308  /** One of the access flags for fields, methods, classes, MethodParameter attribute, or Module attribute.
    309   *  @see #ACC_PUBLIC
    310   */
    311  public static final short ACC_SYNTHETIC    = 0x1000;
    312
    313  /** One of the access flags for classes.
    314   *  @see #ACC_PUBLIC
    315   */
    316  public static final short ACC_ANNOTATION   = 0x2000;
    317
    318  /** One of the access flags for fields or classes.
    319   *  @see #ACC_PUBLIC
    320   */
    321  public static final short ACC_ENUM         = 0x4000;
    322
    323  // Applies to classes compiled by new compilers only
    324  /** One of the access flags for MethodParameter or Module attributes.
    325   *  @see #ACC_PUBLIC
    326   */
    327  public static final short ACC_MANDATED     = (short) 0x8000;
    328
    329  /** One of the access flags for classes.
    330   *  @see #ACC_PUBLIC
    331   */
    332  public static final short ACC_MODULE       = (short) 0x8000;
    333
    334  /** One of the access flags for fields, methods, or classes.
    335   *  @see #ACC_PUBLIC
    336   *  @deprecated Use {@link #MAX_ACC_FLAG_I}
    337   */
    338  @Deprecated
    339  public static final short MAX_ACC_FLAG     = ACC_ENUM;
    340
    341  /** One of the access flags for fields, methods, or classes.
    342   * ACC_MODULE is negative as a short.
    343   * @see #ACC_PUBLIC
    344   * @since 6.4.0
    345   */
    346  public static final int MAX_ACC_FLAG_I = 0x8000; // ACC_MODULE is negative as a short
    347
    348  // Note that do to overloading:
    349  // 'synchronized' is for methods, might be 'open' (if Module), 'super' (if class), or 'transitive' (if Module).
    350  // 'volatile'     is for fields,  might be 'bridge' (if method) or 'static_phase' (if Module)
    351  // 'transient'    is for fields,  might be 'varargs' (if method)
    352  // 'module'       is for classes, might be 'mandated' (if Module or MethodParameters)
    353  /**
    354   * The names of the access flags.
    355   */
    356  private static final String[] ACCESS_NAMES = {
    357    "public", "private", "protected", "static", "final", "synchronized",
    358    "volatile", "transient", "native", "interface", "abstract", "strictfp",
    359    "synthetic", "annotation", "enum", "module"
    360  };
    361
    362  /** @since 6.0 */
    363  public static final int ACCESS_NAMES_LENGTH = ACCESS_NAMES.length;
    364
    365  /**
    366   * @param index
    367   * @return the ACCESS_NAMES entry at the given index
    368   * @since 6.0
    369   */
    370  public static String getAccessName(final int index) {
    371      return ACCESS_NAMES[index];
    372  }
    373
    374  /*
    375   * The description of the constant pool is at:
    376   * http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4
    377   * References below are to the individual sections
    378   */
    379
    380  /**
    381   * Marks a constant pool entry as type UTF-8.
    382   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.7">
    383   * The Constant Pool in The Java Virtual Machine Specification</a>
    384   */
    385  public static final byte CONSTANT_Utf8               = 1;
    386
    387  /**
    388   * Marks a constant pool entry as type Integer.
    389   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4">
    390   * The Constant Pool in The Java Virtual Machine Specification</a>
    391   */
    392  public static final byte CONSTANT_Integer            = 3;
    393
    394  /**
    395   * Marks a constant pool entry as type Float.
    396   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.4">
    397   * The Constant Pool in The Java Virtual Machine Specification</a>
    398   */
    399  public static final byte CONSTANT_Float              = 4;
    400
    401  /**
    402   * Marks a constant pool entry as type Long.
    403   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5">
    404   * The Constant Pool in The Java Virtual Machine Specification</a>
    405   */
    406  public static final byte CONSTANT_Long               = 5;
    407
    408  /**
    409   * Marks a constant pool entry as type Double.
    410   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.5">
    411   * The Constant Pool in The Java Virtual Machine Specification</a>
    412   */
    413  public static final byte CONSTANT_Double             = 6;
    414
    415  /**
    416   * Marks a constant pool entry as a Class
    417   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.1">
    418   * The Constant Pool in The Java Virtual Machine Specification</a>
    419   */
    420  public static final byte CONSTANT_Class              = 7;
    421
    422  /**
    423   * Marks a constant pool entry as a Field Reference.
    424   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2">
    425   * The Constant Pool in The Java Virtual Machine Specification</a>
    426   */
    427  public static final byte CONSTANT_Fieldref           = 9;
    428
    429  /**
    430   * Marks a constant pool entry as type String
    431   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.3">
    432   * The Constant Pool in The Java Virtual Machine Specification</a>
    433   */
    434  public static final byte CONSTANT_String             = 8;
    435
    436  /** Marks a constant pool entry as a Method Reference.
    437   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2">
    438   * The Constant Pool in The Java Virtual Machine Specification</a> */
    439  public static final byte CONSTANT_Methodref          = 10;
    440
    441  /**
    442   * Marks a constant pool entry as an Interface Method Reference.
    443   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.2">
    444   * The Constant Pool in The Java Virtual Machine Specification</a>
    445   */
    446  public static final byte CONSTANT_InterfaceMethodref = 11;
    447
    448  /** Marks a constant pool entry as a name and type.
    449   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.6">
    450   * The Constant Pool in The Java Virtual Machine Specification</a> */
    451  public static final byte CONSTANT_NameAndType        = 12;
    452
    453  /**
    454   * Marks a constant pool entry as a Method Handle.
    455   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.8">
    456   * The Constant Pool in The Java Virtual Machine Specification</a>
    457   */
    458  public static final byte CONSTANT_MethodHandle       = 15;
    459
    460  /**
    461   * Marks a constant pool entry as a Method Type.
    462   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.9">
    463   * The Constant Pool in The Java Virtual Machine Specification</a>
    464   */
    465  public static final byte CONSTANT_MethodType         = 16;
    466
    467  /**
    468   * Marks a constant pool entry as dynamically computed.
    469   * @see  <a href="https://bugs.openjdk.java.net/secure/attachment/74618/constant-dynamic.html">
    470   * Change request for JEP 309</a>
    471   * @since 6.3
    472   */
    473  public static final byte CONSTANT_Dynamic            = 17;
    474
    475  /**
    476   * Marks a constant pool entry as an Invoke Dynamic
    477   * @see  <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.10">
    478   * The Constant Pool in The Java Virtual Machine Specification</a>
    479   */
    480  public static final byte CONSTANT_InvokeDynamic      = 18;
    481
    482  /**
    483   * Marks a constant pool entry as a Module Reference.
    484   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.11">
    485   * The Constant Pool in The Java Virtual Machine Specification</a>
    486   * @since 6.1
    487   */
    488  public static final byte CONSTANT_Module             = 19;
    489
    490  /**
    491   * Marks a constant pool entry as a Package Reference.
    492   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se9/html/jvms-4.html#jvms-4.4.12">
    493   * The Constant Pool in The Java Virtual Machine Specification</a>
    494   * @since 6.1
    495   */
    496  public static final byte CONSTANT_Package            = 20;
    497
    498  /**
    499   * The names of the types of entries in a constant pool.
    500   * Use getConstantName instead
    501   */
    502  private static final String[] CONSTANT_NAMES = {
    503    "", "CONSTANT_Utf8", "", "CONSTANT_Integer",
    504    "CONSTANT_Float", "CONSTANT_Long", "CONSTANT_Double",
    505    "CONSTANT_Class", "CONSTANT_String", "CONSTANT_Fieldref",
    506    "CONSTANT_Methodref", "CONSTANT_InterfaceMethodref",
    507    "CONSTANT_NameAndType", "", "", "CONSTANT_MethodHandle",
    508    "CONSTANT_MethodType", "CONSTANT_Dynamic", "CONSTANT_InvokeDynamic",
    509    "CONSTANT_Module", "CONSTANT_Package"};
    510
    511  /**
    512   *
    513   * @param index
    514   * @return the CONSTANT_NAMES entry at the given index
    515   * @since 6.0
    516   */
    517  public static String getConstantName(final int index) {
    518      return CONSTANT_NAMES[index];
    519  }
    520
    521  /** The name of the static initializer, also called &quot;class
    522   *  initialization method&quot; or &quot;interface initialization
    523   *   method&quot;. This is &quot;&lt;clinit&gt;&quot;.
    524   */
    525  public static final String STATIC_INITIALIZER_NAME = "<clinit>";
    526
    527  /** The name of every constructor method in a class, also called
    528   * &quot;instance initialization method&quot;. This is &quot;&lt;init&gt;&quot;.
    529   */
    530  public static final String CONSTRUCTOR_NAME = "<init>";
    531
    532  /**
    533   * The names of the interfaces implemented by arrays
    534   */
    535  private static final String[] INTERFACES_IMPLEMENTED_BY_ARRAYS = {"java.lang.Cloneable", "java.io.Serializable"};
    536
    537  /**
    538   * @since 6.0
    539   */
    540  public static Iterable<String> getInterfacesImplementedByArrays() {
    541      return Collections.unmodifiableList(Arrays.asList(INTERFACES_IMPLEMENTED_BY_ARRAYS));
    542  }
    543
    544  /**
    545   * Maximum Constant Pool entries.
    546   * One of the limitations of the Java Virtual Machine.
    547   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.11-100-A">
    548   * The Java Virtual Machine Specification, Java SE 8 Edition, page 330, chapter 4.11.</a>
    549   */
    550  public static final int MAX_CP_ENTRIES     = 65535;
    551
    552  /**
    553   * Maximum code size (plus one; the code size must be LESS than this)
    554   * One of the limitations of the Java Virtual Machine.
    555   * Note vmspec2 page 152 ("Limitations") says:
    556   * "The amount of code per non-native, non-abstract method is limited to 65536 bytes by
    557   * the sizes of the indices in the exception_table of the Code attribute (§4.7.3),
    558   * in the LineNumberTable attribute (§4.7.8), and in the LocalVariableTable attribute (§4.7.9)."
    559   * However this should be taken as an upper limit rather than the defined maximum.
    560   * On page 134 (4.8.1 Static Constants) of the same spec, it says:
    561   * "The value of the code_length item must be less than 65536."
    562   * The entry in the Limitations section has been removed from later versions of the spec;
    563   * it is not present in the Java SE 8 edition.
    564   *
    565   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3-300-E">
    566   * The Java Virtual Machine Specification, Java SE 8 Edition, page 104, chapter 4.7.</a>
    567   */
    568  public static final int MAX_CODE_SIZE      = 65536; //bytes
    569
    570  /**
    571   * The maximum number of dimensions in an array ({@value}).
    572   * One of the limitations of the Java Virtual Machine.
    573   *
    574   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.3.2-150">
    575   * Field Descriptors in The Java Virtual Machine Specification</a>
    576   */
    577  public static final int MAX_ARRAY_DIMENSIONS = 255;
    578
    579  /** Java VM opcode.
    580   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.nop">
    581   * Opcode definitions in The Java Virtual Machine Specification</a> */
    582  public static final short NOP              = 0;
    583
    584  /** Java VM opcode.
    585   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aconst_null">
    586   * Opcode definitions in The Java Virtual Machine Specification</a> */
    587  public static final short ACONST_NULL      = 1;
    588
    589  /** Java VM opcode.
    590   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    591   * Opcode definitions in The Java Virtual Machine Specification</a> */
    592  public static final short ICONST_M1        = 2;
    593
    594  /** Java VM opcode.
    595   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    596   * Opcode definitions in The Java Virtual Machine Specification</a> */
    597  public static final short ICONST_0         = 3;
    598
    599  /** Java VM opcode.
    600   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    601   * Opcode definitions in The Java Virtual Machine Specification</a> */
    602  public static final short ICONST_1         = 4;
    603
    604  /** Java VM opcode.
    605   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    606   * Opcode definitions in The Java Virtual Machine Specification</a> */
    607  public static final short ICONST_2         = 5;
    608
    609  /** Java VM opcode.
    610   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    611   * Opcode definitions in The Java Virtual Machine Specification</a> */
    612  public static final short ICONST_3         = 6;
    613
    614  /** Java VM opcode.
    615   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    616   * Opcode definitions in The Java Virtual Machine Specification</a> */
    617  public static final short ICONST_4         = 7;
    618
    619  /** Java VM opcode.
    620   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iconst_i">
    621   * Opcode definitions in The Java Virtual Machine Specification</a> */
    622  public static final short ICONST_5         = 8;
    623
    624  /** Java VM opcode.
    625   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l">
    626   * Opcode definitions in The Java Virtual Machine Specification</a> */
    627  public static final short LCONST_0         = 9;
    628
    629  /** Java VM opcode.
    630   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lconst_l">
    631   * Opcode definitions in The Java Virtual Machine Specification</a> */
    632  public static final short LCONST_1         = 10;
    633
    634  /** Java VM opcode.
    635   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f">
    636   * Opcode definitions in The Java Virtual Machine Specification</a> */
    637  public static final short FCONST_0         = 11;
    638
    639  /** Java VM opcode.
    640   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f">
    641   * Opcode definitions in The Java Virtual Machine Specification</a> */
    642  public static final short FCONST_1         = 12;
    643
    644  /** Java VM opcode.
    645   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fconst_f">
    646   * Opcode definitions in The Java Virtual Machine Specification</a> */
    647  public static final short FCONST_2         = 13;
    648
    649  /** Java VM opcode.
    650   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d">
    651   * Opcode definitions in The Java Virtual Machine Specification</a> */
    652  public static final short DCONST_0         = 14;
    653
    654  /** Java VM opcode.
    655   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dconst_d">
    656   * Opcode definitions in The Java Virtual Machine Specification</a> */
    657  public static final short DCONST_1         = 15;
    658
    659  /** Java VM opcode.
    660   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bipush">
    661   * Opcode definitions in The Java Virtual Machine Specification</a> */
    662  public static final short BIPUSH           = 16;
    663
    664  /** Java VM opcode.
    665   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sipush">
    666   * Opcode definitions in The Java Virtual Machine Specification</a> */
    667  public static final short SIPUSH           = 17;
    668
    669  /** Java VM opcode.
    670   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc">
    671   * Opcode definitions in The Java Virtual Machine Specification</a> */
    672  public static final short LDC              = 18;
    673
    674  /** Java VM opcode.
    675   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc_w">
    676   * Opcode definitions in The Java Virtual Machine Specification</a> */
    677  public static final short LDC_W            = 19;
    678
    679  /** Java VM opcode.
    680   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldc2_w">
    681   * Opcode definitions in The Java Virtual Machine Specification</a> */
    682  public static final short LDC2_W           = 20;
    683
    684  /** Java VM opcode.
    685   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload">
    686   * Opcode definitions in The Java Virtual Machine Specification</a> */
    687  public static final short ILOAD            = 21;
    688
    689  /** Java VM opcode.
    690   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload">
    691   * Opcode definitions in The Java Virtual Machine Specification</a> */
    692  public static final short LLOAD            = 22;
    693
    694  /** Java VM opcode.
    695   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload">
    696   * Opcode definitions in The Java Virtual Machine Specification</a> */
    697  public static final short FLOAD            = 23;
    698
    699  /** Java VM opcode.
    700   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload">
    701   * Opcode definitions in The Java Virtual Machine Specification</a> */
    702  public static final short DLOAD            = 24;
    703
    704  /** Java VM opcode.
    705   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload">
    706   * Opcode definitions in The Java Virtual Machine Specification</a> */
    707  public static final short ALOAD            = 25;
    708
    709  /** Java VM opcode.
    710   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n">
    711   * Opcode definitions in The Java Virtual Machine Specification</a> */
    712  public static final short ILOAD_0          = 26;
    713
    714  /** Java VM opcode.
    715   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n">
    716   * Opcode definitions in The Java Virtual Machine Specification</a> */
    717  public static final short ILOAD_1          = 27;
    718
    719  /** Java VM opcode.
    720   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n">
    721   * Opcode definitions in The Java Virtual Machine Specification</a> */
    722  public static final short ILOAD_2          = 28;
    723
    724  /** Java VM opcode.
    725   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iload_n">
    726   * Opcode definitions in The Java Virtual Machine Specification</a> */
    727  public static final short ILOAD_3          = 29;
    728
    729  /** Java VM opcode.
    730   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n">
    731   * Opcode definitions in The Java Virtual Machine Specification</a> */
    732  public static final short LLOAD_0          = 30;
    733
    734  /** Java VM opcode.
    735   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n">
    736   * Opcode definitions in The Java Virtual Machine Specification</a> */
    737  public static final short LLOAD_1          = 31;
    738
    739  /** Java VM opcode.
    740   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n">
    741   * Opcode definitions in The Java Virtual Machine Specification</a> */
    742  public static final short LLOAD_2          = 32;
    743
    744  /** Java VM opcode.
    745   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lload_n">
    746   * Opcode definitions in The Java Virtual Machine Specification</a> */
    747  public static final short LLOAD_3          = 33;
    748
    749  /** Java VM opcode.
    750   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n">
    751   * Opcode definitions in The Java Virtual Machine Specification</a> */
    752  public static final short FLOAD_0          = 34;
    753
    754  /** Java VM opcode.
    755   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n">
    756   * Opcode definitions in The Java Virtual Machine Specification</a> */
    757  public static final short FLOAD_1          = 35;
    758
    759  /** Java VM opcode.
    760   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n">
    761   * Opcode definitions in The Java Virtual Machine Specification</a> */
    762  public static final short FLOAD_2          = 36;
    763
    764  /** Java VM opcode.
    765   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fload_n">
    766   * Opcode definitions in The Java Virtual Machine Specification</a> */
    767  public static final short FLOAD_3          = 37;
    768
    769  /** Java VM opcode.
    770   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n">
    771   * Opcode definitions in The Java Virtual Machine Specification</a> */
    772  public static final short DLOAD_0          = 38;
    773
    774  /** Java VM opcode.
    775   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n">
    776   * Opcode definitions in The Java Virtual Machine Specification</a> */
    777  public static final short DLOAD_1          = 39;
    778
    779  /** Java VM opcode.
    780   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n">
    781   * Opcode definitions in The Java Virtual Machine Specification</a> */
    782  public static final short DLOAD_2          = 40;
    783
    784  /** Java VM opcode.
    785   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dload_n">
    786   * Opcode definitions in The Java Virtual Machine Specification</a> */
    787  public static final short DLOAD_3          = 41;
    788
    789  /** Java VM opcode.
    790   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n">
    791   * Opcode definitions in The Java Virtual Machine Specification</a> */
    792  public static final short ALOAD_0          = 42;
    793
    794  /** Java VM opcode.
    795   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n">
    796   * Opcode definitions in The Java Virtual Machine Specification</a> */
    797  public static final short ALOAD_1          = 43;
    798
    799  /** Java VM opcode.
    800   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n">
    801   * Opcode definitions in The Java Virtual Machine Specification</a> */
    802  public static final short ALOAD_2          = 44;
    803
    804  /** Java VM opcode.
    805   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aload_n">
    806   * Opcode definitions in The Java Virtual Machine Specification</a> */
    807  public static final short ALOAD_3          = 45;
    808
    809  /** Java VM opcode.
    810   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iaload">
    811   * Opcode definitions in The Java Virtual Machine Specification</a> */
    812  public static final short IALOAD           = 46;
    813
    814  /** Java VM opcode.
    815   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.laload">
    816   * Opcode definitions in The Java Virtual Machine Specification</a> */
    817  public static final short LALOAD           = 47;
    818
    819  /** Java VM opcode.
    820   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.faload">
    821   * Opcode definitions in The Java Virtual Machine Specification</a> */
    822  public static final short FALOAD           = 48;
    823
    824  /** Java VM opcode.
    825   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.daload">
    826   * Opcode definitions in The Java Virtual Machine Specification</a> */
    827  public static final short DALOAD           = 49;
    828
    829  /** Java VM opcode.
    830   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aaload">
    831   * Opcode definitions in The Java Virtual Machine Specification</a> */
    832  public static final short AALOAD           = 50;
    833
    834  /** Java VM opcode.
    835   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.baload">
    836   * Opcode definitions in The Java Virtual Machine Specification</a> */
    837  public static final short BALOAD           = 51;
    838
    839  /** Java VM opcode.
    840   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.caload">
    841   * Opcode definitions in The Java Virtual Machine Specification</a> */
    842  public static final short CALOAD           = 52;
    843
    844  /** Java VM opcode.
    845   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.saload">
    846   * Opcode definitions in The Java Virtual Machine Specification</a> */
    847  public static final short SALOAD           = 53;
    848
    849  /** Java VM opcode.
    850   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore">
    851   * Opcode definitions in The Java Virtual Machine Specification</a> */
    852  public static final short ISTORE           = 54;
    853
    854  /** Java VM opcode.
    855   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore">
    856   * Opcode definitions in The Java Virtual Machine Specification</a> */
    857  public static final short LSTORE           = 55;
    858
    859  /** Java VM opcode.
    860   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore">
    861   * Opcode definitions in The Java Virtual Machine Specification</a> */
    862  public static final short FSTORE           = 56;
    863
    864  /** Java VM opcode.
    865   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore">
    866   * Opcode definitions in The Java Virtual Machine Specification</a> */
    867  public static final short DSTORE           = 57;
    868
    869  /** Java VM opcode.
    870   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore">
    871   * Opcode definitions in The Java Virtual Machine Specification</a> */
    872  public static final short ASTORE           = 58;
    873
    874  /** Java VM opcode.
    875   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n">
    876   * Opcode definitions in The Java Virtual Machine Specification</a> */
    877  public static final short ISTORE_0         = 59;
    878
    879  /** Java VM opcode.
    880   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n">
    881   * Opcode definitions in The Java Virtual Machine Specification</a> */
    882  public static final short ISTORE_1         = 60;
    883
    884  /** Java VM opcode.
    885   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n">
    886   * Opcode definitions in The Java Virtual Machine Specification</a> */
    887  public static final short ISTORE_2         = 61;
    888
    889  /** Java VM opcode.
    890   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.istore_n">
    891   * Opcode definitions in The Java Virtual Machine Specification</a> */
    892  public static final short ISTORE_3         = 62;
    893
    894  /** Java VM opcode.
    895   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n">
    896   * Opcode definitions in The Java Virtual Machine Specification</a> */
    897  public static final short LSTORE_0         = 63;
    898
    899  /** Java VM opcode.
    900   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n">
    901   * Opcode definitions in The Java Virtual Machine Specification</a> */
    902  public static final short LSTORE_1         = 64;
    903
    904  /** Java VM opcode.
    905   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n">
    906   * Opcode definitions in The Java Virtual Machine Specification</a> */
    907  public static final short LSTORE_2         = 65;
    908
    909  /** Java VM opcode.
    910   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lstore_n">
    911   * Opcode definitions in The Java Virtual Machine Specification</a> */
    912  public static final short LSTORE_3         = 66;
    913
    914  /** Java VM opcode.
    915   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n">
    916   * Opcode definitions in The Java Virtual Machine Specification</a> */
    917  public static final short FSTORE_0         = 67;
    918
    919  /** Java VM opcode.
    920   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n">
    921   * Opcode definitions in The Java Virtual Machine Specification</a> */
    922  public static final short FSTORE_1         = 68;
    923
    924  /** Java VM opcode.
    925   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n">
    926   * Opcode definitions in The Java Virtual Machine Specification</a> */
    927  public static final short FSTORE_2         = 69;
    928
    929  /** Java VM opcode.
    930   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fstore_n">
    931   * Opcode definitions in The Java Virtual Machine Specification</a> */
    932  public static final short FSTORE_3         = 70;
    933
    934  /** Java VM opcode.
    935   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n">
    936   * Opcode definitions in The Java Virtual Machine Specification</a> */
    937  public static final short DSTORE_0         = 71;
    938
    939  /** Java VM opcode.
    940   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n">
    941   * Opcode definitions in The Java Virtual Machine Specification</a> */
    942  public static final short DSTORE_1         = 72;
    943
    944  /** Java VM opcode.
    945   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n">
    946   * Opcode definitions in The Java Virtual Machine Specification</a> */
    947  public static final short DSTORE_2         = 73;
    948
    949  /** Java VM opcode.
    950   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dstore_n">
    951   * Opcode definitions in The Java Virtual Machine Specification</a> */
    952  public static final short DSTORE_3         = 74;
    953
    954  /** Java VM opcode.
    955   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n">
    956   * Opcode definitions in The Java Virtual Machine Specification</a> */
    957  public static final short ASTORE_0         = 75;
    958
    959  /** Java VM opcode.
    960   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n">
    961   * Opcode definitions in The Java Virtual Machine Specification</a> */
    962  public static final short ASTORE_1         = 76;
    963
    964  /** Java VM opcode.
    965   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n">
    966   * Opcode definitions in The Java Virtual Machine Specification</a> */
    967  public static final short ASTORE_2         = 77;
    968
    969  /** Java VM opcode.
    970   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.astore_n">
    971   * Opcode definitions in The Java Virtual Machine Specification</a> */
    972  public static final short ASTORE_3         = 78;
    973
    974  /** Java VM opcode.
    975   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iastore">
    976   * Opcode definitions in The Java Virtual Machine Specification</a> */
    977  public static final short IASTORE          = 79;
    978
    979  /** Java VM opcode.
    980   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lastore">
    981   * Opcode definitions in The Java Virtual Machine Specification</a> */
    982  public static final short LASTORE          = 80;
    983
    984  /** Java VM opcode.
    985   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fastore">
    986   * Opcode definitions in The Java Virtual Machine Specification</a> */
    987  public static final short FASTORE          = 81;
    988
    989  /** Java VM opcode.
    990   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dastore">
    991   * Opcode definitions in The Java Virtual Machine Specification</a> */
    992  public static final short DASTORE          = 82;
    993
    994  /** Java VM opcode.
    995   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.aastore">
    996   * Opcode definitions in The Java Virtual Machine Specification</a> */
    997  public static final short AASTORE          = 83;
    998
    999  /** Java VM opcode.
    1000   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.bastore">
    1001   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1002  public static final short BASTORE          = 84;
    1003
    1004  /** Java VM opcode.
    1005   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.castore">
    1006   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1007  public static final short CASTORE          = 85;
    1008
    1009  /** Java VM opcode.
    1010   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.sastore">
    1011   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1012  public static final short SASTORE          = 86;
    1013
    1014  /** Java VM opcode.
    1015   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop">
    1016   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1017  public static final short POP              = 87;
    1018
    1019  /** Java VM opcode.
    1020   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.pop2">
    1021   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1022  public static final short POP2             = 88;
    1023
    1024  /** Java VM opcode.
    1025   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup">
    1026   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1027  public static final short DUP              = 89;
    1028
    1029  /** Java VM opcode.
    1030   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x1">
    1031   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1032  public static final short DUP_X1           = 90;
    1033
    1034  /** Java VM opcode.
    1035   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup_x2">
    1036   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1037  public static final short DUP_X2           = 91;
    1038
    1039  /** Java VM opcode.
    1040   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2">
    1041   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1042  public static final short DUP2             = 92;
    1043
    1044  /** Java VM opcode.
    1045   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x1">
    1046   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1047  public static final short DUP2_X1          = 93;
    1048
    1049  /** Java VM opcode.
    1050   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dup2_x2">
    1051   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1052  public static final short DUP2_X2          = 94;
    1053
    1054  /** Java VM opcode.
    1055   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.swap">
    1056   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1057  public static final short SWAP             = 95;
    1058
    1059  /** Java VM opcode.
    1060   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iadd">
    1061   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1062  public static final short IADD             = 96;
    1063
    1064  /** Java VM opcode.
    1065   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ladd">
    1066   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1067  public static final short LADD             = 97;
    1068
    1069  /** Java VM opcode.
    1070   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fadd">
    1071   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1072  public static final short FADD             = 98;
    1073
    1074  /** Java VM opcode.
    1075   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dadd">
    1076   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1077  public static final short DADD             = 99;
    1078
    1079  /** Java VM opcode.
    1080   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.isub">
    1081   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1082  public static final short ISUB             = 100;
    1083
    1084  /** Java VM opcode.
    1085   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lsub">
    1086   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1087  public static final short LSUB             = 101;
    1088
    1089  /** Java VM opcode.
    1090   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fsub">
    1091   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1092  public static final short FSUB             = 102;
    1093
    1094  /** Java VM opcode.
    1095   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dsub">
    1096   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1097  public static final short DSUB             = 103;
    1098
    1099  /** Java VM opcode.
    1100   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.imul">
    1101   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1102  public static final short IMUL             = 104;
    1103
    1104  /** Java VM opcode.
    1105   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lmul">
    1106   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1107  public static final short LMUL             = 105;
    1108
    1109  /** Java VM opcode.
    1110   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fmul">
    1111   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1112  public static final short FMUL             = 106;
    1113
    1114  /** Java VM opcode.
    1115   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dmul">
    1116   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1117  public static final short DMUL             = 107;
    1118
    1119  /** Java VM opcode.
    1120   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.idiv">
    1121   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1122  public static final short IDIV             = 108;
    1123
    1124  /** Java VM opcode.
    1125   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ldiv">
    1126   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1127  public static final short LDIV             = 109;
    1128
    1129  /** Java VM opcode.
    1130   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fdiv">
    1131   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1132  public static final short FDIV             = 110;
    1133
    1134  /** Java VM opcode.
    1135   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ddiv">
    1136   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1137  public static final short DDIV             = 111;
    1138
    1139  /** Java VM opcode.
    1140   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.irem">
    1141   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1142  public static final short IREM             = 112;
    1143
    1144  /** Java VM opcode.
    1145   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lrem">
    1146   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1147  public static final short LREM             = 113;
    1148
    1149  /** Java VM opcode.
    1150   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.frem">
    1151   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1152  public static final short FREM             = 114;
    1153
    1154  /** Java VM opcode.
    1155   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.drem">
    1156   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1157  public static final short DREM             = 115;
    1158
    1159  /** Java VM opcode.
    1160   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ineg">
    1161   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1162  public static final short INEG             = 116;
    1163
    1164  /** Java VM opcode.
    1165   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lneg">
    1166   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1167  public static final short LNEG             = 117;
    1168
    1169  /** Java VM opcode.
    1170   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fneg">
    1171   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1172  public static final short FNEG             = 118;
    1173
    1174  /** Java VM opcode.
    1175   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dneg">
    1176   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1177  public static final short DNEG             = 119;
    1178
    1179  /** Java VM opcode.
    1180   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishl">
    1181   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1182  public static final short ISHL             = 120;
    1183
    1184  /** Java VM opcode.
    1185   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshl">
    1186   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1187  public static final short LSHL             = 121;
    1188
    1189  /** Java VM opcode.
    1190   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ishr">
    1191   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1192  public static final short ISHR             = 122;
    1193
    1194  /** Java VM opcode.
    1195   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lshr">
    1196   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1197  public static final short LSHR             = 123;
    1198
    1199  /** Java VM opcode.
    1200   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iushr">
    1201   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1202  public static final short IUSHR            = 124;
    1203
    1204  /** Java VM opcode.
    1205   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lushr">
    1206   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1207  public static final short LUSHR            = 125;
    1208
    1209  /** Java VM opcode.
    1210   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iand">
    1211   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1212  public static final short IAND             = 126;
    1213
    1214  /** Java VM opcode.
    1215   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.land">
    1216   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1217  public static final short LAND             = 127;
    1218
    1219  /** Java VM opcode.
    1220   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ior">
    1221   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1222  public static final short IOR              = 128;
    1223
    1224  /** Java VM opcode.
    1225   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lor">
    1226   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1227  public static final short LOR              = 129;
    1228
    1229  /** Java VM opcode.
    1230   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ixor">
    1231   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1232  public static final short IXOR             = 130;
    1233
    1234  /** Java VM opcode.
    1235   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lxor">
    1236   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1237  public static final short LXOR             = 131;
    1238
    1239  /** Java VM opcode.
    1240   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iinc">
    1241   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1242  public static final short IINC             = 132;
    1243
    1244  /** Java VM opcode.
    1245   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2l">
    1246   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1247  public static final short I2L              = 133;
    1248
    1249  /** Java VM opcode.
    1250   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2f">
    1251   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1252  public static final short I2F              = 134;
    1253
    1254  /** Java VM opcode.
    1255   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2d">
    1256   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1257  public static final short I2D              = 135;
    1258
    1259  /** Java VM opcode.
    1260   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2i">
    1261   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1262  public static final short L2I              = 136;
    1263
    1264  /** Java VM opcode.
    1265   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2f">
    1266   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1267  public static final short L2F              = 137;
    1268
    1269  /** Java VM opcode.
    1270   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.l2d">
    1271   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1272  public static final short L2D              = 138;
    1273
    1274  /** Java VM opcode.
    1275   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2i">
    1276   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1277  public static final short F2I              = 139;
    1278
    1279  /** Java VM opcode.
    1280   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2l">
    1281   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1282  public static final short F2L              = 140;
    1283
    1284  /** Java VM opcode.
    1285   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.f2d">
    1286   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1287  public static final short F2D              = 141;
    1288
    1289  /** Java VM opcode.
    1290   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2i">
    1291   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1292  public static final short D2I              = 142;
    1293
    1294  /** Java VM opcode.
    1295   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2l">
    1296   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1297  public static final short D2L              = 143;
    1298
    1299  /** Java VM opcode.
    1300   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.d2f">
    1301   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1302  public static final short D2F              = 144;
    1303
    1304  /** Java VM opcode.
    1305   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2b">
    1306   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1307  public static final short I2B              = 145;
    1308
    1309  /** Java VM opcode.
    1310   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5">
    1311   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1312  public static final short INT2BYTE         = 145; // Old notation
    1313
    1314  /** Java VM opcode.
    1315   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2c">
    1316   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1317  public static final short I2C              = 146;
    1318
    1319  /** Java VM opcode.
    1320   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5">
    1321   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1322  public static final short INT2CHAR         = 146; // Old notation
    1323
    1324  /** Java VM opcode.
    1325   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.i2s">
    1326   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1327  public static final short I2S              = 147;
    1328
    1329  /** Java VM opcode.
    1330   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5">
    1331   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1332  public static final short INT2SHORT        = 147; // Old notation
    1333
    1334  /** Java VM opcode.
    1335   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lcmp">
    1336   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1337  public static final short LCMP             = 148;
    1338
    1339  /** Java VM opcode.
    1340   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpl">
    1341   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1342  public static final short FCMPL            = 149;
    1343
    1344  /** Java VM opcode.
    1345   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.fcmpg">
    1346   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1347  public static final short FCMPG            = 150;
    1348
    1349  /** Java VM opcode.
    1350   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpl">
    1351   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1352  public static final short DCMPL            = 151;
    1353
    1354  /** Java VM opcode.
    1355   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dcmpg">
    1356   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1357  public static final short DCMPG            = 152;
    1358
    1359  /** Java VM opcode.
    1360   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifeq">
    1361   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1362  public static final short IFEQ             = 153;
    1363
    1364  /** Java VM opcode.
    1365   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifne">
    1366   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1367  public static final short IFNE             = 154;
    1368
    1369  /** Java VM opcode.
    1370   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.iflt">
    1371   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1372  public static final short IFLT             = 155;
    1373
    1374  /** Java VM opcode.
    1375   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifge">
    1376   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1377  public static final short IFGE             = 156;
    1378
    1379  /** Java VM opcode.
    1380   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifgt">
    1381   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1382  public static final short IFGT             = 157;
    1383
    1384  /** Java VM opcode.
    1385   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifle">
    1386   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1387  public static final short IFLE             = 158;
    1388
    1389  /** Java VM opcode.
    1390   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1391   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1392  public static final short IF_ICMPEQ        = 159;
    1393
    1394  /** Java VM opcode.
    1395   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1396   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1397  public static final short IF_ICMPNE        = 160;
    1398
    1399  /** Java VM opcode.
    1400   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1401   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1402  public static final short IF_ICMPLT        = 161;
    1403
    1404  /** Java VM opcode.
    1405   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1406   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1407  public static final short IF_ICMPGE        = 162;
    1408
    1409  /** Java VM opcode.
    1410   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1411   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1412  public static final short IF_ICMPGT        = 163;
    1413
    1414  /** Java VM opcode.
    1415   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_icmp_cond">
    1416   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1417  public static final short IF_ICMPLE        = 164;
    1418
    1419  /** Java VM opcode.
    1420   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond">
    1421   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1422  public static final short IF_ACMPEQ        = 165;
    1423
    1424  /** Java VM opcode.
    1425   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.if_acmp_cond">
    1426   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1427  public static final short IF_ACMPNE        = 166;
    1428
    1429  /** Java VM opcode.
    1430   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto">
    1431   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1432  public static final short GOTO             = 167;
    1433
    1434  /** Java VM opcode.
    1435   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr">
    1436   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1437  public static final short JSR              = 168;
    1438
    1439  /** Java VM opcode.
    1440   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ret">
    1441   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1442  public static final short RET              = 169;
    1443
    1444  /** Java VM opcode.
    1445   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.tableswitch">
    1446   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1447  public static final short TABLESWITCH      = 170;
    1448
    1449  /** Java VM opcode.
    1450   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lookupswitch">
    1451   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1452  public static final short LOOKUPSWITCH     = 171;
    1453
    1454  /** Java VM opcode.
    1455   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ireturn">
    1456   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1457  public static final short IRETURN          = 172;
    1458
    1459  /** Java VM opcode.
    1460   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.lreturn">
    1461   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1462  public static final short LRETURN          = 173;
    1463
    1464  /** Java VM opcode.
    1465   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.freturn">
    1466   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1467  public static final short FRETURN          = 174;
    1468
    1469  /** Java VM opcode.
    1470   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.dreturn">
    1471   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1472  public static final short DRETURN          = 175;
    1473
    1474  /** Java VM opcode.
    1475   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.areturn">
    1476   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1477  public static final short ARETURN          = 176;
    1478
    1479  /** Java VM opcode.
    1480   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.return">
    1481   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1482  public static final short RETURN           = 177;
    1483
    1484  /** Java VM opcode.
    1485   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getstatic">
    1486   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1487  public static final short GETSTATIC        = 178;
    1488
    1489  /** Java VM opcode.
    1490   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putstatic">
    1491   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1492  public static final short PUTSTATIC        = 179;
    1493
    1494  /** Java VM opcode.
    1495   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.getfield">
    1496   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1497  public static final short GETFIELD         = 180;
    1498
    1499  /** Java VM opcode.
    1500   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.putfield">
    1501   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1502  public static final short PUTFIELD         = 181;
    1503
    1504  /** Java VM opcode.
    1505   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokevirtual">
    1506   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1507  public static final short INVOKEVIRTUAL    = 182;
    1508
    1509  /** Java VM opcode.
    1510   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokespecial">
    1511   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1512  public static final short INVOKESPECIAL    = 183;
    1513
    1514  /** Java VM opcode.
    1515   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5">
    1516   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1517  public static final short INVOKENONVIRTUAL = 183; // Old name in JDK 1.0
    1518
    1519  /** Java VM opcode.
    1520   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokestatic">
    1521   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1522  public static final short INVOKESTATIC     = 184;
    1523
    1524  /** Java VM opcode.
    1525   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokeinterface">
    1526   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1527  public static final short INVOKEINTERFACE  = 185;
    1528
    1529  /** Java VM opcode.
    1530   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.invokedynamic">
    1531   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1532  public static final short INVOKEDYNAMIC    = 186;
    1533
    1534  /** Java VM opcode.
    1535   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.new">
    1536   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1537  public static final short NEW              = 187;
    1538
    1539  /** Java VM opcode.
    1540   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.newarray">
    1541   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1542  public static final short NEWARRAY         = 188;
    1543
    1544  /** Java VM opcode.
    1545   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.anewarray">
    1546   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1547  public static final short ANEWARRAY        = 189;
    1548
    1549  /** Java VM opcode.
    1550   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.arraylength">
    1551   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1552  public static final short ARRAYLENGTH      = 190;
    1553
    1554  /** Java VM opcode.
    1555   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.athrow">
    1556   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1557  public static final short ATHROW           = 191;
    1558
    1559  /** Java VM opcode.
    1560   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.checkcast">
    1561   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1562  public static final short CHECKCAST        = 192;
    1563
    1564  /** Java VM opcode.
    1565   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.instanceof">
    1566   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1567  public static final short INSTANCEOF       = 193;
    1568
    1569  /** Java VM opcode.
    1570   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorenter">
    1571   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1572  public static final short MONITORENTER     = 194;
    1573
    1574  /** Java VM opcode.
    1575   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.monitorexit">
    1576   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1577  public static final short MONITOREXIT      = 195;
    1578
    1579  /** Java VM opcode.
    1580   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.wide">
    1581   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1582  public static final short WIDE             = 196;
    1583
    1584  /** Java VM opcode.
    1585   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.multianewarray">
    1586   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1587  public static final short MULTIANEWARRAY   = 197;
    1588
    1589  /** Java VM opcode.
    1590   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnull">
    1591   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1592  public static final short IFNULL           = 198;
    1593
    1594  /** Java VM opcode.
    1595   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.ifnonnull">
    1596   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1597  public static final short IFNONNULL        = 199;
    1598
    1599  /** Java VM opcode.
    1600   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.goto_w">
    1601   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1602  public static final short GOTO_W           = 200;
    1603
    1604  /** Java VM opcode.
    1605   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.5.jsr_w">
    1606   * Opcode definitions in The Java Virtual Machine Specification</a> */
    1607  public static final short JSR_W            = 201;
    1608
    1609  /** JVM internal opcode.
    1610   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2">
    1611   * Reserved opcodes in the Java Virtual Machine Specification</a> */
    1612  public static final short BREAKPOINT                = 202;
    1613
    1614  /** JVM internal opcode.
    1615   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1616   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1617   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1618   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1619  public static final short LDC_QUICK                 = 203;
    1620
    1621  /** JVM internal opcode.
    1622   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1623   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1624   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1625   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1626  public static final short LDC_W_QUICK               = 204;
    1627
    1628  /** JVM internal opcode.
    1629   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1630   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1631   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1632   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1633  public static final short LDC2_W_QUICK              = 205;
    1634
    1635  /** JVM internal opcode.
    1636   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1637   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1638   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1639   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1640  public static final short GETFIELD_QUICK            = 206;
    1641
    1642  /** JVM internal opcode.
    1643   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1644   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1645   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1646   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1647  public static final short PUTFIELD_QUICK            = 207;
    1648
    1649  /** JVM internal opcode.
    1650   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1651   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1652   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1653   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1654  public static final short GETFIELD2_QUICK           = 208;
    1655
    1656  /** JVM internal opcode.
    1657   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1658   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1659   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1660   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1661  public static final short PUTFIELD2_QUICK           = 209;
    1662
    1663  /** JVM internal opcode.
    1664   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1665   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1666   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1667   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1668  public static final short GETSTATIC_QUICK           = 210;
    1669
    1670  /** JVM internal opcode.
    1671   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1672   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1673   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1674   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1675  public static final short PUTSTATIC_QUICK           = 211;
    1676
    1677  /** JVM internal opcode.
    1678   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1679   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1680   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1681   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1682  public static final short GETSTATIC2_QUICK          = 212;
    1683
    1684  /** JVM internal opcode.
    1685   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1686   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1687   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1688   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1689  public static final short PUTSTATIC2_QUICK          = 213;
    1690
    1691  /** JVM internal opcode.
    1692   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1693   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1694   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1695   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1696  public static final short INVOKEVIRTUAL_QUICK       = 214;
    1697
    1698  /** JVM internal opcode.
    1699   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1700   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1701   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1702   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1703  public static final short INVOKENONVIRTUAL_QUICK    = 215;
    1704
    1705  /** JVM internal opcode.
    1706   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1707   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1708   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1709   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1710  public static final short INVOKESUPER_QUICK         = 216;
    1711
    1712  /** JVM internal opcode.
    1713   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1714   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1715   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1716   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1717  public static final short INVOKESTATIC_QUICK        = 217;
    1718
    1719  /** JVM internal opcode.
    1720   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1721   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1722   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1723   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1724  public static final short INVOKEINTERFACE_QUICK     = 218;
    1725
    1726  /** JVM internal opcode.
    1727   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1728   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1729   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1730   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1731  public static final short INVOKEVIRTUALOBJECT_QUICK = 219;
    1732
    1733  /** JVM internal opcode.
    1734   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1735   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1736   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1737   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1738  public static final short NEW_QUICK                 = 221;
    1739
    1740  /** JVM internal opcode.
    1741   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1742   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1743   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1744   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1745  public static final short ANEWARRAY_QUICK           = 222;
    1746
    1747  /** JVM internal opcode.
    1748   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1749   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1750   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1751   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1752  public static final short MULTIANEWARRAY_QUICK      = 223;
    1753
    1754  /** JVM internal opcode.
    1755   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1756   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1757   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1758   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1759  public static final short CHECKCAST_QUICK           = 224;
    1760
    1761  /** JVM internal opcode.
    1762   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1763   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1764   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1765   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1766  public static final short INSTANCEOF_QUICK          = 225;
    1767
    1768  /** JVM internal opcode.
    1769   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1770   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1771   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1772   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1773  public static final short INVOKEVIRTUAL_QUICK_W     = 226;
    1774
    1775  /** JVM internal opcode.
    1776   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1777   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1778   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1779   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1780  public static final short GETFIELD_QUICK_W          = 227;
    1781
    1782  /** JVM internal opcode.
    1783   * @see <a href="https://web.archive.org/web/20120108031230/http://java.sun.com/docs/books/jvms/first_edition/html/Quick.doc.html">
    1784   * Specification of _quick opcodes in the Java Virtual Machine Specification (version 1)</a>
    1785   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se5.0/html/ChangesAppendix.doc.html#448885">
    1786   * Why the _quick opcodes were removed from the second version of the Java Virtual Machine Specification.</a> */
    1787  public static final short PUTFIELD_QUICK_W          = 228;
    1788
    1789  /** JVM internal opcode.
    1790   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2">
    1791   * Reserved opcodes in the Java Virtual Machine Specification</a> */
    1792  public static final short IMPDEP1                   = 254;
    1793
    1794  /** JVM internal opcode.
    1795   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-6.html#jvms-6.2">
    1796   * Reserved opcodes in the Java Virtual Machine Specification</a> */
    1797  public static final short IMPDEP2                   = 255;
    1798
    1799  /**
    1800   * BCEL virtual instruction for pushing an arbitrary data type onto the stack.  Will be converted to the appropriate JVM
    1801   * opcode when the class is dumped.
    1802   */
    1803  public static final short PUSH             = 4711;
    1804
    1805  /**
    1806   * BCEL virtual instruction for either LOOKUPSWITCH or TABLESWITCH.  Will be converted to the appropriate JVM
    1807   * opcode when the class is dumped.
    1808   */
    1809  public static final short SWITCH           = 4712;
    1810
    1811  /** Illegal opcode. */
    1812  public static final short  UNDEFINED      = -1;
    1813
    1814  /** Illegal opcode. */
    1815  public static final short  UNPREDICTABLE  = -2;
    1816
    1817  /** Illegal opcode. */
    1818  public static final short  RESERVED       = -3;
    1819
    1820  /** Mnemonic for an illegal opcode. */
    1821  public static final String ILLEGAL_OPCODE = "<illegal opcode>";
    1822
    1823  /** Mnemonic for an illegal type. */
    1824  public static final String ILLEGAL_TYPE   = "<illegal type>";
    1825
    1826  /** Boolean data type.
    1827   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1828   * Static Constraints in the Java Virtual Machine Specification</a> */
    1829  public static final byte T_BOOLEAN = 4;
    1830
    1831  /** Char data type.
    1832   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1833   * Static Constraints in the Java Virtual Machine Specification</a> */
    1834  public static final byte T_CHAR    = 5;
    1835
    1836  /** Float data type.
    1837   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1838   * Static Constraints in the Java Virtual Machine Specification</a> */
    1839  public static final byte T_FLOAT   = 6;
    1840
    1841  /** Double data type.
    1842   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1843   * Static Constraints in the Java Virtual Machine Specification</a> */
    1844  public static final byte T_DOUBLE  = 7;
    1845
    1846  /** Byte data type.
    1847   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1848   * Static Constraints in the Java Virtual Machine Specification</a> */
    1849  public static final byte T_BYTE    = 8;
    1850
    1851  /** Short data type.
    1852   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1853   * Static Constraints in the Java Virtual Machine Specification</a> */
    1854  public static final byte T_SHORT   = 9;
    1855
    1856  /** Int data type.
    1857   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1858   * Static Constraints in the Java Virtual Machine Specification</a> */
    1859  public static final byte T_INT     = 10;
    1860
    1861  /** Long data type.
    1862   * @see <a href="https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.9.1-120-P">
    1863   * Static Constraints in the Java Virtual Machine Specification</a> */
    1864  public static final byte T_LONG    = 11;
    1865
    1866  /** Void data type (non-standard). */
    1867  public static final byte T_VOID      = 12; // Non-standard
    1868
    1869  /** Array data type. */
    1870  public static final byte T_ARRAY     = 13;
    1871
    1872  /** Object data type. */
    1873  public static final byte T_OBJECT    = 14;
    1874
    1875  /** Reference data type (deprecated). */
    1876  public static final byte T_REFERENCE = 14; // Deprecated
    1877
    1878  /** Unknown data type. */
    1879  public static final byte T_UNKNOWN   = 15;
    1880
    1881  /** Address data type. */
    1882  public static final byte T_ADDRESS   = 16;
    1883
    1884  /** The primitive type names corresponding to the T_XX constants,
    1885   * e.g., TYPE_NAMES[T_INT] = "int"
    1886   */
    1887  private static final String[] TYPE_NAMES = {
    1888    ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE, ILLEGAL_TYPE,
    1889    "boolean", "char", "float", "double", "byte", "short", "int", "long",
    1890    "void", "array", "object", "unknown", "address"
    1891  };
    1892
    1893  /**
    1894   * The primitive type names corresponding to the T_XX constants,
    1895   * e.g., TYPE_NAMES[T_INT] = "int"
    1896   * @param index
    1897   * @return the type name
    1898   * @since 6.0
    1899   */
    1900  public static String getTypeName(final int index) {
    1901      return TYPE_NAMES[index];
    1902  }
    1903
    1904  /** The primitive class names corresponding to the T_XX constants,
    1905   * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
    1906   */
    1907  private static final String[] CLASS_TYPE_NAMES = {
    1908    ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE, ILLEGAL_TYPE,
    1909    "java.lang.Boolean", "java.lang.Character", "java.lang.Float",
    1910    "java.lang.Double", "java.lang.Byte", "java.lang.Short",
    1911    "java.lang.Integer", "java.lang.Long", "java.lang.Void",
    1912    ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE,  ILLEGAL_TYPE
    1913  };
    1914
    1915  /**
    1916   * The primitive class names corresponding to the T_XX constants,
    1917   * e.g., CLASS_TYPE_NAMES[T_INT] = "java.lang.Integer"
    1918   * @param index
    1919   * @return the class name
    1920   * @since 6.0
    1921   */
    1922  public static String getClassTypeName(final int index) {
    1923      return CLASS_TYPE_NAMES[index];
    1924  }
    1925
    1926  /** The signature characters corresponding to primitive types,
    1927   * e.g., SHORT_TYPE_NAMES[T_INT] = "I"
    1928   */
    1929  private static final String[] SHORT_TYPE_NAMES = {
    1930    ILLEGAL_TYPE, ILLEGAL_TYPE,  ILLEGAL_TYPE, ILLEGAL_TYPE,
    1931    "Z", "C", "F", "D", "B", "S", "I", "J",
    1932    "V", ILLEGAL_TYPE, ILLEGAL_TYPE, ILLEGAL_TYPE
    1933  };
    1934
    1935  /**
    1936   *
    1937   * @param index
    1938   * @return the short type name
    1939   * @since 6.0
    1940   */
    1941  public static String getShortTypeName(final int index) {
    1942      return SHORT_TYPE_NAMES[index];
    1943  }
    1944
    1945
    1946  /**
    1947   * Number of byte code operands for each opcode, i.e., number of bytes after the tag byte
    1948   * itself.  Indexed by opcode, so NO_OF_OPERANDS[BIPUSH] = the number of operands for a bipush
    1949   * instruction.
    1950   */
    1951  private static final short[] NO_OF_OPERANDS = {
    1952    0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/,
    1953    0/*iconst_1*/, 0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/,
    1954    0/*iconst_5*/, 0/*lconst_0*/, 0/*lconst_1*/, 0/*fconst_0*/,
    1955    0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/, 0/*dconst_1*/,
    1956    1/*bipush*/, 2/*sipush*/, 1/*ldc*/, 2/*ldc_w*/, 2/*ldc2_w*/,
    1957    1/*iload*/, 1/*lload*/, 1/*fload*/, 1/*dload*/, 1/*aload*/,
    1958    0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/, 0/*iload_3*/,
    1959    0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/,
    1960    0/*fload_0*/, 0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/,
    1961    0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/, 0/*dload_3*/,
    1962    0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/,
    1963    0/*iaload*/, 0/*laload*/, 0/*faload*/, 0/*daload*/,
    1964    0/*aaload*/, 0/*baload*/, 0/*caload*/, 0/*saload*/,
    1965    1/*istore*/, 1/*lstore*/, 1/*fstore*/, 1/*dstore*/,
    1966    1/*astore*/, 0/*istore_0*/, 0/*istore_1*/, 0/*istore_2*/,
    1967    0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/, 0/*lstore_2*/,
    1968    0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
    1969    0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/,
    1970    0/*dstore_3*/, 0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/,
    1971    0/*astore_3*/, 0/*iastore*/, 0/*lastore*/, 0/*fastore*/,
    1972    0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/,
    1973    0/*sastore*/, 0/*pop*/, 0/*pop2*/, 0/*dup*/, 0/*dup_x1*/,
    1974    0/*dup_x2*/, 0/*dup2*/, 0/*dup2_x1*/, 0/*dup2_x2*/, 0/*swap*/,
    1975    0/*iadd*/, 0/*ladd*/, 0/*fadd*/, 0/*dadd*/, 0/*isub*/,
    1976    0/*lsub*/, 0/*fsub*/, 0/*dsub*/, 0/*imul*/, 0/*lmul*/,
    1977    0/*fmul*/, 0/*dmul*/, 0/*idiv*/, 0/*ldiv*/, 0/*fdiv*/,
    1978    0/*ddiv*/, 0/*irem*/, 0/*lrem*/, 0/*frem*/, 0/*drem*/,
    1979    0/*ineg*/, 0/*lneg*/, 0/*fneg*/, 0/*dneg*/, 0/*ishl*/,
    1980    0/*lshl*/, 0/*ishr*/, 0/*lshr*/, 0/*iushr*/, 0/*lushr*/,
    1981    0/*iand*/, 0/*land*/, 0/*ior*/, 0/*lor*/, 0/*ixor*/, 0/*lxor*/,
    1982    2/*iinc*/, 0/*i2l*/, 0/*i2f*/, 0/*i2d*/, 0/*l2i*/, 0/*l2f*/,
    1983    0/*l2d*/, 0/*f2i*/, 0/*f2l*/, 0/*f2d*/, 0/*d2i*/, 0/*d2l*/,
    1984    0/*d2f*/, 0/*i2b*/, 0/*i2c*/, 0/*i2s*/, 0/*lcmp*/, 0/*fcmpl*/,
    1985    0/*fcmpg*/, 0/*dcmpl*/, 0/*dcmpg*/, 2/*ifeq*/, 2/*ifne*/,
    1986    2/*iflt*/, 2/*ifge*/, 2/*ifgt*/, 2/*ifle*/, 2/*if_icmpeq*/,
    1987    2/*if_icmpne*/, 2/*if_icmplt*/, 2/*if_icmpge*/, 2/*if_icmpgt*/,
    1988    2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/, 2/*goto*/,
    1989    2/*jsr*/, 1/*ret*/, UNPREDICTABLE/*tableswitch*/, UNPREDICTABLE/*lookupswitch*/,
    1990    0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
    1991    0/*dreturn*/, 0/*areturn*/, 0/*return*/,
    1992    2/*getstatic*/, 2/*putstatic*/, 2/*getfield*/,
    1993    2/*putfield*/, 2/*invokevirtual*/, 2/*invokespecial*/, 2/*invokestatic*/,
    1994    4/*invokeinterface*/, 4/*invokedynamic*/, 2/*new*/,
    1995    1/*newarray*/, 2/*anewarray*/,
    1996    0/*arraylength*/, 0/*athrow*/, 2/*checkcast*/,
    1997    2/*instanceof*/, 0/*monitorenter*/,
    1998    0/*monitorexit*/, UNPREDICTABLE/*wide*/, 3/*multianewarray*/,
    1999    2/*ifnull*/, 2/*ifnonnull*/, 4/*goto_w*/,
    2000    4/*jsr_w*/, 0/*breakpoint*/, UNDEFINED,
    2001    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2002    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2003    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2004    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2005    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2006    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2007    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2008    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2009    UNDEFINED, UNDEFINED, RESERVED/*impdep1*/, RESERVED/*impdep2*/
    2010  };
    2011
    2012  /**
    2013   *
    2014   * @param index
    2015   * @return Number of byte code operands
    2016   * @since 6.0
    2017   */
    2018  public static short getNoOfOperands(final int index) {
    2019      return NO_OF_OPERANDS[index];
    2020  }
    2021
    2022  /**
    2023   * How the byte code operands are to be interpreted for each opcode.
    2024   * Indexed by opcode.  TYPE_OF_OPERANDS[ILOAD] = an array of shorts
    2025   * describing the data types for the instruction.
    2026   */
    2027  private static final short[][] TYPE_OF_OPERANDS = {
    2028    {}/*nop*/, {}/*aconst_null*/, {}/*iconst_m1*/, {}/*iconst_0*/,
    2029    {}/*iconst_1*/, {}/*iconst_2*/, {}/*iconst_3*/, {}/*iconst_4*/,
    2030    {}/*iconst_5*/, {}/*lconst_0*/, {}/*lconst_1*/, {}/*fconst_0*/,
    2031    {}/*fconst_1*/, {}/*fconst_2*/, {}/*dconst_0*/, {}/*dconst_1*/,
    2032    {T_BYTE}/*bipush*/, {T_SHORT}/*sipush*/, {T_BYTE}/*ldc*/,
    2033    {T_SHORT}/*ldc_w*/, {T_SHORT}/*ldc2_w*/,
    2034    {T_BYTE}/*iload*/, {T_BYTE}/*lload*/, {T_BYTE}/*fload*/,
    2035    {T_BYTE}/*dload*/, {T_BYTE}/*aload*/, {}/*iload_0*/,
    2036    {}/*iload_1*/, {}/*iload_2*/, {}/*iload_3*/, {}/*lload_0*/,
    2037    {}/*lload_1*/, {}/*lload_2*/, {}/*lload_3*/, {}/*fload_0*/,
    2038    {}/*fload_1*/, {}/*fload_2*/, {}/*fload_3*/, {}/*dload_0*/,
    2039    {}/*dload_1*/, {}/*dload_2*/, {}/*dload_3*/, {}/*aload_0*/,
    2040    {}/*aload_1*/, {}/*aload_2*/, {}/*aload_3*/, {}/*iaload*/,
    2041    {}/*laload*/, {}/*faload*/, {}/*daload*/, {}/*aaload*/,
    2042    {}/*baload*/, {}/*caload*/, {}/*saload*/, {T_BYTE}/*istore*/,
    2043    {T_BYTE}/*lstore*/, {T_BYTE}/*fstore*/, {T_BYTE}/*dstore*/,
    2044    {T_BYTE}/*astore*/, {}/*istore_0*/, {}/*istore_1*/,
    2045    {}/*istore_2*/, {}/*istore_3*/, {}/*lstore_0*/, {}/*lstore_1*/,
    2046    {}/*lstore_2*/, {}/*lstore_3*/, {}/*fstore_0*/, {}/*fstore_1*/,
    2047    {}/*fstore_2*/, {}/*fstore_3*/, {}/*dstore_0*/, {}/*dstore_1*/,
    2048    {}/*dstore_2*/, {}/*dstore_3*/, {}/*astore_0*/, {}/*astore_1*/,
    2049    {}/*astore_2*/, {}/*astore_3*/, {}/*iastore*/, {}/*lastore*/,
    2050    {}/*fastore*/, {}/*dastore*/, {}/*aastore*/, {}/*bastore*/,
    2051    {}/*castore*/, {}/*sastore*/, {}/*pop*/, {}/*pop2*/, {}/*dup*/,
    2052    {}/*dup_x1*/, {}/*dup_x2*/, {}/*dup2*/, {}/*dup2_x1*/,
    2053    {}/*dup2_x2*/, {}/*swap*/, {}/*iadd*/, {}/*ladd*/, {}/*fadd*/,
    2054    {}/*dadd*/, {}/*isub*/, {}/*lsub*/, {}/*fsub*/, {}/*dsub*/,
    2055    {}/*imul*/, {}/*lmul*/, {}/*fmul*/, {}/*dmul*/, {}/*idiv*/,
    2056    {}/*ldiv*/, {}/*fdiv*/, {}/*ddiv*/, {}/*irem*/, {}/*lrem*/,
    2057    {}/*frem*/, {}/*drem*/, {}/*ineg*/, {}/*lneg*/, {}/*fneg*/,
    2058    {}/*dneg*/, {}/*ishl*/, {}/*lshl*/, {}/*ishr*/, {}/*lshr*/,
    2059    {}/*iushr*/, {}/*lushr*/, {}/*iand*/, {}/*land*/, {}/*ior*/,
    2060    {}/*lor*/, {}/*ixor*/, {}/*lxor*/, {T_BYTE, T_BYTE}/*iinc*/,
    2061    {}/*i2l*/, {}/*i2f*/, {}/*i2d*/, {}/*l2i*/, {}/*l2f*/, {}/*l2d*/,
    2062    {}/*f2i*/, {}/*f2l*/, {}/*f2d*/, {}/*d2i*/, {}/*d2l*/, {}/*d2f*/,
    2063    {}/*i2b*/, {}/*i2c*/, {}/*i2s*/, {}/*lcmp*/, {}/*fcmpl*/,
    2064    {}/*fcmpg*/, {}/*dcmpl*/, {}/*dcmpg*/, {T_SHORT}/*ifeq*/,
    2065    {T_SHORT}/*ifne*/, {T_SHORT}/*iflt*/, {T_SHORT}/*ifge*/,
    2066    {T_SHORT}/*ifgt*/, {T_SHORT}/*ifle*/, {T_SHORT}/*if_icmpeq*/,
    2067    {T_SHORT}/*if_icmpne*/, {T_SHORT}/*if_icmplt*/,
    2068    {T_SHORT}/*if_icmpge*/, {T_SHORT}/*if_icmpgt*/,
    2069    {T_SHORT}/*if_icmple*/, {T_SHORT}/*if_acmpeq*/,
    2070    {T_SHORT}/*if_acmpne*/, {T_SHORT}/*goto*/, {T_SHORT}/*jsr*/,
    2071    {T_BYTE}/*ret*/, {}/*tableswitch*/, {}/*lookupswitch*/,
    2072    {}/*ireturn*/, {}/*lreturn*/, {}/*freturn*/, {}/*dreturn*/,
    2073    {}/*areturn*/, {}/*return*/, {T_SHORT}/*getstatic*/,
    2074    {T_SHORT}/*putstatic*/, {T_SHORT}/*getfield*/,
    2075    {T_SHORT}/*putfield*/, {T_SHORT}/*invokevirtual*/,
    2076    {T_SHORT}/*invokespecial*/, {T_SHORT}/*invokestatic*/,
    2077    {T_SHORT, T_BYTE, T_BYTE}/*invokeinterface*/, {T_SHORT, T_BYTE, T_BYTE}/*invokedynamic*/,
    2078    {T_SHORT}/*new*/, {T_BYTE}/*newarray*/,
    2079    {T_SHORT}/*anewarray*/, {}/*arraylength*/, {}/*athrow*/,
    2080    {T_SHORT}/*checkcast*/, {T_SHORT}/*instanceof*/,
    2081    {}/*monitorenter*/, {}/*monitorexit*/, {T_BYTE}/*wide*/,
    2082    {T_SHORT, T_BYTE}/*multianewarray*/, {T_SHORT}/*ifnull*/,
    2083    {T_SHORT}/*ifnonnull*/, {T_INT}/*goto_w*/, {T_INT}/*jsr_w*/,
    2084    {}/*breakpoint*/, {}, {}, {}, {}, {}, {}, {},
    2085    {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    2086    {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    2087    {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {},
    2088    {}/*impdep1*/, {}/*impdep2*/
    2089  };
    2090
    2091  /**
    2092   * @since 6.0
    2093   */
    2094  public static short getOperandType(final int opcode, final int index) {
    2095      return TYPE_OF_OPERANDS[opcode][index];
    2096  }
    2097
    2098  /**
    2099   * @since 6.0
    2100   */
    2101  public static long getOperandTypeCount(final int opcode) {
    2102      return TYPE_OF_OPERANDS[opcode].length;
    2103  }
    2104
    2105  /**
    2106   * Names of opcodes.  Indexed by opcode.  OPCODE_NAMES[ALOAD] = "aload".
    2107   */
    2108  private static final String[] OPCODE_NAMES = {
    2109    "nop", "aconst_null", "iconst_m1", "iconst_0", "iconst_1",
    2110    "iconst_2", "iconst_3", "iconst_4", "iconst_5", "lconst_0",
    2111    "lconst_1", "fconst_0", "fconst_1", "fconst_2", "dconst_0",
    2112    "dconst_1", "bipush", "sipush", "ldc", "ldc_w", "ldc2_w", "iload",
    2113    "lload", "fload", "dload", "aload", "iload_0", "iload_1", "iload_2",
    2114    "iload_3", "lload_0", "lload_1", "lload_2", "lload_3", "fload_0",
    2115    "fload_1", "fload_2", "fload_3", "dload_0", "dload_1", "dload_2",
    2116    "dload_3", "aload_0", "aload_1", "aload_2", "aload_3", "iaload",
    2117    "laload", "faload", "daload", "aaload", "baload", "caload", "saload",
    2118    "istore", "lstore", "fstore", "dstore", "astore", "istore_0",
    2119    "istore_1", "istore_2", "istore_3", "lstore_0", "lstore_1",
    2120    "lstore_2", "lstore_3", "fstore_0", "fstore_1", "fstore_2",
    2121    "fstore_3", "dstore_0", "dstore_1", "dstore_2", "dstore_3",
    2122    "astore_0", "astore_1", "astore_2", "astore_3", "iastore", "lastore",
    2123    "fastore", "dastore", "aastore", "bastore", "castore", "sastore",
    2124    "pop", "pop2", "dup", "dup_x1", "dup_x2", "dup2", "dup2_x1",
    2125    "dup2_x2", "swap", "iadd", "ladd", "fadd", "dadd", "isub", "lsub",
    2126    "fsub", "dsub", "imul", "lmul", "fmul", "dmul", "idiv", "ldiv",
    2127    "fdiv", "ddiv", "irem", "lrem", "frem", "drem", "ineg", "lneg",
    2128    "fneg", "dneg", "ishl", "lshl", "ishr", "lshr", "iushr", "lushr",
    2129    "iand", "land", "ior", "lor", "ixor", "lxor", "iinc", "i2l", "i2f",
    2130    "i2d", "l2i", "l2f", "l2d", "f2i", "f2l", "f2d", "d2i", "d2l", "d2f",
    2131    "i2b", "i2c", "i2s", "lcmp", "fcmpl", "fcmpg",
    2132    "dcmpl", "dcmpg", "ifeq", "ifne", "iflt", "ifge", "ifgt", "ifle",
    2133    "if_icmpeq", "if_icmpne", "if_icmplt", "if_icmpge", "if_icmpgt",
    2134    "if_icmple", "if_acmpeq", "if_acmpne", "goto", "jsr", "ret",
    2135    "tableswitch", "lookupswitch", "ireturn", "lreturn", "freturn",
    2136    "dreturn", "areturn", "return", "getstatic", "putstatic", "getfield",
    2137    "putfield", "invokevirtual", "invokespecial", "invokestatic",
    2138    "invokeinterface", "invokedynamic", "new", "newarray", "anewarray",
    2139    "arraylength", "athrow", "checkcast", "instanceof", "monitorenter",
    2140    "monitorexit", "wide", "multianewarray", "ifnull", "ifnonnull",
    2141    "goto_w", "jsr_w", "breakpoint", ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2142    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2143    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2144    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2145    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2146    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2147    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2148    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2149    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2150    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2151    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2152    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2153    ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE, ILLEGAL_OPCODE,
    2154    ILLEGAL_OPCODE, "impdep1", "impdep2"
    2155  };
    2156
    2157  /**
    2158   * @since 6.0
    2159   */
    2160  public static final int OPCODE_NAMES_LENGTH = OPCODE_NAMES.length;
    2161
    2162
    2163  /**
    2164   * @since 6.0
    2165   */
    2166  public static String getOpcodeName(final int index) {
    2167      return OPCODE_NAMES[index];
    2168  }
    2169
    2170  /**
    2171   * Number of words consumed on operand stack by instructions.
    2172   * Indexed by opcode.  CONSUME_STACK[FALOAD] = number of words
    2173   * consumed from the stack by a faload instruction.
    2174   */
    2175  private static final int[] CONSUME_STACK = {
    2176    0/*nop*/, 0/*aconst_null*/, 0/*iconst_m1*/, 0/*iconst_0*/, 0/*iconst_1*/,
    2177    0/*iconst_2*/, 0/*iconst_3*/, 0/*iconst_4*/, 0/*iconst_5*/, 0/*lconst_0*/,
    2178    0/*lconst_1*/, 0/*fconst_0*/, 0/*fconst_1*/, 0/*fconst_2*/, 0/*dconst_0*/,
    2179    0/*dconst_1*/, 0/*bipush*/, 0/*sipush*/, 0/*ldc*/, 0/*ldc_w*/, 0/*ldc2_w*/, 0/*iload*/,
    2180    0/*lload*/, 0/*fload*/, 0/*dload*/, 0/*aload*/, 0/*iload_0*/, 0/*iload_1*/, 0/*iload_2*/,
    2181    0/*iload_3*/, 0/*lload_0*/, 0/*lload_1*/, 0/*lload_2*/, 0/*lload_3*/, 0/*fload_0*/,
    2182    0/*fload_1*/, 0/*fload_2*/, 0/*fload_3*/, 0/*dload_0*/, 0/*dload_1*/, 0/*dload_2*/,
    2183    0/*dload_3*/, 0/*aload_0*/, 0/*aload_1*/, 0/*aload_2*/, 0/*aload_3*/, 2/*iaload*/,
    2184    2/*laload*/, 2/*faload*/, 2/*daload*/, 2/*aaload*/, 2/*baload*/, 2/*caload*/, 2/*saload*/,
    2185    1/*istore*/, 2/*lstore*/, 1/*fstore*/, 2/*dstore*/, 1/*astore*/, 1/*istore_0*/,
    2186    1/*istore_1*/, 1/*istore_2*/, 1/*istore_3*/, 2/*lstore_0*/, 2/*lstore_1*/,
    2187    2/*lstore_2*/, 2/*lstore_3*/, 1/*fstore_0*/, 1/*fstore_1*/, 1/*fstore_2*/,
    2188    1/*fstore_3*/, 2/*dstore_0*/, 2/*dstore_1*/, 2/*dstore_2*/, 2/*dstore_3*/,
    2189    1/*astore_0*/, 1/*astore_1*/, 1/*astore_2*/, 1/*astore_3*/, 3/*iastore*/, 4/*lastore*/,
    2190    3/*fastore*/, 4/*dastore*/, 3/*aastore*/, 3/*bastore*/, 3/*castore*/, 3/*sastore*/,
    2191    1/*pop*/, 2/*pop2*/, 1/*dup*/, 2/*dup_x1*/, 3/*dup_x2*/, 2/*dup2*/, 3/*dup2_x1*/,
    2192    4/*dup2_x2*/, 2/*swap*/, 2/*iadd*/, 4/*ladd*/, 2/*fadd*/, 4/*dadd*/, 2/*isub*/, 4/*lsub*/,
    2193    2/*fsub*/, 4/*dsub*/, 2/*imul*/, 4/*lmul*/, 2/*fmul*/, 4/*dmul*/, 2/*idiv*/, 4/*ldiv*/,
    2194    2/*fdiv*/, 4/*ddiv*/, 2/*irem*/, 4/*lrem*/, 2/*frem*/, 4/*drem*/, 1/*ineg*/, 2/*lneg*/,
    2195    1/*fneg*/, 2/*dneg*/, 2/*ishl*/, 3/*lshl*/, 2/*ishr*/, 3/*lshr*/, 2/*iushr*/, 3/*lushr*/,
    2196    2/*iand*/, 4/*land*/, 2/*ior*/, 4/*lor*/, 2/*ixor*/, 4/*lxor*/, 0/*iinc*/,
    2197    1/*i2l*/, 1/*i2f*/, 1/*i2d*/, 2/*l2i*/, 2/*l2f*/, 2/*l2d*/, 1/*f2i*/, 1/*f2l*/,
    2198    1/*f2d*/, 2/*d2i*/, 2/*d2l*/, 2/*d2f*/, 1/*i2b*/, 1/*i2c*/, 1/*i2s*/,
    2199    4/*lcmp*/, 2/*fcmpl*/, 2/*fcmpg*/, 4/*dcmpl*/, 4/*dcmpg*/, 1/*ifeq*/, 1/*ifne*/,
    2200    1/*iflt*/, 1/*ifge*/, 1/*ifgt*/, 1/*ifle*/, 2/*if_icmpeq*/, 2/*if_icmpne*/, 2/*if_icmplt*/,
    2201    2 /*if_icmpge*/, 2/*if_icmpgt*/, 2/*if_icmple*/, 2/*if_acmpeq*/, 2/*if_acmpne*/,
    2202    0/*goto*/, 0/*jsr*/, 0/*ret*/, 1/*tableswitch*/, 1/*lookupswitch*/, 1/*ireturn*/,
    2203    2/*lreturn*/, 1/*freturn*/, 2/*dreturn*/, 1/*areturn*/, 0/*return*/, 0/*getstatic*/,
    2204    UNPREDICTABLE/*putstatic*/, 1/*getfield*/, UNPREDICTABLE/*putfield*/,
    2205    UNPREDICTABLE/*invokevirtual*/, UNPREDICTABLE/*invokespecial*/,
    2206    UNPREDICTABLE/*invokestatic*/,
    2207    UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 0/*new*/, 1/*newarray*/, 1/*anewarray*/,
    2208    1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 1/*monitorenter*/,
    2209    1/*monitorexit*/, 0/*wide*/, UNPREDICTABLE/*multianewarray*/, 1/*ifnull*/, 1/*ifnonnull*/,
    2210    0/*goto_w*/, 0/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
    2211    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2212    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2213    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2214    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2215    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2216    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2217    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2218    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2219    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2220    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2221    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2222    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2223    UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
    2224  };
    2225
    2226  /**
    2227   *
    2228   * @param index
    2229   * @return Number of words consumed on operand stack
    2230   * @since 6.0
    2231   */
    2232  public static int getConsumeStack(final int index) {
    2233      return CONSUME_STACK[index];
    2234  }
    2235
    2236
    2237  /**
    2238   * Number of words produced onto operand stack by instructions.
    2239   * Indexed by opcode.  CONSUME_STACK[DALOAD] = number of words
    2240   * consumed from the stack by a daload instruction.
    2241   */
    2242  private static final int[] PRODUCE_STACK = {
    2243    0/*nop*/, 1/*aconst_null*/, 1/*iconst_m1*/, 1/*iconst_0*/, 1/*iconst_1*/,
    2244    1/*iconst_2*/, 1/*iconst_3*/, 1/*iconst_4*/, 1/*iconst_5*/, 2/*lconst_0*/,
    2245    2/*lconst_1*/, 1/*fconst_0*/, 1/*fconst_1*/, 1/*fconst_2*/, 2/*dconst_0*/,
    2246    2/*dconst_1*/, 1/*bipush*/, 1/*sipush*/, 1/*ldc*/, 1/*ldc_w*/, 2/*ldc2_w*/, 1/*iload*/,
    2247    2/*lload*/, 1/*fload*/, 2/*dload*/, 1/*aload*/, 1/*iload_0*/, 1/*iload_1*/, 1/*iload_2*/,
    2248    1/*iload_3*/, 2/*lload_0*/, 2/*lload_1*/, 2/*lload_2*/, 2/*lload_3*/, 1/*fload_0*/,
    2249    1/*fload_1*/, 1/*fload_2*/, 1/*fload_3*/, 2/*dload_0*/, 2/*dload_1*/, 2/*dload_2*/,
    2250    2/*dload_3*/, 1/*aload_0*/, 1/*aload_1*/, 1/*aload_2*/, 1/*aload_3*/, 1/*iaload*/,
    2251    2/*laload*/, 1/*faload*/, 2/*daload*/, 1/*aaload*/, 1/*baload*/, 1/*caload*/, 1/*saload*/,
    2252    0/*istore*/, 0/*lstore*/, 0/*fstore*/, 0/*dstore*/, 0/*astore*/, 0/*istore_0*/,
    2253    0/*istore_1*/, 0/*istore_2*/, 0/*istore_3*/, 0/*lstore_0*/, 0/*lstore_1*/,
    2254    0/*lstore_2*/, 0/*lstore_3*/, 0/*fstore_0*/, 0/*fstore_1*/, 0/*fstore_2*/,
    2255    0/*fstore_3*/, 0/*dstore_0*/, 0/*dstore_1*/, 0/*dstore_2*/, 0/*dstore_3*/,
    2256    0/*astore_0*/, 0/*astore_1*/, 0/*astore_2*/, 0/*astore_3*/, 0/*iastore*/, 0/*lastore*/,
    2257    0/*fastore*/, 0/*dastore*/, 0/*aastore*/, 0/*bastore*/, 0/*castore*/, 0/*sastore*/,
    2258    0/*pop*/, 0/*pop2*/, 2/*dup*/, 3/*dup_x1*/, 4/*dup_x2*/, 4/*dup2*/, 5/*dup2_x1*/,
    2259    6/*dup2_x2*/, 2/*swap*/, 1/*iadd*/, 2/*ladd*/, 1/*fadd*/, 2/*dadd*/, 1/*isub*/, 2/*lsub*/,
    2260    1/*fsub*/, 2/*dsub*/, 1/*imul*/, 2/*lmul*/, 1/*fmul*/, 2/*dmul*/, 1/*idiv*/, 2/*ldiv*/,
    2261    1/*fdiv*/, 2/*ddiv*/, 1/*irem*/, 2/*lrem*/, 1/*frem*/, 2/*drem*/, 1/*ineg*/, 2/*lneg*/,
    2262    1/*fneg*/, 2/*dneg*/, 1/*ishl*/, 2/*lshl*/, 1/*ishr*/, 2/*lshr*/, 1/*iushr*/, 2/*lushr*/,
    2263    1/*iand*/, 2/*land*/, 1/*ior*/, 2/*lor*/, 1/*ixor*/, 2/*lxor*/,
    2264    0/*iinc*/, 2/*i2l*/, 1/*i2f*/, 2/*i2d*/, 1/*l2i*/, 1/*l2f*/, 2/*l2d*/, 1/*f2i*/,
    2265    2/*f2l*/, 2/*f2d*/, 1/*d2i*/, 2/*d2l*/, 1/*d2f*/,
    2266    1/*i2b*/, 1/*i2c*/, 1/*i2s*/, 1/*lcmp*/, 1/*fcmpl*/, 1/*fcmpg*/,
    2267    1/*dcmpl*/, 1/*dcmpg*/, 0/*ifeq*/, 0/*ifne*/, 0/*iflt*/, 0/*ifge*/, 0/*ifgt*/, 0/*ifle*/,
    2268    0/*if_icmpeq*/, 0/*if_icmpne*/, 0/*if_icmplt*/, 0/*if_icmpge*/, 0/*if_icmpgt*/,
    2269    0/*if_icmple*/, 0/*if_acmpeq*/, 0/*if_acmpne*/, 0/*goto*/, 1/*jsr*/, 0/*ret*/,
    2270    0/*tableswitch*/, 0/*lookupswitch*/, 0/*ireturn*/, 0/*lreturn*/, 0/*freturn*/,
    2271    0/*dreturn*/, 0/*areturn*/, 0/*return*/, UNPREDICTABLE/*getstatic*/, 0/*putstatic*/,
    2272    UNPREDICTABLE/*getfield*/, 0/*putfield*/, UNPREDICTABLE/*invokevirtual*/,
    2273    UNPREDICTABLE/*invokespecial*/, UNPREDICTABLE/*invokestatic*/,
    2274    UNPREDICTABLE/*invokeinterface*/, UNPREDICTABLE/*invokedynamic*/, 1/*new*/, 1/*newarray*/, 1/*anewarray*/,
    2275    1/*arraylength*/, 1/*athrow*/, 1/*checkcast*/, 1/*instanceof*/, 0/*monitorenter*/,
    2276    0/*monitorexit*/, 0/*wide*/, 1/*multianewarray*/, 0/*ifnull*/, 0/*ifnonnull*/,
    2277    0/*goto_w*/, 1/*jsr_w*/, 0/*breakpoint*/, UNDEFINED, UNDEFINED,
    2278    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2279    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2280    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2281    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2282    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2283    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2284    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2285    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2286    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2287    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2288    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2289    UNDEFINED, UNDEFINED, UNDEFINED, UNDEFINED,
    2290    UNDEFINED, UNPREDICTABLE/*impdep1*/, UNPREDICTABLE/*impdep2*/
    2291  };
    2292
    2293  /**
    2294   *
    2295   * @param index
    2296   * @return Number of words produced onto operand stack
    2297   * @since 6.0
    2298   */
    2299  public static int getProduceStack(final int index) {
    2300      return PRODUCE_STACK[index];
    2301  }
    2302
    2303  /** Attributes and their corresponding names.
    2304   */
    2305  public static final byte ATTR_UNKNOWN                                 = -1;
    2306  public static final byte ATTR_SOURCE_FILE                             = 0;
    2307  public static final byte ATTR_CONSTANT_VALUE                          = 1;
    2308  public static final byte ATTR_CODE                                    = 2;
    2309  public static final byte ATTR_EXCEPTIONS                              = 3;
    2310  public static final byte ATTR_LINE_NUMBER_TABLE                       = 4;
    2311  public static final byte ATTR_LOCAL_VARIABLE_TABLE                    = 5;
    2312  public static final byte ATTR_INNER_CLASSES                           = 6;
    2313  public static final byte ATTR_SYNTHETIC                               = 7;
    2314  public static final byte ATTR_DEPRECATED                              = 8;
    2315  public static final byte ATTR_PMG                                     = 9;
    2316  public static final byte ATTR_SIGNATURE                               = 10;
    2317  public static final byte ATTR_STACK_MAP                               = 11;
    2318  public static final byte ATTR_RUNTIME_VISIBLE_ANNOTATIONS             = 12;
    2319  public static final byte ATTR_RUNTIME_INVISIBLE_ANNOTATIONS           = 13;
    2320  public static final byte ATTR_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS   = 14;
    2321  public static final byte ATTR_RUNTIME_INVISIBLE_PARAMETER_ANNOTATIONS = 15;
    2322  public static final byte ATTR_ANNOTATION_DEFAULT                      = 16;
    2323  public static final byte ATTR_LOCAL_VARIABLE_TYPE_TABLE               = 17;
    2324  public static final byte ATTR_ENCLOSING_METHOD                        = 18;
    2325  public static final byte ATTR_STACK_MAP_TABLE                         = 19;
    2326  public static final byte ATTR_BOOTSTRAP_METHODS                       = 20;
    2327  public static final byte ATTR_METHOD_PARAMETERS                       = 21;
    2328  public static final byte ATTR_MODULE                                  = 22;
    2329  public static final byte ATTR_MODULE_PACKAGES                         = 23;
    2330  public static final byte ATTR_MODULE_MAIN_CLASS                       = 24;
    2331  public static final byte ATTR_NEST_HOST                               = 25;
    2332  public static final byte ATTR_NEST_MEMBERS                            = 26;
    2333
    2334  public static final short KNOWN_ATTRIBUTES = 27; // count of attributes
    2335
    2336  private static final String[] ATTRIBUTE_NAMES = {
    2337    "SourceFile", "ConstantValue", "Code", "Exceptions",
    2338    "LineNumberTable", "LocalVariableTable",
    2339    "InnerClasses", "Synthetic", "Deprecated",
    2340    "PMGClass", "Signature", "StackMap",
    2341    "RuntimeVisibleAnnotations", "RuntimeInvisibleAnnotations",
    2342    "RuntimeVisibleParameterAnnotations", "RuntimeInvisibleParameterAnnotations",
    2343    "AnnotationDefault", "LocalVariableTypeTable", "EnclosingMethod", "StackMapTable",
    2344    "BootstrapMethods", "MethodParameters", "Module", "ModulePackages",
    2345    "ModuleMainClass", "NestHost", "NestMembers"
    2346  };
    2347
    2348  /**
    2349   *
    2350   * @param index
    2351   * @return the attribute name
    2352   * @since 6.0
    2353   */
    2354  public static String getAttributeName(final int index) {
    2355      return ATTRIBUTE_NAMES[index];
    2356  }
    2357
    2358  /** Constants used in the StackMap attribute.
    2359   */
    2360  public static final byte ITEM_Bogus      = 0;
    2361  public static final byte ITEM_Integer    = 1;
    2362  public static final byte ITEM_Float      = 2;
    2363  public static final byte ITEM_Double     = 3;
    2364  public static final byte ITEM_Long       = 4;
    2365  public static final byte ITEM_Null       = 5;
    2366  public static final byte ITEM_InitObject = 6;
    2367  public static final byte ITEM_Object     = 7;
    2368  public static final byte ITEM_NewObject  = 8;
    2369
    2370  private static final String[] ITEM_NAMES = {
    2371    "Bogus", "Integer", "Float", "Double", "Long",
    2372    "Null", "InitObject", "Object", "NewObject"
    2373  };
    2374
    2375  /**
    2376   *
    2377   * @param index
    2378   * @return the item name
    2379   * @since 6.0
    2380   */
    2381  public static String getItemName(final int index) {
    2382      return ITEM_NAMES[index];
    2383  }
    2384
    2385  /** Constants used to identify StackMapEntry types.
    2386   *
    2387   * For those types which can specify a range, the
    2388   * constant names the lowest value.
    2389   */
    2390  public static final int SAME_FRAME = 0;
    2391  public static final int SAME_LOCALS_1_STACK_ITEM_FRAME = 64;
    2392  public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_EXTENDED = 247;
    2393  public static final int CHOP_FRAME = 248;
    2394  public static final int SAME_FRAME_EXTENDED = 251;
    2395  public static final int APPEND_FRAME = 252;
    2396  public static final int FULL_FRAME = 255;
    2397
    2398  /** Constants that define the maximum value of
    2399   * those constants which store ranges. */
    2400
    2401  public static final int SAME_FRAME_MAX = 63;
    2402  public static final int SAME_LOCALS_1_STACK_ITEM_FRAME_MAX = 127;
    2403  public static final int CHOP_FRAME_MAX = 250;
    2404  public static final int APPEND_FRAME_MAX = 254;
    2405
    2406
    2407  // Constants defining the behavior of the Method Handles (JVMS �5.4.3.5)
    2408
    2409  public static final byte REF_getField         = 1;
    2410  public static final byte REF_getStatic        = 2;
    2411  public static final byte REF_putField         = 3;
    2412  public static final byte REF_putStatic        = 4;
    2413  public static final byte REF_invokeVirtual    = 5;
    2414  public static final byte REF_invokeStatic     = 6;
    2415  public static final byte REF_invokeSpecial    = 7;
    2416  public static final byte REF_newInvokeSpecial = 8;
    2417  public static final byte REF_invokeInterface  = 9;
    2418
    2419  /**
    2420   * The names of the reference_kinds of a CONSTANT_MethodHandle_info.
    2421   */
    2422  private static final String[] METHODHANDLE_NAMES = {
    2423      "", "getField", "getStatic", "putField", "putStatic", "invokeVirtual",
    2424      "invokeStatic", "invokeSpecial", "newInvokeSpecial", "invokeInterface" };
    2425
    2426  /**
    2427   *
    2428   * @param index
    2429   * @return the method handle name
    2430   * @since 6.0
    2431   */
    2432  public static String getMethodHandleName(final int index) {
    2433      return METHODHANDLE_NAMES[index];
    2434  }
    2435
    2436  private Const() { } // not instantiable
    2437
    2438}